3595 字
约 11 分钟
21
2.3 幻觉从哪来,什么时候必然发生
2026-10-25
无标签

2.3 幻觉从哪来,什么时候必然发生

一句话结论:幻觉不是模型的"bug",而是「用概率预测代替事实判断」这个机制的必然副产物。你无法消除它,但可以预判它在什么时候发生,并用工程手段把它压到可接受的水平。

读这篇之前

需要先读 2.1(模型在预测下一个 Token)。这一篇是把 2.1 的机制推论到底:既然它在算概率,那"说错"就是结构性的,而不是偶发的。


一、先看幻觉长什么样

幻觉(hallucination)指模型生成看似合理但实际错误的内容。它有几个典型形态,危害程度递增:

形态 例子 危害
事实错误 把某功能说成另一个模型有的 中:好查
张冠李戴 把 A 团队的方案说成 B 团队的 中:需交叉验证
虚构引用 编出一个不存在的论文、链接、API 高:看起来很可信,无法点击验证
虚构细节 编出具体的数字、版本号、参数名 高:会被直接抄进代码
过度自信 用"肯定是""就是这样"包装不确定内容 最高:击穿读者的怀疑机制

最后一种最危险,因为它不是内容错,而是姿态错——它让你失去了本来会有的怀疑。


二、从机制推:幻觉为什么必然

回到 2.1 的核心结论:模型在做的事是预测下一个 Token,优化目标是"像不像训练数据里该出现的样子",而不是"这个陈述是否为真"。

这个机制推出三层必然性:

必然性一:没有"真值"这个优化目标

模型从未被直接训练去"判断真假",它被训练去"生成合理的续写"。所以当训练数据里关于某话题的内容稀疏或矛盾时,它只能生成"最像样的那一个"——而不是"正确的那一个"。

必然性二:流畅性与准确性是两套机制

模型的输出在语言层面永远是流畅的,因为流畅性是它被优化的第一目标。这意味着"读起来很顺"完全不能作为准确性的证据。 恰恰相反,越是读起来顺、结构整齐、术语密集的段落,越容易被误信。

必然性三:细节越具体,越容易编

通用概念在训练数据里出现无数次,模型说得基本不会错。但具体的数字、版本号、函数签名、配置项名称出现的频率低得多,模型只能按"这个位置通常长什么样"来填——于是就编了。

一条可直接用的判据:越是具体、越是罕见、越是最近的内容,幻觉概率越高。


三、什么时候必然发生:五个高危场景

按上一条判据,可以列出幻觉的高危区。这不是概率问题,而是结构上一定会出错:

# 场景 为什么会错 典型表现
1 训练数据之后的事 模型知识在训练时冻结,之后发生的一切它都不知道 编造新版本特性、新 API
2 小众/私有领域 训练数据里几乎没有,只能瞎猜 编造内部系统名、私有框架用法
3 精确数值与标识符 具体值出现频率低,按"位置习惯"填 编版本号、端口号、参数默认值
4 不存在的引用 论文标题、链接的"形状"很规律,容易生成 编出不存在的文献与 URL
5 你暗示了答案的提问 你的问法里已经含了错误前提,它顺着说 "为什么 X 比 Y 快?"(默认 X 更快)

第 5 条最容易被忽略:带有错误前提的问题,模型常常顺着前提往下答,而不是纠正前提。 这在技术上不是幻觉,而是"顺从",但后果一样。


四、Agent 场景下幻觉更危险的两个原因

普通对话里,幻觉的后果是"你被误导"。但在 Agent 里,它会被放大:

原因一:幻觉会变成"行动"

一个 Chatbot 编造一个不存在的函数名,你顶多困惑。但一个 Agent 编造一个不存在的命令并真的执行了它,可能造成真实损害。

这就是为什么第 14 章要强调「不可逆动作必须有校验」。

原因二:一次幻觉会污染后续所有轮次

模型编造的一个错误结论,一旦进入上下文,后续每一轮都会把它当作既定事实使用。错误被"记住"了。

这也是为什么「让模型先勘误再用」比「让模型先猜再改」更可靠。


五、工程上怎么压:六层防线

幻觉不能消除,但可以用分层防御把危害压到可接受。从便宜到昂贵排列:

层 手段 成本 效果
1. 换问题 别问"是什么",让它从给定材料里找 极低 高
2. 给证据 把权威原文放进上下文(RAG) 低 高
3. 要引用 要求每句结论标注出处,"找不到就说找不到" 低 高
4. 要自检 让它先列结论,再逐条核对依据 中 中
5. 外部校验 用工具/代码/schema 校验输出 中 高(针对具体类型)
6. 评估回归 建评测集,改动前后对比(第 13 章) 高 长期最关键

第 1 层最值得先说清

"别问它知道什么,问它材料里写了什么" —— 这一个思维转变能消掉大部分幻觉。

❌ 差:"LangGraph 的 checkpointer 怎么用?"   → 它可能编
✅ 好:"根据下面这份文档,checkpointer 怎么用?【贴文档】" → 它只能引

代价是你要准备材料——而这正是 RAG(第 7 章)存在的意义。

第 3 层的关键在于"允许说不知道"

必须显式给模型"放弃"的出口。如果你只要求它回答,它就会编;如果你明确允许它说"材料中未提及",它编造的动机就下降了。

这不是玄学,而是因为「说不知道」在它的训练数据里也是被奖励的行为之一——你需要把它激活。


六、动手:五个幻觉高危场景的实测

理论说"越具体越容易编",这里是五个可以直接测的例子。

