Stateful by Design: bouw een RAG-zoektool
In de vorige les zag je hoe je een vectorgebaseerde kennisbank van handleidingen kunt opbouwen en doorzoeken met embeddings.
Nu ga je een aangepaste tool bouwen die deze zoeklogica verpakt, zodat een agent die kan gebruiken om vragen over apparaten te beantwoorden.
De tool die je schrijft erft van de Tool-basisklasse en stelt één input bloot: een vraag over het gebruik van een apparaat.
Je hebt al toegang tot:
- Een variabele
vector_store, die je vooraf gebouwde FAISS-index bevat - Documentfragmenten met handleidingstekst, ge-embed en klaar om te doorzoeken
Jouw taak is om de structuur en logica van de tool te implementeren die deze kennisbank toegankelijk maakt voor een agent.
Deze oefening maakt deel uit van de cursus
AI-agents met Hugging Face smolagents
Oefeninstructies
- Accepteer een parameter
vector_storein de__init__()-methode. - Voeg
querytoe als parameter van deforward()-methode. - Gebruik
self.kom in te stellen hoeveel relevante documenten moeten worden teruggegeven door de similarity search.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
class ApplianceSearchTool(Tool):
name = "appliance_manual_search"
description = "Search appliance manuals for maintenance and usage information"
inputs = {"query": {"type": "string", "description": "Question about appliance operation"}}
output_type = "string"
# Pass the vector store into the constructor
def __init__(self, ____, k=3):
super().__init__()
self.vector_store = vector_store
self.k = k
# Accept the query string as input to the forward method
def forward(self, ____):
# Use self.k here to specify how many chunks to return
docs = self.vector_store.similarity_search(query, k=____)
return "\n\n".join(doc.page_content for doc in docs) or "No relevant manual sections found."