Становість за задумом: створіть інструмент пошуку RAG
У попередньому уроці ви побачили, як можна побудувати й шукати базу знань із посібників для побутової техніки на основі векторів, використовуючи вкладення (embeddings — векторні представлення).
Тепер ви створите спеціальний інструмент, що інкапсулює цю логіку пошуку, щоб агент міг використовувати його для відповідей на запитання щодо роботи техніки.
Інструмент, який ви напишете, буде підкласом базового класу Tool і матиме один вхід: запитання про експлуатацію техніки.
У вас уже є доступ до:
- Змінної
vector_store, що містить попередньо збудований індекс FAISS - Фрагментів документів із вмістом посібників, перетворених на вкладення та готових до пошуку
Ваше завдання — реалізувати структуру та логіку інструменту, який зробить цю базу знань доступною для агента.
Ця вправа є частиною курсу
AI-агенти з Hugging Face smolagents
Інструкції до вправи
- Прийміть параметр
vector_storeу методі__init__(). - Додайте
queryяк параметр методуforward(). - Використайте
self.k, щоб визначити, скільки релевантних документів слід повернути з пошуку за схожістю.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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."