Thiết kế có trạng thái: Xây dựng công cụ tìm kiếm RAG
Trong bài trước, bạn đã thấy cách xây dựng và tìm kiếm một cơ sở tri thức dựa trên vector cho các sổ tay thiết bị bằng embeddings.
Giờ đây, bạn sẽ xây dựng một công cụ tùy chỉnh bao bọc logic tìm kiếm này, để một agent có thể dùng nó trả lời các câu hỏi liên quan đến thiết bị.
Công cụ bạn viết sẽ kế thừa lớp cơ sở Tool và chỉ nhận một đầu vào: một câu hỏi về cách vận hành thiết bị
Bạn đã có sẵn:
- Một biến tên
vector_store, chứa FAISS index đã dựng sẵn - Các đoạn tài liệu từ sổ tay thiết bị, đã được embed và sẵn sàng cho tìm kiếm
Nhiệm vụ của bạn là triển khai cấu trúc và logic của công cụ giúp agent truy cập cơ sở tri thức này.
Bài tập này là một phần của khóa học
AI Agents với Hugging Face smolagents
Hướng dẫn bài tập
- Nhận tham số
vector_storetrong phương thức__init__(). - Thêm
querylàm tham số cho phương thứcforward(). - Dùng
self.kđể đặt số tài liệu liên quan cần trả về từ similarity search.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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."