RAG 为什么仍然会产生幻觉?

RAG 为什么仍然会产生幻觉?如何降低幻觉?
你有没有过这种感觉:明明给 RAG 系统塞了一堆权威文档,它怎么还是一本正经地胡说八道?
这道题考的就是 RAG 的局限性。大多数人知道 RAG 能缓解知识边界问题,但这道题想让你说出幻觉为什么还在,以及怎么从根本上解决。
核心就一句话:RAG 解决的是"我不知道"的问题,但解决不了"我推理错了"的问题。下面分四个板块把这个逻辑彻底讲透。
板块1:RAG 不是幻觉的万能解
先理清 RAG 的标准流程:用户提问 → 检索模块召回相关文档 → 文档和问题一起输入 LLM → LLM 生成答案。
这个流程解决的是什么问题?知识的边界问题。LLM 本身不知道的东西,通过外部文档补充给它。
但问题在于,LLM 生成答案的过程,本质上是一个概率推理过程。即使有了正确的参考资料,模型仍然可能在以下几个地方出错:
- 检索环节:召回的文档和问题相关性不高,或者干脆召回错了
- 理解环节:模型没读懂召回文档的关键信息
- 生成环节:模型把文档里的信息拼错了、推理歪了、或者掺进了自己训练时学到的错误知识
打个比方:就像给学霸一本参考书让他考试,他仍然可能看错题、算错数。参考书是有了,但做题的过程照样可能出错。

板块2:幻觉产生的三重根源
为什么 RAG 拦不住幻觉?因为幻觉的来源分三个层次,每个层次的成因不同。
第一层:数据层面
外部知识库本身可能有问题。比如:
- 文档过时了,模型用了陈旧的信息
- 文档本身有错误,模型照着错误信息生成
- 文档质量差、表述模糊,模型理解出了偏差
这就像你喝的水本身就不干净,再怎么过滤下游的水质都有问题。
第二层:模型层面
即使数据没问题,LLM 的架构本身也有局限:
- 注意力机制:模型可能过度关注文档的某些部分,忽略了关键信息
- 位置编码:长文档中距离较远的信息可能关联不到
- 参数化知识:模型训练时学到的固有知识可能和外部文档冲突,生成时"偷偷"用了内部知识
第三层:推理层面
这是最根本的一层。LLM 生成token是逐个预测的,每一步都是概率选择。这个过程天然存在不确定性——即使前99步都对,第100步也可能"手滑"生成一个错误token。
三层问题层层递进,数据层影响模型层,模型层影响推理层,最终在生成环节爆发幻觉。

板块3:四大降幻觉方案对比
知道了幻觉从哪来,接下来看怎么治。目前主流有四种方案,各有优劣。
方案1:RAG + TaD(目前最优解)
这是京东和清华联合提出的方案(IJCAI 2024),核心思想很巧妙:不只看当前输出,而是对比微调前后的输出差异。
具体做法是:对于同一个问题,分别用基础模型和微调后模型生成答案,然后比较两者的差异。如果差异很大,说明这个回答可能有问题,需要进一步验证。
TaD 的优势在于它不需要大量标注数据,适合知识密集型场景。它是治本——通过对比学习让模型学会"哪些知识该信、哪些不该信"。
方案2:AI 防护栏(Guardrails)
防护栏是在 LLM 输出环节加一个"安检门",实时检测生成的答案是否有问题。
常见做法:
- 规则匹配:检查答案是否包含敏感词、逻辑矛盾
- 二次验证:用另一个模型或工具验证答案的准确性
- 置信度检测:输出答案的同时输出置信度,低置信度直接拒绝
防护栏的优势是实施简单、见效快,但它是治标——只能拦住已经生成的低质量答案,不能从根上提升模型能力。
方案3:微调(Fine-tuning)
通过在特定领域数据上微调,让模型学会正确的回答方式。
微调可以定向优化模型在特定任务上的表现,减少领域相关的幻觉。但缺点是:
- 需要大量高质量标注数据
- 训练成本高
- 可能导致模型在其他任务上能力下降
这相当于给模型做"手术"——针对性很强,但风险也不小。
方案4:DoLa(Decoding by Contrasting Layers)
这是种比较新的方法,核心思路是淡化语法层面的表示,放大事实层面的表示。
具体做法是:对比模型不同层的输出,语法相关的表示在各层差异不大,但事实相关的表示差异明显。通过放大这种差异,让模型更倾向于生成事实性的内容。
这个方案更适合需要高事实准确性的场景,比如医疗、金融领域的问答。

板块4:实战最佳实践
实际落地时,单一方案往往不够用,需要组合使用。
典型架构:RAG + TaD + 防护栏
第一层防护是 RAG 本身,保证模型能获取到正确的外部知识。第二层是 TaD,通过对比解码过滤掉可能被污染的输出。第三层是防护栏,最后兜底,确保输出的答案符合业务要求。
打个比方:造一辆安全的汽车,需要安全带(防护栏)、安全气囊(TaD)、以及车身结构设计(微调)。单一安全措施不够用,多重防护才能确保万无一失。
选型建议
- 知识问答类场景:优先用 RAG + TaD,这里知识准确性是第一位的
- 对话类场景:可以加一层防护栏,保证对话内容的安全性
- 垂直领域(医疗、金融):考虑微调 + DoLa,确保领域知识的准确性
- 资源有限的团队:先用防护栏保底,后续逐步加入 RAG + TaD


面试怎么答
基础版(100-150字):
RAG 虽然通过外部知识库补充了 LLM 的知识边界,但幻觉仍然存在。原因有三:一是外部数据可能过时或不准确;二是 LLM 架构本身的注意力机制有局限;三是生成过程是概率推理,存在不确定性。降低幻觉可以从几个方向入手:加防护栏做实时检测、微调提升模型定向能力、以及采用 RAG+TaD 这种对比解码方案,从根本上减少错误输出的概率。
加分版(150-200字):
RAG 解决的是"不知道"的问题,但解决不了"推理错"的问题。幻觉根源分三个层次——数据层(外部库过时/错误)、模型层(注意力机制局限)、推理层(生成过程固有风险)。目前较优的方案是京东提出的 RAG+TaD,通过对比微调前后的输出差异来过滤错误内容,属于治本。防护栏是治标,见效快但不能根除问题。实际落地建议组合使用 RAG+TaD+防护栏,类似于造一辆安全汽车需要多重保险。需要根据业务场景选择:如果知识准确性第一优先用 RAG+TaD,资源有限可以先用防护栏保底。
一句话总结
RAG 缓解的是知识边界问题,但幻觉根源在推理过程,降幻觉需要组合拳——RAG+TaD 治本、防护栏兜底、微调定向优化,根据场景灵活选用。
