可交互 AI

RAG:让大模型先找资料,再回答

2026年9月09日 约 2,000 字 约 8 分钟阅读

公司内部的 AI 回答:“因公前往机场的打车费用通常可以报销。”这句话可能符合常识,却没有说明它是否看过公司的报销手册、使用哪个版本,也没有交代金额和票据条件。

**RAG(Retrieval-Augmented Generation,检索增强生成)**解决的是这类问题:先从外部资料中寻找相关内容,再把资料和问题一起交给模型生成答案。

没有 RAG使用 RAG
主要依赖模型已有知识和当前对话回答前增加一次外部资料检索
难以确认答案依据可以附上来源供人核对
无法自动知道私有或新资料可以读取有权限访问的当前资料

RAG 改变的是本次输入,不是模型参数。它可以提供证据,但不能保证资料一定正确、检索一定命中或模型一定读对。

一、RAG 的定义

RAG 由三个动作组成:

组成作用
Retrieval,检索从资料库中寻找候选证据
Augmented,增强把证据加入当前上下文
Generation,生成模型依据问题和证据组织答案

2020 年的论文 Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 将预训练模型中的参数化知识与外部的非参数化记忆结合,用于知识密集型任务。今天的 RAG 实现形式很多,但核心仍是:先找资料,再带着资料生成。

下面的教学模拟只改变一个变量:回答前是否提供公司制度。

同一个问题

资料与回答

虚构公司示例
这一轮能看到的内容用户:打车去机场可以报销吗?
已有问题模型内部学到的语言与知识生成回答
回答
通常情况下,因公前往机场的打车费用可以报销。

听起来合理,但没有核对你所在公司的最新规则。

这一轮能看到的内容2026 版差旅手册:机场往返交通可以报销;单程超过 200 元需附行程说明。
已有问题找到相关条款问题与条款一起交给模型
回答
可以报销。若单程超过 200 元,还需附上行程说明。

答案中的两个判断,都能在当前资料中找到依据。

RAG 改变的不是模型参数。它改变的是模型生成这次回答时,眼前有哪些资料。

二、RAG 的流程

阶段输入输出主要风险
资料准备原始文件可用文档过期、缺失、权限错误
文档切分长文档文本片段完整规则被拆断
检索与重排用户问题、片段库候选证据正确片段未命中
上下文组装候选证据、问题模型输入噪声、冲突、版本混杂
答案生成组装后的上下文答案与引用误读或超出证据

RAG FLOW

RAG 流程

点击任一步
01
这一阶段在做什么把可信资料整理成可查询的知识库
进入报销手册、产品文档、会议纪要
出来一组可处理的文档
最容易出问题的地方资料过期时,后面做得再好也会答错。
02
这一阶段在做什么把长文档拆成大小合适的小段
进入一份 80 页的差旅手册
出来带标题与页码的文本片段
最容易出问题的地方切得不合适,关键条件可能被分开。
03
这一阶段在做什么用问题从知识库中找候选片段
进入打车去机场可以报销吗?
出来最相关的几段条款
最容易出问题的地方没找到正确片段,模型就看不到关键证据。
04
这一阶段在做什么把问题、规则和候选片段放在一起
进入问题 + 三段条款 + 回答要求
出来本轮模型的完整上下文
最容易出问题的地方塞入太多无关内容,会增加干扰。
05
这一阶段在做什么模型根据眼前证据组织回答
进入已经组装好的上下文
出来答案、依据与必要的不确定性
最容易出问题的地方模型仍可能误读资料或写出资料没有支持的结论。

资料准备

知识库首先要收集、清洗并更新资料。重复文件、旧版本和错误权限会直接进入后续链路,因此“找到一段文字”不等于“找到可信证据”。

文档通常还会保留附加信息:文件名、版本、日期、页码、适用部门、原文链接和访问权限。这些 Metadata(元数据) 可用于过滤、引用和权限控制。

文档切分

长文档通常会拆成较小的 Chunk(文本片段)。问题到来时,系统只检索少量相关片段,而不是每次都把整份文档交给模型。

CHUNKING LAB

文档切分

切换切分方式
第 4 章:交通与住宿

市内交通按实际费用报销。

机场往返交通可以报销。

