
AI Agent 实战教程 05:RAG 如何增强 Agent

RAG 是 AI Agent 获得外部知识的重要方式。没有 RAG,Agent 主要依赖模型参数和当前上下文;有了 RAG,Agent 可以查询文档、知识库、数据库和业务资料,从而回答更具体、更实时、更可信的问题。
对于 Agent 来说,RAG 通常不是一个独立应用,而是一个工具。当 Agent 判断自己缺少知识时,就调用检索工具,把相关内容取回,再基于这些内容继续推理或执行任务。
RAG 的基本流程
RAG 通常包含四个核心步骤。
第一,文档处理。系统把文档、网页、笔记或数据库内容切分成较小片段,也就是 chunks。切分太大,检索不精准;切分太小,语义可能不完整。
第二,向量化。使用 Embedding 模型把每个 chunk 转成向量。向量可以表达文本语义,使系统能根据相似度查找相关内容。
第三,检索。用户提出问题后,系统把问题也转成向量,在向量数据库中找出最相关的 chunks。
第四,生成。系统把检索结果放入模型上下文,让模型基于这些资料生成回答。
Agent 为什么需要 RAG
Agent 经常要处理具体业务任务,而这些任务需要外部知识。例如:
- 根据公司内部文档回答问题;
- 根据 API 文档生成代码;
- 阅读会议纪要并提取待办;
- 根据产品资料生成教程;
- 查询历史决策记录;
- 从知识库中找出相关案例。
这些知识通常不在模型参数中,即使模型知道一些通用知识,也无法保证和当前业务一致。RAG 可以让 Agent 使用可控知识源。
Embedding 的作用
Embedding 是 RAG 的基础。它把文本转成向量,使“语义相近”的内容在向量空间里距离更近。
例如用户问“如何让 Agent 调用外部系统”,即使文档里写的是“Tool Calling 用于连接函数和 API”,向量检索也可能找到相关内容。
但 Embedding 不是万能的。它可能找出语义相似但事实不匹配的内容,也可能漏掉关键词强相关的内容。因此生产系统常结合关键词搜索、过滤条件和 rerank。
上下文注入的技巧
检索到内容后,不能简单全部塞给模型。上下文窗口有限,内容越多,模型越容易分散注意力。
常见优化包括:
- 只保留 Top K 结果;
- 对结果去重;
- 使用 rerank 重新排序;
- 保留来源信息;
- 对长内容做摘要;
- 按任务类型选择不同检索策略。
对于需要可信答案的场景,最好要求模型基于检索内容回答,并在必要时给出引用。
RAG 与 Agent 的结合方式
最简单方式是把 RAG 封装成一个工具,例如 「search_knowledge_base(query)」。Agent 在需要知识时调用它。
更复杂的方式是让 Agent 能选择不同知识源。例如产品文档、代码仓库、历史工单、会议纪要分别对应不同检索工具。Agent 先判断问题属于哪个领域,再选择相应工具。
还可以让 Agent 在检索结果不足时自动扩展关键词、调整过滤条件,或者向用户澄清问题。
常见问题
第一个问题是检索不到。可能是文档没入库、切分不合理、Embedding 模型不适合、查询改写不充分。
第二个问题是检索到了但用不好。模型可能忽略上下文,也可能把不同来源混在一起,产生不准确结论。
第三个问题是知识过期。文档更新后,如果索引不更新,Agent 会使用旧知识。
第四个问题是权限隔离。不同用户能访问的知识库不同,RAG 必须遵守权限边界。
小结
RAG 让 Agent 拥有外部知识,但可靠性来自工程细节:文档切分、Embedding、向量数据库、rerank、上下文组织、引用约束和权限控制。对于企业级 Agent,RAG 往往是从演示走向可用的关键一步。