引文
上一章我们聊了为什么 AI 会一本正经地胡说八道。
核心原因是:它不是在查答案,而是在生成它训练时概率最大的答案。
资料不够、信息过期、上下文不清楚的时候,它就开始"补"。
补一个看起来合理的年份。
补一个格式很像的论文标题。
补一个完整的餐厅预约结果——但餐厅那边根本没收到预约。
看起来特别像回事。
但"看起来像"和"真的是",中间隔着一道挺宽的沟。
那既然它会瞎补,我能不能先把资料发给它,让它基于资料来回答?
别让它空手进考场了。
把小抄递给它。
这样它应该就不会乱说了吧?
这个想法没问题。
但很多人很快会发现,事情没这么简单。

你把十份 PDF 扔进去,它未必真用了。
你把公司制度、产品手册、会议纪要都塞进去,它也可能精准地绕开最关键的那一页。
甚至有时候你明明喂了文档,它还是引用了一段文档里根本没有的话。
所以问题不是:
ounter(lineAI 有没有资料?
而是:
ounter(line它回答这一句的时候,到底拿到了哪几段资料?
还有一种场景:如果你的公司制度,分三册、每一册都堪比一本红楼梦, 对 AI 来说,上下文窗口马上就会被塞满,这时候再问问题就相当于大海捞针,且开销很大。
RAG 想解决的,就是这些问题。
RAG 是什么
RAG 的全称是 Retrieval-Augmented Generation,检索增强生成。
听着很技术,但翻译成人话其实很直白:
让 AI 在回答前,先去外部资料里找一找,再带着找到的资料回答。
可以对比着看:
ounter(lineounter(lineounter(lineounter(lineounter(line普通聊天:你问 → 模型根据当前上下文和参数记忆生成回答RAG:你问 → 系统先找资料 → 把资料递给模型 → 模型基于资料生成回答

区别就在那个"先找资料"。
这里要说清楚一件事:
RAG 不是重新训练模型。
训练模型是让它"永久记住"某些东西,把知识烧进参数里。
那个过程很贵,很慢,也不是普通人能做的。
RAG 不是这样。
它更像临时翻书,而不是把整本书都塞进去。
你问一个问题。
系统去知识库里翻几页相关资料。
把这几页放到模型眼前。
然后模型基于这几页来回答。
下次你问别的问题,它再去翻别的几页。
所以 RAG 属于我们第二章讲过的"三类知识"里的第二种:
模型脑子里有的:训练时学到的参数记忆。 产品临时拿来的:搜索、RAG、工具、数据库。 当前对话现场里的:这次上下文窗口里实际放进去的内容。
RAG 不是让模型变聪明。
而是在它回答前,多给它一点依据。
把资料给 AI,不等于它真的会用资料
但这里有个很容易被忽略的问题。
很多人第一次听说 RAG 或者知识库的时候,脑子里的画面是:
我把文件上传。
AI 就有了这些资料。
它回答的时候就会用这些资料。
这个直觉不完全对。
因为:
上传资料,不等于资料真的进入了模型这次回答的上下文。
进入上下文,也不等于它真的抓住了重点。
抓住了重点,也不等于它不会误读。
我们接着第一章的那个比喻继续说。
还记得吗?
第一章说,模型这次回答能看到的,是桌面上的东西。
我们把 Context Window 比作一张桌子。
你刚刚说的话、它刚刚回你的话、你贴进去的资料、系统提前写好的规则,这些东西加在一起,构成了模型这一次回答时能参考的"现场"。
桌子有边界。
东西太多,旧的会被挤出去。
资料太乱,关键信息会被淹没。

那 RAG 做的事是什么呢?
在回答前,从书架上帮它翻几页资料,放到桌面上。
但如果翻错页了呢?
如果翻太多页,桌面塞满了,关键句被挤到角落看不清呢?
如果关键的一段话刚好被切断了,前半句在这页,后半句在另一页,而系统只翻到了前半句呢?
那桌面上看起来有资料。
但实际上,它还是会跑偏。
所以 RAG 不是魔法。
它只是多了一个"翻资料"的动作。
翻得到、翻得对,回答才靠谱。
翻不到、翻错了、看错了,它照样会一本正经地胡说。
它到底多做了一件什么事
那 RAG 比普通聊天多做了什么?
可以先看一个最简单的流程:
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line用户问题↓去外部资料里找相关片段↓把片段塞进 Context Window↓LLM 根据问题和片段生成回答

多的那个动作,就是中间那步:
先找。
找到了,再递。
递完了,再让模型答。
听起来很朴素。
但这里面其实有很多细节。
首先,"去外部资料里找相关片段"——怎么找?
你问的是"报销打车票需要什么材料"。
但资料里可能不是这么写的。
资料里写的可能是:
ounter(line市内交通费需提供合规发票,非工作时间出行应附事由说明。
字面上不一样。
但意思很接近。
系统怎么判断"这段资料和用户的问题相关"?
这就要轮到下一篇要讲的 Embedding(向量化)和 Vector Database(向量数据库)了。
但在这一篇,你只需要先建立一个直觉:
系统要有办法,把"意思接近"的资料找出来,而不只是按关键词搜。
然后,"把片段塞进 Context Window"——塞多少?
太少了,信息不够。
太多了,噪音一堆,关键句被淹没。
而且 Context Window 有边界。
你不能把整个知识库都塞进去。
所以系统要有办法,挑出最相关的几段。
最后,"LLM 根据问题和片段生成回答"——它真的会老老实实基于材料回答吗?
不一定。
如果材料里有矛盾,它可能会把两边拼在一起,答出一个自相矛盾的结果。
如果材料写得模糊,它可能推过头。
如果材料恰好没覆盖问题的某个细节,它可能又开始"补"。
所以 RAG 不是一个"装上就灵"的开关。
它更像一个流程。
流程里每一步都可能出问题。
而且就算每一步都对了,最后模型也可能看错。
这就是为什么,给了资料,AI 还是可能答错。
小结
所以到这里,我们先建立一个最基础的认知:
RAG 不是让 AI 突然变成一个事实机器。
它只是让 AI 回答前,多了一个"翻资料"的动作。
翻到对的资料,放到桌上,它确实会好很多。
但如果:
资料本身就是错的、旧的、不完整的。 系统没找到真正相关的资料。 系统找到了很多看起来相关、其实不相关的资料。 资料被切得乱七八糟,上下文断了。 桌面上堆了太多东西,关键句被噪音淹没了。 模型看错了,把 A 文档的结论套到 B 文档的案例上了。
那它还是会一本正经地跑偏。
"有资料"只是第一步,"拿到对的资料"才是关键。
那问题就来了——
系统到底怎么"翻"?
一堆 PDF、Word、网页,是怎么变成它能在回答前精准翻到的那几段的?
中间其实有一条不短的流水线。
下一篇我们就拆开看。
大家端午安康,晚安,我们下一篇见。
参考链接
Lewis et al., Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks, NeurIPS 2020: https://papers.nips.cc/paper/2020/hash/6b493230205f780e1bc26945df7481e5-Abstract.html Gao et al., Retrieval-Augmented Generation for Large Language Models: A Survey: https://arxiv.org/abs/2312.10997
夜雨聆风