Bắt đầu ngayBắt đầu miễn phí

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

Xem khóa học

Hướng dẫn bài tập

  • Nhận tham số vector_store trong phương thức __init__().
  • Thêm query làm tham số cho phương thức forward().
  • 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."
Chỉnh sửa và Chạy Mã