您的位置:首页 >如何在 LangChain ReAct Agent 中集成向量嵌入检索能力
发布于2026-05-03 阅读(0)
扫一扫,手机访问
本文详解如何将 pinecone 等向量数据库的检索能力作为工具注入 langchain 结构化聊天 agent,使 react 智能体既能自主规划调用工具,又能实时获取外部知识库中的语义相关上下文。

想让你的LangChain智能体变得更“博学”吗?一个常见的挑战是:如何让一个能自主规划、调用工具的ReAct Agent,同时具备实时查询外部知识库的能力。好消息是,这并不需要复杂的架构改造,核心思路其实相当直接。
关键在于理解LangChain的设计哲学。像create_structured_chat_agent这类ReAct Agent,其本身并不直接接收检索器或向量索引。但它的强大之处在于,支持接入任何符合LangChain Tool协议的工具。这意味着,你只需要把向量检索器“包装”成一个标准工具,就能让它无缝融入Agent的决策与执行流程。这样一来,智能体就能在推理过程中,自主决定何时去知识库“查资料”了。
整个实现路径非常清晰:利用create_retriever_tool函数,将vector_store.as_retriever()转换成一个具备名称、描述和可调用接口的Tool对象,然后把它丢进Agent的工具列表里。剩下的事情,Agent会自己搞定。
下面,我们就来拆解具体的实现步骤。
首先,准备好你的大语言模型和已经构建好的向量检索器。这里以OpenAI和Pinecone为例。
from langchain_openai import ChatOpenAI
from langchain_community.vectorstores import Pinecone
llm = ChatOpenAI(temperature=0.1, model_name="gpt-4")
# 假设 vector_store 已连接 Pinecone 索引
retriever = vector_store.as_retriever(
search_type="similarity",
search_kwargs={"k": 3} # 检索 top-3 相关文档
)
接下来是最关键的一步:把检索器“变身”为Agent能识别的工具。这里要用到create_retriever_tool。
from langchain.tools.retriever import create_retriever_tool
retriever_tool = create_retriever_tool(
retriever=retriever,
name="knowledge_base_search",
description=(
"用于查询公司内部知识库的语义检索工具。"
"当用户问题涉及产品文档、API 说明、历史案例或领域专有概念时,应使用此工具。"
"输入应为简洁、明确的自然语言查询词(无需添加前缀如'请检索...')。"
)
)
⚠️ 这里有几点必须注意:
- 工具名称(name)必须是一个合法的标识符(只包含字母、数字、下划线),并且不能和其他工具重名。
- 工具描述(description)至关重要,它直接决定了Agent能否正确理解何时该调用这个工具。务必清晰地说明适用场景和输入格式。
- 如果需要从多个来源检索(比如同时查文档库和数据库),完全可以创建多个不同的
retriever_tool,然后一起加入到工具列表中。
工具封装好后,构建Agent就水到渠成了。从Hub拉取预设的提示模板,传入工具列表,创建执行器,然后就可以提问了。
from langchain import hub
from langchain.agents import create_structured_chat_agent, AgentExecutor
prompt = hub.pull("hwchase17/structured-chat-agent")
tools = [retriever_tool] # ✅ 关键:此处传入封装好的检索工具
agent = create_structured_chat_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
result = agent_executor.invoke({
"input": "LangChain v0.1 中 DocumentLoader 的异步加载方式有哪些?",
"chat_history": chat_history
})
print(result["output"])
运行后,你将看到Agent自动执行以下完美协作:
1. 分析问题语义 → 判断当前问题需要查阅知识库。
2. 调用检索工具 → 自动选择并调用knowledge_base_search工具,并将原始问题作为查询词传入。
3. 接收检索结果 → 获取返回的相关Document列表(包含内容和元数据)。
4. 整合信息并生成回答 → 将检索到的文档内容作为上下文,辅助LLM给出最终准确、有据的回答。
为了让这个方案更强大,这里有几个进阶优化思路:
RunnablePassthrough或自定义Tool,在检索前对用户查询进行预处理,比如重写或同义词扩展,这能有效提升召回率。通过这套方案,你不再需要在功能单一的问答链(ConversationalRetrievalChain)和“手无寸铁”的ReAct Agent之间艰难抉择。现在,你的Agent成为了一个既懂检索、又会推理、还能行动的统一智能接口,能力边界得到了实质性的拓展。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9