- RAG 让模型在这一次回答前先拿到外部资料;资料没有被永久写进模型。
- 一份制度会依次经过准备、切分、找回、组装,才成为模型眼前的证据。
- 答案流畅不代表证据完整:旧版本、断开的条件和漏掉的片段都会改变结论。
- 核对 RAG 回答时,沿着来源、版本、引用、适用条件和证据边界回看。
公司内部的 AI 回答:“因公前往机场的打车费用通常可以报销。”读起来很顺,但报销人下一步仍会卡住:它看的是哪一版手册?单程超过 200 元怎么办?电子发票是不是必需?
如果系统没有在回答前把这些条款找出来,模型只能凭已有知识和当前对话补全一句看似合理的话。RAG(Retrieval-Augmented Generation,检索增强生成) 就在这里加入一条资料路径:
先从外部资料中找出相关段落,再把段落和问题一起交给模型。模型根据拿到的资料段落和用户的问题,再组织语言来生成回答来回复给用户。
| 对比维度 | 没有 RAG | 使用 RAG |
|---|---|---|
| 知识与对话延续 | 主要依赖模型已有知识和当前对话 | 回答前增加一次外部资料检索 |
| 答案可信度 | 难以确认答案依据 | 可以附上来源供人核对 |
| 资料时效性 | 无法自动知道私有或新资料 | 可以读取有权限访问的当前资料 |
RAG 改变的是本次输入,不是模型参数。手册没有被永久写进模型;这一次回答结束后,模型也不会因此自动记住它。资料是否最新、关键段落是否被找到、模型是否读全条件,仍要逐步检查。
一、资料怎样进入一次回答
“检索增强生成”这个名称对应三个连续动作:
| 组成 | 作用 |
|---|---|
| Retrieval,检索 | 从资料库中寻找候选证据 |
| Augmented,增强 | 把证据加入当前上下文 |
| Generation,生成 | 模型依据问题和证据组织答案 |
2020 年的论文 Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 用“参数化知识”和外部的“非参数化记忆”描述这种组合。今天的实现可以不同,但这条路径不变:先找资料,再带着资料生成。
先切换下面两种回答方式。问题不变,变化的只有模型这一轮能看到的资料。
同一个问题
资料与回答
通常情况下,因公前往机场的打车费用可以报销。
听起来合理,但没有核对你所在公司的最新规则。
可以报销。若单程超过 200 元,还需附上行程说明。
答案中的两个判断,都能在当前资料中找到依据。
二、从手册到答案
| 阶段 | 输入 | 输出 | 主要风险 |
|---|---|---|---|
| 资料准备 | 原始文件 | 可用文档 | 过期、缺失、权限错误 |
| 文档切分 | 长文档 | 文本片段 | 完整规则被拆断 |
| 检索与重排 | 用户问题、片段库 | 候选证据 | 正确片段未命中 |
| 上下文组装 | 候选证据、问题 | 模型输入 | 噪声、冲突、版本混杂 |
| 答案生成 | 组装后的上下文 | 答案与引用 | 误读或超出证据 |
RAG FLOW
RAG 流程
资料准备
系统先把差旅手册、票据规范等文件放入知识库。同一条规则若同时留下 2024 版和 2026 版,后面的检索可能把旧条款也找出来;一份没同步的手册,则从一开始就不在候选范围内。资料进入链路的这一刻,已经决定了模型之后有没有机会看到正确证据。
每份文件还应带着文件名、版本、日期、页码、适用部门、原文链接和访问权限等 Metadata(元数据)。检索时,系统可以据此排除失效版本或无权访问的文件;回答后,人也能顺着页码回到原文。
文档切分
一本 80 页的手册不能每次原封不动塞进模型。系统会把它拆成较小的 Chunk(文本片段);问题到来时,只取少量可能相关的片段。切分决定了“可以报销”和“超过 200 元需附行程说明”会不会还挨在一起。
CHUNKING LAB
文档切分
市内交通按实际费用报销。
机场往返交通可以报销。
单程超过 200 元需附行程说明。
酒店需选择协议价房型。
早餐已含在房费中时不得重复申领。
机场往返交通可以报销。
单程超过 200 元
需附行程说明。
市内交通按实际费用报销。
机场往返交通可以报销。
机场往返交通可以报销。
单程超过 200 元需附行程说明。
切分需要在“聚焦”和“完整”之间取舍:
| 片段 | 优点 | 风险 |
|---|---|---|
| 较大 | 保留完整上下文 | 混入更多无关内容 |
| 较小 | 主题更集中 | 条件与结论可能分离 |
| 保留重叠或按结构切分 | 减少规则被截断 | 增加重复内容 |
例如,“机场往返交通可以报销”和“单程超过 200 元需附行程说明”应尽量留在同一片段。否则系统可能只找回前半句,模型看见了结论,却错过了条件。即使上下文窗口很长,资料的位置也会影响模型能否稳定使用它; Lost in the Middle 展示了这种位置差异。
进阶:索引与向量可选阅读
系统会为片段建立便于查询的索引。关键词索引记录词语出现的位置;向量索引保存片段的 Embedding(向量表示),用一组数字表示语义特征。
向量数据库只是保存和查询向量的一种实现方式,不是 RAG 的定义,也不是每套系统都必须单独部署的产品。
检索与重排
用户输入“去机场的网约车钱能报吗”,资料里写的却是“机场往返交通可以报销”。系统需要把这两种说法拉到一起,同时又不能把所有提到“交通”的段落都当成证据。
RETRIEVAL LAB
关键词与语义检索
关键词匹配
语义向量匹配
关键词匹配
语义向量匹配
| 方法 | 擅长的内容 | 典型限制 |
|---|---|---|
| 关键词检索 | 编号、人名、专有名词、精确措辞 | 不同说法可能匹配不到 |
| 语义检索 | 意思接近、用词不同的内容 | 可能召回主题相似但不支持答案的片段 |
| 混合检索 | 综合两类结果 | 仍需排序和过滤 |
语义检索通常先把问题和每个片段转成向量,再比较它们的距离:问句里的“赶飞机的网约车”会更靠近“机场往返交通”,而不是“酒店住宿”。经典的 Dense Passage Retrieval 使用双编码器分别表示问题与段落。
检索一般返回前 K 个候选,即 Top K。K 太小可能漏证据,K 太大则会带入噪声。第一轮快速召回后,系统还可以进行 Reranking(重排),更仔细地比较问题与候选片段。
检索分数只表示“这段话像不像在回应问题”,不表示规则仍有效,也不表示它已经包含所有条件。
上下文组装
候选片段被找回后,系统把它们、用户问题和回答规则排进同一份新提示。此时,模型终于能在生成前看到报销条款:
任务:只根据参考资料回答;资料不足时说明无法确认。
参考资料:
[2026 版差旅手册,第 4.2 节]
机场往返交通可以报销。单程超过 200 元需附行程说明。
问题:打车去机场可以报销吗?
输出:先给结论,再说明条件并标注来源。
CONTEXT LAB
上下文组装
勾选下方不同资料,观察模型眼前的纸堆怎样变化。当前规则、旧版规则和无关资料一旦被一起放入,回答就必须先处理冲突和噪声,不能假装只看见最方便的一段。
外部网页、邮件和上传文件中还可能包含“忽略前面的要求”等指令。资料应被当作待分析内容,不能自动升级为系统命令;敏感场景还需要来源控制、最小权限和输出限制。
答案生成
模型现在根据眼前的资料组织句子。它应该先回答“可以”,再把“超过 200 元”和“电子发票”带出来;如果资料缺少票据要求,就把这部分留成未知。生成阶段要做的不是把话说得更肯定,而是让每个判断能回到一段证据。
- 直接回应问题;
- 写出适用条件;
- 标注支持结论的来源;
- 资料冲突或不足时明确说明。
引用把这条路留给读者:答案中的一句话,能回到哪一页、哪一版文件。有链接不等于有证据;原文必须真正支持对应结论。
三、答案在哪一步失去依据
这条链路上,每一站都可能把答案带偏。不要只看最后一句话是否流畅;从它引用的段落开始,逆着链路回看错误最初出现的位置:
| 层级 | 常见问题 | 修复起点 |
|---|---|---|
| 资料 | 文件错误、过期或缺失 | 更新资料与版本管理 |
| 切分 | 标题、条件和正文分离 | 调整边界、重叠和结构解析 |
| 检索 | 正确片段没有进入候选集 | 查询改写、混合检索、过滤 |
| 上下文 | 噪声过多或版本冲突 | 筛选、去重、排序 |
| 生成 | 模型误读或补充无依据内容 | 回答规则、引用和验证 |
FAILURE LAB
错误定位
引用资料后仍然得到旧答案
资料存在,但系统仍然说不知道
正确条款已经找到,回答依然混乱
引用正确,答案却多出无依据的主张
正确片段从未进入候选集时,继续润色回答提示不会让模型凭空看见它;证据已经完整摆在上下文里,答案却补充了资料没有的结论,才应把注意力放到生成规则和验证上。
进阶:检索评测与生成评测可选阅读
检索评测检查正确证据是否进入前 K 个结果、排序是否合理、不同问法能否找到同一规则。
生成评测检查答案是否回应问题、事实是否有证据支持、引用是否对应、证据不足时是否明确保留不确定性。
两组评测分开,才能判断问题来自检索还是生成。
四、不同的资料路径
RAG、长上下文、联网搜索和微调解决的问题不同:
| 方法 | 主要作用 | 适合场景 | 不等于 |
|---|---|---|---|
| RAG | 从资料库筛选证据后生成 | 大量、变化频繁、需要引用的资料 | 保证答案正确 |
| 长上下文 | 一次放入更多内容 | 文件较少、需要整体阅读 | 模型能稳定利用每个位置 |
| 联网搜索 | 获取当前公开网页 | 新闻、价格、公开信息 | 搜索结果天然可信 |
| 微调 | 调整模型的稳定行为 | 固定风格、格式或任务模式 | 便捷更新事实资料 |
它们可以接在一起:联网搜索可以先带回公开网页,RAG 再从中筛选片段;RAG 找到片段后,仍可放进较长上下文;微调后的模型也可以继续走这条资料路径。
五、沿证据路径核对
不需要知道系统用了哪种向量数据库,也能沿着回答往回检查五件事:
- 来源:是否来自官方文件、原始论文或当事机构;
- 时效:日期和版本是否仍然有效;
- 引用:原文是否真的支持对应结论;
- 范围:地区、部门、金额和时间条件是否匹配;
- 边界:资料不足或冲突时,答案是否明确说明。
也可以在提问中直接加入:
只依据提供的资料回答,并为关键结论标注来源。
资料冲突时列出冲突;资料不足时说明还缺什么。
这不能把遗漏的资料补进知识库,也不能让没被召回的条款突然出现;但它会要求模型把不知道的地方露出来,让最终答案更容易核对。
整条证据路径可以压缩为:
用户问题 → 候选证据 → 当前上下文 → 有引用的回答 → 人工核对
这就是 RAG 中一份报销手册的旅程:先被准备和切分,再被问题找回,随后进入这一次上下文,最后变成带引用的回答。重点不是记住“向量数据库”,而是能指出答案依据了什么资料,以及证据在哪一步丢失、过期或被误读。