Stavovost záměrně: vytvoř nástroj pro RAG vyhledávání
V předchozí lekci jsi viděl/a, jak lze postavit znalostní bázi manuálů k domácím spotřebičům a prohledávat ji pomocí embeddingů.
Teď vytvoříš vlastní nástroj, který tuto vyhledávací logiku zabalí – agent ho pak může použít k odpovídání na otázky o spotřebičích.
Nástroj, který budeš psát, zdědí základní třídu Tool a bude mít jeden vstup: otázku týkající se obsluhy spotřebiče.
Máš k dispozici:
- Proměnnou
vector_store, která obsahuje předpřipravený FAISS index - Části dokumentů s obsahem manuálů ke spotřebičům, převedené na embeddingy a připravené k vyhledávání
Tvým úkolem je implementovat strukturu a logiku nástroje, který tuto znalostní bázi zpřístupní agentovi.
Toto cvičení je součástí kurzu
AI Agents with Hugging Face smolagents
Pokyny k cvičení
- V metodě
__init__()přijmi parametrvector_store. - Přidej
queryjako parametr metodyforward(). - Pomocí
self.knastav, kolik relevantních dokumentů má vyhledávání podobnosti vrátit.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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."