AI
AI

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

2026年9月09日 约 4,000 字 约 14 分钟阅读

想象你在日常使用的 ChatGPT 这类聊天应用里,问:“因公前往机场的打车费用能报销吗?”如果应用没有接入公司的报销手册,也没有在回答前检索内部资料,它可能会答:“因公前往机场的打车费用通常可以报销。”这句话读起来很顺,却不是核对过公司规定后的结论。报销人仍会卡住:它依据的是哪一版手册?单程超过 200 元怎么办?电子发票是不是必需?

在这个例子里,普通聊天应用只能依据模型已有知识和当前对话作答;公司的具体制度既没有提供给它,也没有通过检索补进来。RAG(Retrieval-Augmented Generation,检索增强生成) 就是在回答前加入这条资料路径:

先从外部资料中找出相关段落,再把段落和问题一起交给模型。模型根据拿到的资料段落和用户的问题,再组织语言来生成回答来回复给用户。

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

RAG 改变的是本次输入,不是模型参数。手册没有被永久写进模型;这一次回答结束后,模型也不会因此自动记住它。资料是否最新、关键段落是否被找到、模型是否读全条件,仍要逐步检查。

一、资料怎样进入一次回答

“检索增强生成”这个名称对应三个连续动作:

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

常见应用场景

RAG 最常见的用法,是让模型回答已有资料里的问题:资料可能很多、经常更新或不能公开给通用模型,而且答案最好能指出依据。不同产品看起来差别很大,背后的需求通常相同——先从一批指定资料里找证据,再根据证据回答。

场景资料例子RAG 在其中做什么
企业内部问答报销制度、员工手册、IT 操作指南按员工的问题找出适用条款,并给出文件出处
客服与产品支持产品说明、故障排查文档、服务政策找到与用户问题相关的步骤或政策,组织成易读答复
文档与知识研究论文、合同、项目记录、行业报告从指定材料中定位段落,汇总要点并保留引用线索
专业资料助手医疗指南、法规、技术规范等受控资料在限定资料范围内检索依据,提示来源和适用条件

这些例子不代表 RAG 会自动判断答案正确。资料若缺失或过期、相关段落没被找回,模型仍可能答错;涉及权限或高风险决定时,还需要相应的访问控制和人工核对。若问题只是通用常识,或需要对实时业务数据做精确计算,直接使用模型已有知识或调用数据库、计算工具可能更合适。

2020 年的论文 Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 用“参数化知识”和外部的“非参数化记忆”描述这种组合。今天的实现可以不同,但这条路径不变:先找资料,再带着资料生成。

先切换下面两种回答方式。问题不变,变化的只有模型这一轮能看到的资料。

同一个问题

资料与回答

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

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

这一轮能看到的内容
用户问题打车去机场可以报销吗?
公司手册 · 检索结果2026 版差旅手册规定,机场往返交通可以报销;单程超过 200 元需附行程说明。
已有问题找到相关条款问题与条款一起交给模型
回答
可以报销。若单程超过 200 元,还需附上行程说明。

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

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

二、从手册到答案

RAG FLOW

RAG 流程

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

资料准备

为了让 RAG 在回答时能找到可用证据,系统需要先把差旅手册、票据规范等文件放入知识库。同一条规则若同时留下 2024 版和 2026 版,后面的检索可能把旧条款也找出来;一份没同步的手册,则从一开始就不在候选范围内。资料进入链路的这一刻,已经决定了模型之后有没有机会看到正确证据。

每份文件还应带着文件名、版本、日期、页码、适用部门、原文链接和访问权限等 Metadata(元数据)。检索时,系统可以据此排除失效版本或无权访问的文件;回答后,人也能顺着页码回到原文。

文档切分

一本 80 页的手册不能每次原封不动塞进模型。系统会把它拆成较小的 Chunk(文本片段);问题到来时,只取少量可能相关的片段。切分决定了“可以报销”和“超过 200 元需附行程说明”会不会还挨在一起。

CHUNKING LAB

文档切分

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

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

机场往返交通可以报销。

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

酒店需选择协议价房型。

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

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

机场往返交通可以报销。

片段 B

单程超过 200 元

片段 C

需附行程说明。

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

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

机场往返交通可以报销。

片段 B

机场往返交通可以报销。

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

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

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

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

例如,“机场往返交通可以报销”和“单程超过 200 元需附行程说明”应尽量留在同一片段。否则系统可能只找回前半句,模型看见了结论,却错过了条件。即使上下文窗口很长,资料的位置也会影响模型能否稳定使用它; Lost in the Middle 展示了这种位置差异。

切好的片段还不能自己回答问题。先看它如何变成可查询的记录,再切换问题,观察系统怎样从向量找回原文。

VECTOR DATABASE FLOW

片段怎样存进去,又怎样被找回来

两条路径 · 同一批片段
01 / 预先入库
资料准备时,只做一次或按更新重做
片段原文 + 出处“机场往返交通可以报销……”片段 ID:C01 · 2026 版差旅手册
Embedding 模型把文本转成向量问题也用兼容的表示方式
写入可检索记录C01 → [0.80, 0.10, 0.20]同时保留 ID、原文与出处的关联
VECTOR STORE / 向量库向量 ⇄ 片段 ID ⇄ 原文出处
片段 ID向量(3 维示意)原文主题
C01[0.80, 0.10, 0.20]机场往返交通可以报销。单程超过 200 元需附行程说明。
C02[0.10, 0.90, 0.20]酒店早餐已含在房费中时,不得重复申领。
C03[0.20, 0.10, 0.80]报销时须提交电子发票。
02 / 提问时查询
换一个问题,观察同一条查询路径
用户问题去机场的网约车能报吗?原话与手册措辞可以不同
Embedding 模型把问题文本转成向量与入库时使用兼容的表示方式
得到问题向量[0.78, 0.12, 0.22]与片段向量处于可比较的表示空间
在有权访问的记录中比较找相近向量,返回片段 ID命中 C01,再取回原文与出处
取回的候选证据2026 版差旅手册 · 第 4.2 节

