create_retriever_tool:快速把向量库检索器(Retriever)包装成 Agent 可用的标准 Tool 整段代码逐行完整解读python运行#from langchain.tools.retriever import create_retriever_tool from langchain_core.tools import create_retriever_tool retriever_tool create_retriever_tool( retriever, langsmith_search, Search for information about LangSmith. For any questions about LangSmith, you must use this tool! )1. 第一行注释python运行#from langchain.tools.retriever import create_retriever_tool被注释掉的旧版导入路径LangChain 大版本重构前函数放在langchain.tools.retriever新版本迁移到langchain_core.tools所以失效注释。2. 导入语句最新标准写法python运行from langchain_core.tools import create_retriever_toolcreate_retriever_tool快速把向量库检索器Retriever包装成 Agent 可用的标准 Tool。3. 函数参数拆解python运行retriever_tool create_retriever_tool( retriever, # 参数1检索器对象 langsmith_search, # 参数2工具名称 name Search for information about LangSmith. For any questions about LangSmith, you must use this tool! # 参数3工具描述 description )参数 1retriever就是向量数据库生成的检索器示例python运行# 举例你前面RAG代码里一般会写 vectorstore Chroma.from_documents(docs, embeddings) retriever vectorstore.as_retriever()作用当工具被调用时自动执行retriever.invoke(query)去向量库搜索相关文档。参数 2工具名称namelangsmith_search规则英文、不能有空格唯一标识作用Agent 依靠这个名字区分不同工具建议改成贴合你项目的名字例如paper_kb_search参数 3工具描述description整条代码最重要的部分直接决定 Agent 会不会调用这个工具大模型 LLM 读取这段文字自主判断用户当前问题是否需要调用该工具。示例原文含义用于查询 LangSmith 相关信息。只要问题涉及 LangSmith必须调用此工具。⚠️ 实操修改建议适配你的论文 RAG 场景python运行description 查询本地知识库、arXiv论文文档资料。 当用户询问大模型、RAG相关论文、技术资料时优先使用本工具检索。 4. 返回值retriever_tool类型BaseToolLangChain 标准工具对象可以直接放进 Agent 的tools [retriever_tool]列表。底层内部原理帮你看透它封装了什么create_retriever_tool等价于帮你自动实现下面逻辑python运行from langchain_core.tools import tool tool def langsmith_search(query: str) - str: Search for information about LangSmith. For any questions about LangSmith, you must use this tool! docs retriever.invoke(query) # 把检索到的文档page_content拼接成字符串返回给LLM return \n\n.join([doc.page_content for doc in docs])它本质是语法糖省去你手动写tool装饰器。完整可运行上下文样板直接粘贴进 Notebookpython运行from langchain_core.tools import create_retriever_tool from langchain_community.vectorstores import Chroma from langchain_openai import OpenAIEmbeddings # 1. 构建向量库与检索器 embeddings OpenAIEmbeddings(modeltext-embedding-3-small) vectorstore Chroma(persist_directory./chroma_db, embedding_functionembeddings) retriever vectorstore.as_retriever(search_kwargs{k: 4}) # 2. 生成检索工具 retriever_tool create_retriever_tool( retriever, paper_kb_search, 查询本地arXiv论文知识库。凡是涉及RAG、大模型相关论文、技术细节必须调用该工具。 ) # 3. 放入Agent工具列表 tools [retriever_tool]高频踩坑提醒description 不能写太简短模糊模型不知道什么时候调用工具出现 “有知识库却不去检索”工具 name 不要中文避免函数调用解析出错该工具默认用简单拼接文档文本底层就是 Stuff 模式如果文档很长、超出上下文窗口不能单纯依赖这个工具需要自行改写工具增加摘要逻辑。拓展区分两条 RAG 路线普通 RAG 链路create_retrieval_chain→ 固定流程检索→传入 LLM没有自主决策Agent Retriever Tool你当前代码LLM 自主判断「要不要检索、什么时候检索、检索几次」灵活度更高适合复杂多问题场景。