Skip to content

RAG 与工具调用

大模型本身不适合承担所有事实和动作。知识会更新,系统状态会变化,很多任务还需要查询数据库、调用接口或写入业务系统。RAG 和工具调用就是把模型接到外部世界的两类核心方式。

RAG 解决什么

RAG(Retrieval-Augmented Generation)把外部资料检索出来,再放进模型上下文,让模型基于资料回答。

它适合:

  • 企业知识库问答。
  • 技术文档助手。
  • 法规、制度、产品说明等需要引用依据的场景。
  • 知识更新频繁,不适合频繁微调的场景。

RAG 不适合:

  • 需要实时写入系统的动作。
  • 检索不到资料却强行回答的场景。
  • 资料本身质量很差或权限边界不清的场景。

RAG 链路

  1. 文档清洗和切块。
  2. 生成向量并建立索引。
  3. 用户提问后检索相关片段。
  4. 对片段排序、过滤、压缩。
  5. 把片段放入上下文。
  6. 模型基于片段生成回答。
  7. 返回答案和来源。

这条链路里,检索质量往往比提示词更影响最终答案。

最小可用 RAG 怎么做

第一版 RAG 不要一开始追求复杂平台,而要先把“资料能找对、答案有依据、没依据能拒答”做稳。

步骤要做什么验收标准
资料整理选 10 到 50 篇高质量文档,去掉重复页眉、无关目录和过期资料每篇文档有标题、来源和更新时间
切块按标题和段落切分,保留章节信息单个片段语义完整,不把表格和说明切散
建索引先建立向量索引;专有名词多时加入关键词检索输入关键问题时能召回正确章节
组上下文只放最相关片段,并标上来源编号模型能看到回答所需证据
生成答案要求只基于资料回答,缺资料时拒答答案带来源,不强行编造
建评估集准备明确命中、需要综合、无答案三类问题每次调整后能回归比较

一个常见误区是把所有精力放在 Prompt 上。Prompt 可以约束模型表达,但不能弥补资料质量差、切块混乱、检索召回错误。RAG 的调优顺序通常是:先修资料,再修切块和检索,然后再调 Prompt。

切块、召回和重排

RAG 的质量主要卡在三个环节。

环节作用常见错误
切块决定资料以什么粒度进入索引按固定长度硬切,导致语义断裂
召回从索引中找候选片段只用向量,漏掉错误码、配置项、专有名词
重排从候选片段中挑最相关的内容把相似但不能回答问题的片段放到前面

调试时要看每一步的中间结果。用户问一个问题后,先检查召回片段是否包含正确答案;如果召回没有命中,问题在切块、索引或检索;如果召回命中了但答案仍然错,问题可能在重排、上下文组织或模型约束。

RAG 常见问题

问题原因处理方式
答非所问检索召回错误优化切块、查询改写、混合检索
回答漏关键点片段太分散或排序差重排、摘要、合并上下文
引用不存在模型没有被约束基于资料回答要求引用来源,缺资料时拒答
权限泄露索引没有按用户权限过滤检索阶段做权限裁剪
成本高上下文塞太多过滤、压缩、分层检索

工具调用解决什么

工具调用让模型通过受控接口获取实时信息或执行动作。

适合:

  • 查询订单状态。
  • 计算价格。
  • 读取文件。
  • 创建工单。
  • 调用搜索、数据库、部署平台。

工具调用的关键是:模型提出意图,工具层负责校验和执行。不能把模型输出直接当作可信指令。

RAG 与工具调用的区别

维度RAG工具调用
主要目标提供知识依据获取状态或执行动作
输入用户问题模型生成的工具参数
输出文档片段结构化结果或执行状态
风险检索错、引用错、权限泄露参数错、越权、误写入
典型控制权限过滤、来源引用参数校验、审计、人工确认

与 Agent、MCP 的关系

Agent 常把 RAG 和工具调用串成多步任务。MCP 可以作为工具连接协议,把文件、数据库、API 统一暴露给客户端。

例如代码问答:

  1. RAG 检索相关设计文档。
  2. 工具读取源码。
  3. 模型解释问题。
  4. Agent 运行测试验证。

总结

RAG 把外部知识带进上下文,工具调用把模型意图接到外部动作。RAG 关注资料是否找对,工具调用关注动作是否安全可控。真实应用往往两者结合,并通过权限、审计、引用和人工确认建立边界。

别急,先让缓存热一下。