Skip to content

RAG 集成与生态

retriever 作工具、LangSmith 可观测、LangServe 部署。

Updated View as Markdown
For humans

RAG 集成与生态

RAG 分类讲了检索原理,本篇讲 LangChain 怎么把 RAG 接进 agent:retriever 作为工具、生态配套怎么用

retriever 作工具

RAG 和 agent 的组合方式:

方式 做法 适用
直接检索 问题先检索再让模型回答 固定流程(传统 RAG)
retriever 作工具 检索封装成工具,agent 自己决定何时检索 复杂任务,agent 判断需要
混合 固定检索 + 工具兜底 生产常见
from langchain.tools import tool

@tool
def search_docs(query: str) -> str:
    """从知识库检索相关资料。当问题涉及产品文档时使用。"""
    docs = retriever.invoke(query)
    return "\n".join(d.text for d in docs[:5])

retriever 作工具的好处:agent 自主决定检索时机和次数(先规划再查、不够再查),查询词可以由 agent 改写(比原始问题更精准)。代价:多一轮模型调用、行为不可完全预测。

检索工具的描述要点

  • 说清知识库覆盖范围(“公司内部产品文档”),模型才知道何时用
  • 说明返回结构(top-k 片段),模型才知道怎么用
  • 查询改写交给模型:工具入参是 query 字符串,模型会生成合适的检索词

LangSmith:可观测与评估

能力 用途
追踪(Tracing) 每次调用的完整链路:检索了什么、模型怎么决策、工具结果
数据集与评估 构建评测集,回归测试 RAG 质量
在线监控 生产延迟、token 成本、错误率

LangSmith 追踪对 RAG+agent 特别有价值:能看到“检索结果好不好”和“模型有没有正确使用”,这两步是 RAG 质量的关键(见 RAG 评估篇的 RAGAS 指标)。

LangServe 与部署

  • LangServe:把 agent 包装成 REST API(serve 命令,自动 OpenAPI 文档)
  • 支持流式响应(SSE)、后台任务
  • 现代路径:LangSmith Deployments 逐步取代自建 LangServe,提供托管的 agent 服务(自动处理持久化基础设施,见 LangGraph 持久化篇)
  • 部署注意:RAG 的向量库连接、embedding 模型、检索参数都要在服务端配置

面试追问

  1. RAG 怎么和 agent 结合? 把 retriever 封装成工具,agent 自主决定何时检索。比固定检索灵活,比纯工具更贴近知识
  2. retriever 作工具的好处? 检索时机和次数由 agent 决定,查询词可改写。代价是多轮调用、行为不确定
  3. LangSmith 对 RAG 的价值? 追踪检索和模型使用链路,数据集评估回归。RAG 质量 = 检索质量 + 使用质量
  4. LangServe 是什么? agent 的 REST 部署层,自动文档和流式。新项目看 LangSmith Deployments
  5. 检索工具的描述怎么写? 说清覆盖范围、返回结构,让模型知道何时用、怎么用
Navigation

Type to search…

↑↓ navigate↵ selectEsc close