单程超过 200 元需附行程说明。

酒店需选择协议价房型。

早餐已含在房费中时不得重复申领。

当问题是“机场打车超过 200 元怎么办?”条件没有断开,但这一块混入了许多与问题无关的规定。
片段 A

机场往返交通可以报销。

片段 B

单程超过 200 元

片段 C

需附行程说明。

当问题是“机场打车超过 200 元怎么办?”候选片段容易失去彼此关系,“超过 200 元”的条件可能单独出现。
片段 A

市内交通按实际费用报销。

机场往返交通可以报销。

片段 B

机场往返交通可以报销。

单程超过 200 元需附行程说明。

当问题是“机场打车超过 200 元怎么办?”关键句在边界处被保留,问题和附加条件更有机会一起被找回。

切分需要在“聚焦”和“完整”之间取舍:

片段优点风险
较大保留完整上下文混入更多无关内容
较小主题更集中条件与结论可能分离
保留重叠或按结构切分减少规则被截断增加重复内容

例如,“机场往返交通可以报销”和“单程超过 200 元需附行程说明”应尽量留在同一片段。长上下文容量也不等于信息会被稳定使用; Lost in the Middle 显示,相关信息在长上下文中的位置可能显著影响表现。

进阶:索引与向量可选阅读

系统会为片段建立便于查询的索引。关键词索引记录词语出现的位置;向量索引保存片段的 Embedding(向量表示),用一组数字表示语义特征。

向量数据库只是保存和查询向量的一种实现方式,不是 RAG 的定义,也不是每套系统都必须单独部署的产品。

检索与重排

用户可能问“去机场的网约车钱能报吗”,制度写的却是“机场往返交通可以报销”。检索需要同时处理字面匹配和语义相近。

RETRIEVAL LAB

关键词与语义检索

分数仅用于示意
用户问题机场 打车 报销
关键词匹配
1机场往返交通可以报销96
2出租车发票提交规范82
3差旅期间酒店标准28
语义向量匹配
1机场往返交通可以报销94
2乘坐网约车前往航站楼的费用规则88
3差旅期间酒店标准31
实际系统常把两种方法结合,再对候选结果重新排序。分数只能表示匹配程度,不等于内容一定正确。
用户问题去赶飞机的网约车钱,公司给报吗?
关键词匹配
1出租车发票提交规范48
2机场往返交通可以报销34
3差旅期间酒店标准17
语义向量匹配
1乘坐网约车前往航站楼的费用规则93
2机场往返交通可以报销86
3出租车发票提交规范62
实际系统常把两种方法结合,再对候选结果重新排序。分数只能表示匹配程度,不等于内容一定正确。
方法擅长的内容典型限制
关键词检索编号、人名、专有名词、精确措辞不同说法可能匹配不到
语义检索意思接近、用词不同的内容可能召回主题相似但不支持答案的片段
混合检索综合两类结果仍需排序和过滤

语义检索通常把问题和片段转成向量,再比较相似度。经典的 Dense Passage Retrieval 使用双编码器分别表示问题与段落。

检索一般返回前 K 个候选,即 Top K。K 太小可能漏证据,K 太大则会带入噪声。第一轮快速召回后,系统还可以进行 Reranking(重排),更仔细地比较问题与候选片段。

检索分数只表示匹配程度,不代表内容正确,也不代表片段足以支持答案。

上下文组装

系统把候选证据、用户问题和回答规则组合成新的提示:

任务:只根据参考资料回答;资料不足时说明无法确认。

参考资料:
[2026 版差旅手册,第 4.2 节]
机场往返交通可以报销。单程超过 200 元需附行程说明。

问题:打车去机场可以报销吗?
输出:先给结论,再说明条件并标注来源。

CONTEXT LAB

上下文组装

虚构公司 · 教学模拟
用户问题保持不变 打车去机场可以报销吗?
选择放入本轮上下文的资料

每次勾选都会重新组装右侧内容。

模型这一轮能看到的参考资料
更合理的回答

这里没有调用真实模型。回答由预设规则生成,只用来展示资料的缺失、冲突和噪声怎样改变可回答程度。

上下文中的资料会直接影响回答。旧版规则、无关片段和互相冲突的证据,都可能被模型一并使用。

