Projektowanie ze stanem: tworzenie narzędzia RAG do wyszukiwania
W poprzedniej lekcji pokazano, jak zbudować bazę wiedzy opartą na wektorach z instrukcji obsługi urządzeń i jak przeszukiwać ją za pomocą osadzeń (embeddings).
Teraz stworzysz własne narzędzie, które opakuje tę logikę wyszukiwania — dzięki temu agent będzie mógł go używać do odpowiadania na pytania dotyczące urządzeń.
Narzędzie, które implementujesz, będzie podklasą klasy bazowej Tool i będzie przyjmować jedno wejście: pytanie dotyczące obsługi urządzenia.
Masz już dostęp do:
- Zmiennej
vector_store, która zawiera gotowy indeks FAISS - Fragmentów dokumentów z treścią instrukcji obsługi urządzeń, osadzonych i gotowych do przeszukiwania
Twoim zadaniem jest zaimplementowanie struktury i logiki narzędzia, które udostępni tę bazę wiedzy agentowi.
To ćwiczenie jest częścią kursu
Agenty AI z Hugging Face smolagents
Instrukcje do ćwiczenia
- Przyjmij parametr
vector_storew metodzie__init__(). - Dodaj
queryjako parametr metodyforward(). - Użyj
self.k, aby określić, ile odpowiednich dokumentów ma zostać zwróconych przez wyszukiwanie podobieństwa.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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."