大模型幻觉(Hallucination)是什么?如何通过外挂知识库降低胡说八道率

安全与风控

讲清大模型为什么会一本正经胡说,以及外挂知识库怎么把幻觉压下来:判断标准、落地步骤和不适用的情况。

你大概遇到过:问一个明明有标准答案的问题,模型答得又快又顺,可一核对全是编的,连不存在的条款、网址和数字都给你写出来。这篇不聊怎么搭一整套 RAG 系统,只聚焦一件事——幻觉是怎么来的、外挂知识库在哪一步真正起作用、什么情况下它反而救不了你。看完你能自己判断一个「胡说」场景该改提示、换资料还是干脆别用模型。

你大概遇到过这种场景:问一个明明有标准答案的问题,模型答得又快又顺,连不存在的条款、网址和数字都能给你写出来。等你真去核对,发现全是编的。这不是模型坏了,而是它在按自己的方式工作。这篇不聊怎么搭一整套 RAG 系统,只聚焦一件事——幻觉是怎么来的、外挂知识库在哪一步真正起作用、什么情况下它反而救不了你。

看完你能自己判断:一个具体的「胡说」场景,到底该改提示、换资料,还是干脆这个环节别让模型单独回答。整套判断链条不复杂,但要拆开看,因为幻觉不是一种病,是好几种不同的问题混在一起叫了同一个名字。

幻觉到底是什么:不是 bug,是它的默认工作方式

模型在做的事情,本质上是「接下一句最像的话」。它没有先去数据库查一遍再回答这个动作,所以「说得流畅」和「说得对」是两件独立的事。流畅是它的强项,正确是碰巧。你把这两件事分开看,很多让人恼火的表现就都能解释了。

  • 编事实:把不存在的政策、功能、人物关系讲得头头是道
  • 编引用:给你一个看起来很正规的出处,但那份文件根本不存在,或者里面没这句话
  • 编数字:金额、比例、时间点张口就来,量级还挺像那么回事
  • 编自己干过的事:声称已经调用过某个工具、查过某个网页、读过你上传的文件,实际上没有

还得分清两种情况:「不知道硬答」和「知道但说错」。前者是知识覆盖问题,你给的资料里就是没有;后者多半是资料本身有问题,或者提示词把它带偏了。这两种的修法完全不同,混在一起调只会越调越乱。

为什么会胡说:四个真正的原因

训练时它被反复强化的目标是「像人话、有帮助」,不是「准确、可核实」。所以它天然没有「我不确定」这个默认选项——除非你明确允许它这么说。这是背景,不是缺陷,但你必须知道它在那儿。

原因典型表现你该动的环节
问题超出它的可靠知识范围越冷门、越新、越内部的问题越容易崩补资料,别硬问
上下文里有模糊或矛盾信息顺着你的暗示往下编,替你把话圆回来清理输入,一次只给一致口径
提示词逼它必须给答案要求「必须列三条」,它宁可编也不空着放宽约束,明确允许说没有
训练目标是像人话不是准确答得越顺你越容易信换思路:先查再答,别靠记忆

注意第四行。这是最隐蔽的一条:幻觉往往和流畅度正相关,越是那种语气笃定、结构整齐的回答,越要多留个心眼。所以治理幻觉的第一原则不是「让它变聪明」,而是「别让它靠记忆答」。

外挂知识库为什么能降幻觉:它改的是哪一环

思路很直接:把「靠参数记忆答」换成「先检索、再基于检索到的原文答」。答案的原料来自你给的片段,而不是它在训练时压缩进去的印象。原料是你控制的,编造空间就被锁在材料范围内了。

  • 关键动作一:让它基于检索到的原文作答,而不是自由发挥
  • 关键动作二:要求标注来源,每条结论能追回原句
  • 关键动作三:检索不到时明确允许回「资料里没有」,而不是硬编
  • 反过来说也成立:资料本身错、切得碎、召回不到,外挂知识库只会让错误显得更「有据可依」

但要说清楚它治什么、不治什么。外挂知识库治的是知识类幻觉——「这个事实它不知道」。它治不了推理类错误,比如多步计算、逻辑推演;也治不了格式类错误,比如把表格结构搞乱。这两类得靠别的办法,指望加个知识库一并解决,会失望。

什么时候外挂知识库救不了你

先说清楚,下面这些情况不是「效果差一点」,而是方向不对——你加多少资料都填不上那个洞。早点识别出来,比后期反复调检索参数划算得多。

场景为什么知识库救不了替代做法
跨文档多步推理检索给的是片段,推理链得自己搭拆成多轮,每轮只答一小步
算数、统计、汇总模型算数本来就不稳,跟资料没关系交给计算工具,模型只负责组织语言
实时数据你的库是静态快照,问的是此刻接实时接口,或明确告诉用户数据截止时间
主观判断、方案取舍没有唯一正确答案,不是查不到模型只列维度,决策留给人
口径不一致的问题用户问的和资料写的不是一回事先把问题对齐,再谈回答