外部网页、邮件和上传文件中还可能包含“忽略前面的要求”等指令。资料应被当作待分析内容,不能自动升级为系统命令;敏感场景还需要来源控制、最小权限和输出限制。

答案生成

生成阶段的目标不是让文字更肯定,而是让结论与证据一致。一个可检查的答案应包含:

  • 直接回应问题;
  • 写出适用条件;
  • 标注支持结论的来源;
  • 资料冲突或不足时明确说明。

引用的价值在于建立核对路径。有链接不等于有证据;原文必须真正支持对应结论。

三、错误来源

RAG 可以减少一部分无依据回答,但不是事实保证器。错误应沿流程定位:

层级常见问题修复起点
资料文件错误、过期或缺失更新资料与版本管理
切分标题、条件和正文分离调整边界、重叠和结构解析
检索正确片段没有进入候选集查询改写、混合检索、过滤
上下文噪声过多或版本冲突筛选、去重、排序
生成模型误读或补充无依据内容回答规则、引用和验证

FAILURE LAB

错误定位

选择症状
引用资料后仍然得到旧答案
现场知识库里仍是 2024 版手册,2026 版尚未同步。
诊断信号召回结果相关,但日期或版本不对。
先检查先修资料更新与版本过滤,不要先改 Prompt。
资料存在,但系统仍然说不知道
现场用户说“赶飞机的网约车”,文档只写“机场往返交通”。
诊断信号正确片段没有进入候选结果。
先检查检查问题改写、关键词与语义检索组合,以及切分边界。
正确条款已经找到,回答依然混乱
现场正确条款和九段相似但无关的旧规定一起进入上下文。
诊断信号答案混用了不同版本或不同适用范围。
先检查减少候选数量,增加重排和版本、部门等过滤条件。
引用正确,答案却多出无依据的主张
现场资料只说明“可以报销”,模型自行补充“无需经理审批”。
诊断信号答案中有无法对应到来源的主张。
先检查要求逐项引用,缺少依据时明确说无法确认,并检查答案与证据的一致性。
RAG 不是一个开关,而是一条链路。错误可能来自资料、切分、召回、组装或生成中的任一步。

如果正确片段从未被找到,继续润色回答提示通常无效;如果证据已经完整进入上下文,答案却超出资料,才应重点检查生成阶段。

进阶:检索评测与生成评测可选阅读

检索评测检查正确证据是否进入前 K 个结果、排序是否合理、不同问法能否找到同一规则。

生成评测检查答案是否回应问题、事实是否有证据支持、引用是否对应、证据不足时是否明确保留不确定性。

两组评测分开,才能判断问题来自检索还是生成。

四、方案比较

RAG、长上下文、联网搜索和微调解决的问题不同:

方法主要作用适合场景不等于
RAG从资料库筛选证据后生成大量、变化频繁、需要引用的资料保证答案正确
长上下文一次放入更多内容文件较少、需要整体阅读模型能稳定利用每个位置
联网搜索获取当前公开网页新闻、价格、公开信息搜索结果天然可信
微调调整模型的稳定行为固定风格、格式或任务模式便捷更新事实资料

这些方法可以组合。例如,联网搜索可以成为 RAG 的资料来源;RAG 检索后仍可使用较长上下文;微调后的模型也可以继续调用 RAG。

五、可靠性检查

普通使用者不必了解系统实现,也可以检查五项:

  1. 来源:是否来自官方文件、原始论文或当事机构;
  2. 时效:日期和版本是否仍然有效;
  3. 引用:原文是否真的支持对应结论;
  4. 范围:地区、部门、金额和时间条件是否匹配;
  5. 边界:资料不足或冲突时,答案是否明确说明。

也可以在提问中直接加入:

只依据提供的资料回答,并为关键结论标注来源。
资料冲突时列出冲突;资料不足时说明还缺什么。

这不能修复资料库或检索器,但能让最终回答更容易核对。

整条证据路径可以压缩为:

用户问题 → 候选证据 → 当前上下文 → 有引用的回答 → 人工核对

理解 RAG 的重点不是记住“向量数据库”,而是知道答案依据了什么资料,以及证据在哪一步可能丢失、过期或被误读。