RAG到底是什么
一个语言模型单独存在时,就像一场闭卷考试。它能告诉你的一切,都是训练结束那一刻就已经固定的,问它关于你的合同、你的代码库或昨天新闻的问题,得到的只会是拒绝回答,或者一个自信满满的瞎猜。AI为什么会出错 深入讲了这个瞎猜问题。
RAG把这场闭卷考试变成了开卷考试。在模型写出答案之前,系统会先去搜索一个知识来源,比如你上传的文件、公司知识库或者实时网页,取回最相关的段落,再把它们连同你的问题一起塞进提示词里。模型接下来就根据这些检索到的文本来回答,而不只是凭记忆瞎编。
这就是全部的思路。名字听起来很吓人,机制其实就是“先查一下”。RAG工程里剩下的所有事情,都是在想办法让这个查找步骤找到对的段落。
为什么模型压根需要一个检索步骤
两个硬性限制,造成了这个需求。
训练是有截止日期的。 一个训练到2026年初的模型,对之后发生的事一无所知,而重新训练一个前沿模型是个耗时数月、代价高昂的大工程。检索能让一款AI产品回答关于今天早上发布的消息,而不需要任何人重新训练任何东西。
训练数据是公开的。 你的发票、工单和内部文档从来都不在里面,再聪明的提示词技巧也找不回模型从未见过的信息。检索是通用模型能够根据私有数据作答的唯一方式。
还有一个更微妙的第三个原因:可验证性(grounding)。当答案必须来自一段提供的文本时,模型就能标注出处,你也能去核实。而一个凭记忆生成的答案,没有任何东西可供核对,这恰恰是让幻觉变得危险的那种失效方式。
RAG流水线是怎么一步步运作的
从“和PDF聊天”这类小功能,到企业级搜索产品,每一个RAG系统跑的都是同样的五个步骤。
- 分块(Chunking)。 源文档会被切分成一段一段的文字,通常每段几百字,因为检索是针对段落而不是整份文件来工作的。
- 索引(Indexing)。 每个分块都会被转换成一个embedding,也就是一串代表其含义的数字,存进向量数据库,让意思相近的内容彼此靠近。
- 检索(Retrieval)。 你的问题会用同样的方式被转换成embedding,系统取出与它最接近的那些分块,通常是前3到10段。
- 增强(Augmentation)。 这些段落被插入到提示词里,外面包一层类似“只根据下面的上下文回答”这样的指令。
- 生成(Generation)。 模型根据这个被增强过的提示词写出答案,理想情况下还会标注每条结论出自哪一段。
当你把一份长文档上传到聊天工具并对它提问时,跑起来的就是这套流程的某个版本。和PDF聊天指南 展示了这在Whizi里实际是什么样子。
RAG对比长上下文,对比微调
这三者常被搞混,因为它们都在“教模型认识你的数据”。只是用的方式互不兼容。
| 方案 | 原理 | 最适合 | 弱点 |
|---|---|---|---|
| RAG | 先搜索,再根据结果回答 | 大型或不断变化的文档集,需要引用来源 | 答案质量取决于检索质量 |
| 长上下文 | 把所有内容都塞进提示词 | 单一文档,需要深度交叉比对 | 成本和注意力上限 |
| 微调 | 用示例重新训练模型 | 风格、格式和行为 | 不擅长处理事实;更新成本高 |
决定胜负的是经济账,不是理论。像Gemini和GPT-5.6系列这类前沿模型现在提供的100万token上下文窗口,大约能塞进1500页内容,所以你确实可以把整本手册都贴进去。但按照GPT-5.6 Terra每百万输入token收费$2的价格,每次提问都带上30万token的手册,一次提问大概要花$0.60,而只检索出对的那2000个token,成本不到半美分。问三个问题,长上下文得到同样的答案,花的钱却是100倍。什么是上下文窗口 解释了这个底层限制。
微调是三者里的例外:它改变的是模型的行为方式,不是它知道什么。团队通常用它来调整语气和输出格式,涉及事实的部分,还是得靠RAG来补上。
你早就在不知不觉中用过RAG
聊天机器人里的网页搜索。 当ChatGPT、Gemini或Perplexity搜索网页并附上链接来回答时,那就是把整个互联网当作知识来源的RAG。
和你的文件聊天。 上传一份PDF然后提问:只要文档长到装不进上下文,分块、embedding和检索就会在幕后自动跑起来。
客服机器人。 那些能从真实帮助中心找答案、并标注出处文章的,都是RAG系统。那些靠临场发挥的,不是,而且一眼就能看出来。
回答时事问题的AI助手。 任何关于模型训练截止日期之后发生的事情的正确答案,都是靠检索得来的,不是靠记忆。
RAG在哪里会失灵,怎么发现
RAG能减少幻觉,但消灭不了它,而且还会带来一些它自己特有的失效方式。
检索没找对。 如果搜索步骤取回了不对的段落,模型还是会流畅地根据这段不相关的上下文来回答。症状:答案标注了你的文档,但回答的其实是一个略微不同的问题。
索引过时。 向量数据库只知道最后一次索引时的文档状态。一个建立在上个季度政策上的RAG系统,会给出自信满满、已经过时的答案,还带着引用来源,这比单纯的幻觉更有说服力,所以也更糟糕。
来源相互矛盾。 当检索到的段落彼此说法不一致时,模型往往会把它们揉成一段读起来很顺、但是错的文字,而不是指出这个矛盾。
实际的防御手段和对付任何AI答案都一样:去核对被引用的那段文字本身,而不只是看有没有引用这个动作。一个引用来源根本没说答案所声称内容的RAG回答,是生产环境里最常见的那种严重失误。
- 问题跟你的数据或时事有关时,就用RAG风格的工具(上传文件、开启网页搜索)
- 只要深挖一份文档,优先用长上下文;面对大型或不断变化的数据集,优先用检索
- 别指望微调能补上事实,它改变的是行为,不是知识
- 永远打开被引用的那段文字,确认它真的说了答案所声称的内容
- 把一个自信满满却没有引用来源的答案,当成一次凭记忆的猜测来看待
常见问题
在AI里,RAG是什么意思?
RAG是检索增强生成(retrieval augmented generation)的缩写。检索(retrieval)指的是去知识来源里搜索相关段落,增强(augmented)指的是把这些段落加进提示词,生成(generation)指的是模型根据它们写出答案。这项技术让模型能够根据它从未训练过的文档和数据来作答。
RAG比微调更好吗?
它们解决的是不同的问题。RAG更适合处理事实,因为更新知识只需要重新索引文档,不需要重新训练,而且答案还能标注来源。微调更适合处理风格、语气和输出格式。生产系统通常两者都用:微调管行为,RAG管知识。
上下文窗口变大,会让RAG过时吗?
不会,它只是改变了那个临界点。有了100万token的窗口,你确实可以直接贴进大约1500页的内容,这在处理单一文档的场景下,是真的能取代RAG。但每次提问都把所有内容贴进去,每次都要付输入token的钱:以每百万token收费$2来算,一份30万token的手册每次提问大约要花$0.60,而检索只需要发送几千个token。对于大型、不断变化、或者被频繁查询的数据集,检索依然是更省钱的答案。
要用RAG,我需要自己搭建什么东西吗?
作为普通用户不需要。把文档上传到聊天工具,或者打开网页搜索,背后就已经在跑检索了。只有当你在开发一款必须自动根据私有文档集合作答的软件时,自己搭建一套带向量数据库的流水线才会变得有意义。
RAG能阻止AI产生幻觉吗?
它能通过把答案锚定在检索到的文本上,大幅减少幻觉,但它也会带来自己的一些失效方式:检索到错的段落、根据过时的索引作答,或者把互相矛盾的来源揉成一段。可靠的习惯是去检查被引用的那段文字是否真的支持这个说法,这一点是RAG让人做得到、而纯粹靠记忆的答案做不到的。