开始使用免费开始使用

为状态而生:构建 RAG 搜索工具

在上一节课中,您已经看到如何使用嵌入向量(embedding — 向量表示)来构建并搜索一个基于向量的家电手册知识库。

现在,您将构建一个封装该搜索逻辑的自定义工具,便于代理使用它来回答与家电相关的问题。

您要编写的工具将继承 Tool 基类,并只暴露一个输入:关于家电操作的问题。

您已经可以使用:

  • 一个名为 vector_store 的变量,其中包含预先构建好的 FAISS 索引
  • 按段拆分的家电手册文档内容,已完成嵌入,可直接用于搜索

您的任务是实现该工具的结构与逻辑,使代理可以访问并利用此知识库。

本练习是课程的一部分

使用 Hugging Face smolagents 的 AI Agents

查看课程

练习说明

  • __init__() 方法中接收一个 vector_store 参数。
  • forward() 方法中添加参数 query
  • 使用 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."
编辑并运行代码