还有一种常被误判成幻觉的情况:用户问的和你资料里写的本来就不是同一个口径。模型按资料答了,用户觉得答非所问,就记成「它又胡说」。这类问题要先在问题侧对齐,不是去改模型。

落地步骤:从一份资料到能用的问答,按这个顺序做

下面这六步有先后关系,别跳。尤其第一步,很多人跳过直接切文档调参数,最后发现调来调去都是在优化一个范围本来就不对的东西。

  1. 先定范围写清楚只覆盖哪些主题,哪些问题明确回「资料里没有」。这一步比调参重要,范围不定,后面全是无用功。
  2. 理语料去重、统一版本,把一份文档按语义切成能独立读懂的小块。别按固定字数硬切,切断了上下文,检索出来的片段自己也读不懂。
  3. 每块带上出处文件名、章节、更新时间都挂上。答完能追回原文,这是后面验收的基础。
  4. 检索加一层重排把最相关的几段排在前面,别一股脑全塞进上下文。上下文塞太满,反而稀释了关键信息。
  5. 约束作答方式让模型只依据给定材料作答,允许说「资料未提及」,并输出引用位置。这一条直接决定幻觉率。
  6. 固定问题集回归准备一组小而固定的问题,改一次检索或提示就重跑一遍。没有这组题,你根本不知道这次改动是变好还是变坏。

判断做得好不好,不看它答得多漂亮,看两件事:答错时它会不会说不知道,以及每条结论能不能指回原句。这两条达标,基本可用;做不到,答得再顺也别上线。

输出侧的兜底:怎么判断这次答得靠不靠谱

就算前面都做了,输出侧还是要有一道检查。因为检索可能召回错片段,模型也可能在组织语言时把两段材料揉在一起,产生新的错。下面这套是给使用者的,不需要技术背景。

  • 看引用:每条结论能不能在给出的原文里找到对应句子,找不到就当它没说过
  • 看一致性:同一问题换个问法再问一次,答案互相打架就说明它在现编
  • 看颗粒度:数字、日期、条款这类硬信息单独抽出来核对,这里最容易出错
  • 看边界:问一个明确超出范围的问题,看它会不会老实说不知道

高风险的答案别直接发出去,加一道人工确认。对外的文档、合同相关、涉及金额的结论,都算高风险。这一道人工成本,比事后返工低得多。

上线前对照清单:六项打分,缺两项先别上线

下面六项,每项按「做了 / 没做」打分。缺两项目以上,先别上线——不是标准严,是缺的这几项正好是幻觉最容易漏出来的地方。想横向看看别家工具在这类问题上的表现,可以到站内工具目录里对照着挑,具体数据以页面当时的记录为准。

检查项合格标准
覆盖范围写清楚了,且明确告知使用者哪些问题它答不了
语料更新有更新机制和责任人,不是一次性导入就完事
可溯源每段资料能指回原文位置
兜底行为检索不到时老实说不知道,而不是硬编一段
回归问题集有一组固定题,改动前后能对比
反馈路径答案存疑时知道找谁确认、怎么反馈

六项里最容易被忽略的是第四项和第六项。兜底行为决定它出错时的姿态,反馈路径决定错误能不能被发现和修掉。这两项都不做,等于系统上线后你对它的实际表现一无所知。

下一步想看看各家工具在知识库问答上的实际表现、以及它们的价格和稳定性记录,可以到站内工具目录和价格追踪页对照着挑,数据以页面当时为准。

常见问题

外挂知识库是不是能彻底消灭幻觉?

不能。它把「凭记忆答」换成「照材料答」,能大幅压低事实类胡说,但推理错误、算错数、格式跑偏还是会出。而且语料本身有问题时,它只是把错误说得更理直气壮。把它当降低概率的手段,不是保险。

我没有技术团队,能自己弄吗?

能,但先别急着上系统。把资料整理成一份干净的、有出处的文档,配合一个会按材料作答的对话工具,已经能解决大部分胡说问题。等资料量大了、更新频繁了,再考虑上检索那一套。

为什么同样的资料,别人问得准我问得不准?

多半差在问法。把问题写具体——限定范围、要求和资料口径对齐、要求给出来源,回答质量会明显不同。模糊的问题会让模型靠猜来补全,猜就是幻觉的温床。

怎么快速知道一次回答是不是编的?

三招够用:让它标出依据的原文位置并对回去;同义换个问法再问一遍看是否一致;把其中的数字和专有名词单独抽出来核对。三招里有一招对不上,这次回答就不能直接用。

资料里没有答案,它会怎么表现?

取决于你有没有明确允许它说不知道。没说的话,它倾向顺着话题编一段听起来合理的;明确要求「资料未提及就直说」之后,多数情况下会老实承认。这条规则要写进提示里,别指望它自觉。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。