机场往返交通可以报销。单程超过 200 元需附行程说明。

这段原文随后进入重排与上下文组装;向量本身不会直接交给生成模型当作条款。

教学示意:三个数字和匹配结果为解释流程而设计,未经真实 Embedding 模型计算;实际向量通常有更多维度,单个维度不对应固定词义。

Embedding 模型会把一段话变成一组数字。 经过训练,它通常会给意思相近的话生成比较接近的数字组合。资料片段和问题都这样处理后,系统就能比较两组数字,先找回可能相关的片段。

例如问题写“去机场的网约车”,手册写“机场往返交通”,词没有完全重合,两组向量仍可能接近;系统比较向量时便把这段条款列为候选。 Sentence Transformers 的语义检索说明 展示了这条“资料和问题分别编码,再比较”的路径。接近只说明值得取回核对,不代表条款一定适用。

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

索引像资料目录:它帮系统找到原文,不会代替原文回答。 手册切成片段后,每段都会保留编号和原文,也会记下文件名、版本、页码和访问权限。系统找到片段编号后,再按编号取回原文,供模型阅读和引用。

还是看“去机场的网约车钱能报吗”这个问题。手册里可能写的是“机场往返交通可以报销”。系统可以用两种方式找这条规定:

找法系统怎么做擅长找什么
按关键词找记录每个词出现在哪些片段里。查“200 元”时,直接列出包含这个词的片段金额、条款编号、人名等明确写出来的词
按意思找把问题和每个片段分别转换成一组数字,再比较这些数字是否接近说法不同、意思相近的内容

第一种方法像书末的索引:查“机场”,就能找到写着“机场”的片段。这种“从词语直接找到片段”的目录叫倒排索引。但如果手册只写“交通”,搜索“网约车”可能找不到它。

第二种方法能补上这类差异。Embedding 模型会把文字转换成一组数字,让意思相近的句子通常得到更接近的数字组合。因此,“去机场的网约车”和“机场往返交通”即使用词不同,也可能被找在一起。这些数字不能逐个翻译成某个词;系统比较的是整组数字。更换 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

上下文组装

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

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

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

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

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

答案生成

模型现在根据眼前的资料组织句子。它应该先回答“可以”,再把“超过 200 元”和“电子发票”带出来;如果资料缺少票据要求,就把这部分留成未知。生成阶段要做的不是把话说得更肯定,而是让每个判断能回到一段证据。

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

引用把这条路留给读者:答案中的一句话,能回到哪一页、哪一版文件。有链接不等于有证据;原文必须真正支持对应结论。

回看刚才走过的链路,各阶段的输入、输出和常见风险可以压缩成这张表:

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

三、答案在哪一步失去依据

这条链路上,每一站都可能把答案带偏。不要只看最后一句话是否流畅;从它引用的段落开始,逆着链路回看错误最初出现的位置:

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

FAILURE LAB

错误定位

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

正确片段从未进入候选集时,继续润色回答提示不会让模型凭空看见它;证据已经完整摆在上下文里,答案却补充了资料没有的结论,才应把注意力放到生成规则和验证上。

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

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

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

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

四、不同的资料路径

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

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

它们可以接在一起:联网搜索可以先带回公开网页,RAG 再从中筛选片段;RAG 找到片段后,仍可放进较长上下文;微调后的模型也可以继续走这条资料路径。

五、沿证据路径核对

不需要知道系统用了哪种向量数据库,也能沿着回答往回检查五件事:

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

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

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

这不能把遗漏的资料补进知识库,也不能让没被召回的条款突然出现;但它会要求模型把不知道的地方露出来,让最终答案更容易核对。

最后把两条路径放在一起看:报销手册预先被切分并建立索引;有人提问时,系统才从中找回相关原文,把证据和问题交给模型。

RAG / FLOW MAP

两条路径汇合,生成一次有依据的回答

沿箭头从上往下读
A
资料路径提问前建立,资料更新时重做
  1. 知识库文件2026 版差旅手册
  2. 切成片段规则与条件尽量留在一起
  3. 文档向量化片段变成可比较的数字表示
写入片段向量与原文出处
B
提问路径每次提问时运行
  1. 用户问题“去机场的车费能报吗?”
  2. 问题向量化用兼容的表示方式处理问题
带着问题向量查找
汇合点 / RETRIEVAL在资料库检索并重排比较问题与片段,过滤版本和权限,找出候选证据
  1. 取回原文证据“机场往返交通可以报销;单程超过 200 元需附行程说明。”2026 版差旅手册 · 第 4.2 节
  2. 组装本轮上下文用户问题 + 找回的原文 + 回答规则
  3. 语言模型生成根据眼前证据说明结论、条件和来源
  4. 有引用的回答读者再核对原文、版本和适用范围
关键边界:向量用于定位候选片段。模型读到的是取回的原文与问题;检索到资料,也不等于回答自动正确。

这就是 RAG 中一份报销手册的旅程。沿着图中的箭头回看,既能指出答案依据了什么资料,也能找到证据在哪一步丢失、过期或被误读。