# 提问 预期幻觉形态
1 "某框架 v3.2.1 的 setTimeout 默认值是多少?" 编一个具体毫秒数
2 "给我 3 篇 2026 年关于 X 的论文" 编标题与作者(看起来很真)
3 "这个内部系统的 API 路径是什么?" 编一个符合命名习惯的路径
4 "为什么 X 比 Y 快 30%?" 顺着前提答,不质疑"30%"
5 "按 RFC 9999 的规定…" 编造条款内容

五个都能在 10 分钟内测出来,而且都能用同一种方式防住。

三种防法的效果对比

防法 对场景 1-3 对场景 4 对场景 5
贴材料再问 ✅ 有效 ⚠️ 部分 ✅ 有效
要求引用 ✅ 有效 ❌ 无效 ✅ 有效
允许说不知道 ✅ 有效 ⚠️ 部分 ✅ 有效
让它先质疑前提 —— ✅ 有效 ——

场景 4 需要特殊处理:显式要求"先检查问题中的前提是否成立"。

请先判断这个问题里的前提是否成立。
如果"X 比 Y 快 30%"这个前提无法确认,先指出这一点,再回答。

一个可复用的提示模板

只使用下面材料回答。
每条结论后标注来源片段编号。
材料中没有的内容,输出「材料中未提及」,不要推测。
如果问题中的前提与材料冲突,先指出冲突再回答。

材料:
{...}

这段模板能同时防住五个场景中的四个——剩下"前提错误"那一类,靠最后一句。


七、常见误区

误区一:换个更强的模型就能解决幻觉。
更强的模型幻觉更少,但不会归零,因为根源在机制。而且在细分领域,强模型的幻觉可能更"自信"。

误区二:幻觉就是"胡说八道",一眼能看出来。
恰恰相反。高价值幻觉的特征是完全合理、术语准确、结构整齐——它骗的就是有知识的人。

误区三:加了 RAG 就没有幻觉了。
RAG 只是给了它证据。它仍可能读错证据、张冠李戴、或把证据外的内容混进来。所以第 3 层(要引用)依然必要。

误区四:让模型"仔细一点""不要编造"就行。
口头要求效果有限。结构化的约束(必须引用、找不到就明说、输出必须通过 schema 校验) 才有效。

误区五:幻觉是概率问题,多试几次取共识就行。
多次采样能提高"多数正确"的概率,但如果模型在某个点上系统性错误,多试几次会得到一致地错。共识不能替代事实核查。


八、把防线画成图

flowchart TD
    A["提问"] --> B{"能否限定在给定材料内?"}
    B -->|能| C["RAG:先给证据再问"]
    B -->|不能| D["明确允许说'不知道'"]
    C --> E["要求逐句标注引用"]
    D --> E
    E --> F{"输出可否机器校验?"}
    F -->|能| G["schema / 代码 / 工具校验"]
    F -->|不能| H["人工抽查 + 评测回归"]
    G --> I["进入上下文"]
    H --> I
    I --> J["注意:错误会被后续轮次继承"]

关键在最后一句:幻觉一旦进入上下文,就会变成后续推理的"事实"。所以防线要放在"进上下文之前",而不是之后。


九、一个反直觉的结论:幻觉与"聪明"不相关

很多人以为"模型越强,幻觉越少"。部分正确,但有一个陷阱。

现象 原因
强模型在通用知识上幻觉更少 知识覆盖更全
强模型在细分领域可能更自信地编 它更擅长"生成像样的答案"
强模型更容易骗过评审 表述更流畅、结构更完整

第三条最危险:因为它意味着你的 LLM 评审器(13.2)也会被一起骗过。

实践含义:

不要用"看起来专业"作为质量信号。
要用"能不能在材料里找到依据"作为信号。

这也是 7.5 讲"归因"的原因——可追溯的答案才可信,而"流畅"从来不是可信的证据。

一个可落地的判断规则

如果一条结论无法指向某个具体来源(材料片段、工具结果、原文),
就把它当作「待核实」,不进最终产出。

这条规则可以做成流程:在生成最终答案前,先让模型为每条结论标注来源,标不出来的删掉或降级。


十、RAG 场景的幻觉:一个特例

加了 RAG 之后,幻觉不会消失,而是换了一种形态。

形态 表现 为什么
材料外扩展 材料说 A,它补了 A 的"原因" 模型倾向于把话说完整
张冠李戴 把材料 B 的内容归到 A 检索片段混在一起
过度概括 从一条特例推出普遍结论 归纳是模型的强项,也是编造源
引用错位 引用了真实片段,但结论不由它支持 引用只看"像不像"

第二种和第四种是 RAG 特有的,也最难发现——因为引用的片段确实存在。

检测方法:抽查 20 条答案,逐条核对"引用的片段是否真的支持这条结论"。这个检查常常能发现 10-20% 的问题。


十一、给你的项目的三条硬规则

# 规则 理由
1 结论必须可指向来源 无来源即待核实(第九节)
2 明确允许"未提及" 不给出口它就会编
3 具体数值一律外部校验 版本号、参数、价格最易编

第 3 条最实用:凡是"具体数字"类的输出,不要让模型直接给,而是让它调用工具查(或者由代码填)。


11、下一篇

幻觉是从"预测 Token"直接推出来的必然结果。那么另一个相关问题:既然模型每次输出都是从一个概率分布里抽样,这个抽样过程可不可以调?调了会怎样?

下一篇讲采样参数——温度、top-p 这些旋钮到底在控制什么,以及它们如何直接决定一个 Agent 的稳定性。

2.3 幻觉从哪来,什么时候必然发生
https://clxhxhhr.top/posts/4874/
作者
clxstart
发布于
2026-10-25
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。