Skip to content

RAG 与工具调用

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

RAG 解决什么

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

它适合:

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

RAG 不适合:

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

RAG 链路

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

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

RAG 常见问题

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

工具调用解决什么

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

适合:

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

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

RAG 与工具调用的区别

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

与 Agent、MCP 的关系

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

例如代码问答:

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

总结

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

别急,先让缓存热一下。