先讲一个我亲历的小事故。
我让 AI 帮我查一笔订单的状态,顺手让它把相关的售后政策一起整理出来。它答得很流畅:订单存在、状态正常、政策是"七天内可无理由退换"。三句话,标点都对,排版比我还整齐。
结果订单根本不存在,政策是我自己编的那个——它把两段训练材料里的碎片揉成了一段似曾相识的制度,像《修仙小说》里那种"某某门规第七条",听着就很有出处,实际上没人写过。
这就是幻觉。多数人第一次撞上它的时候,都会下意识地给它扣一个"撒谎"的帽子。冤枉。它没在骗你,它在补全。
幻觉不是道德问题,是概率问题
把大模型想成一个坐在副驾上的老司机,脑子里装着关于这个世界的一切碎片:语料、帖子、论文、新闻、论坛吵架帖。每一刻它都在回答同一个问题——"接下来最顺的那个词是哪个"。它不是在"回忆",它是在"接龙"。
你问"退换货政策是什么",当训练语料里关于退换货的表述足够密集时,"七天内无理由退换"就是一个概率上极顺滑的接续。它不需要知道贵司的真实政策,它只需要知道"政策"这两个字后面通常接什么形状的句子。
所以幻觉的准确描述是:模型在缺乏确定性依据时,用统计意义上的"像"填补了事实上的"空"。不是恶意,是职业习惯——就像一个特别会写小说的人,你问他"张三是做什么的",他不会说"我不知道",他会给你编一个前半句刚好能接上的职业。
判断幻觉的可靠标志不是"它说得多自信",而是"它的措辞有多顺滑"。越顺滑的生成,越可能是补全;越磕绊、越啰嗦、越爱加"根据我的理解",反而越接近真实推理的痕迹。
反过来看那些煞有介事的行业报告也是一回事。厂商公布的幻觉率降到了某个小数点后两位,benchmark 上一片绿。用户拿去做客服,还是能一本正经地给你报一个不存在的退款条款。原因很简单:评测是在有明确答案的封闭题上做的,而真实工作是在开放题上做的。
幻觉的三个真实来源
一、训练数据的压缩幻觉。大模型把海量文本压进参数,压缩必然丢信息。凡是语料里稀疏、冷门、或者互相冲突的知识,模型学到的是"这些位置的中间地带"。你问它一个冷门 API 的边缘参数,它会给一个"看起来像那家厂商风格"的值——因为它见过一千个类似的,但没见过你这个具体的。
二、长上下文里的注意力稀释。上下文窗口从几千膨胀到几十万之后,一个反直觉的事实浮出水面:塞得越满,读得越不准。关键信息如果夹在一大段材料中间,模型捞出来的概率会明显下降——业内管这叫"迷失在中间"。你把一整本需求文档糊上去,然后在最后问"所以刚才第二段那个约束是什么",它有相当概率给你编一个自洽的版本。
三、指令被稀释与覆盖。同一个道理:系统提示写在最前面、用户要求写在最后面,中间的对话是重灾区。而且上下文越长,早期的指令"话语权"衰减得越厉害。这一条对做 Agent 的人杀伤最大——你精心设计的约束,被几十轮工具调用稀释成了"一句友好的建议"。
Prompt 心法:把"请不要编"换成"给我证据"
网上流传最广的一条幻觉对策是"请不要编造信息"。这句话的问题在于:它是一句请求,而不是一条机制。模型仍然在没有依据时输出一个词,只是那个词换成了"我不会编造"。幻觉没被消除,只是被包装了一下,你更难发现。
真正有效的做法是改变任务的性质——不要问"你知道什么",要问"你凭什么这么说"。以下是几条我在实际工作里验证过的做法。
1. 强制引用原文片段。与其说"基于以下材料回答问题",不如说"回答时必须逐句附上所依据的原文片段,用 <引文> 标签标出;找不到依据的问题,回答'材料中无依据'。"这一条把任务从"生成"变成了"抽取",幻觉率会断崖式下降——因为抽取任务里,模型没有凭空生成的空间。
2. 要求先列事实,再给结论。让模型分三段输出:已知事实 / 存疑项 / 结论。顺序别搞反,如果先给结论,模型会在结论的惯性下编造论据支撑它。让它先摊开已知材料,缺口会自己暴露出来。
3. 把"我不知道"写进规则,并且给它一个体面的出口。不是"不知道就说不知道"这种祈使句,而是给一个具体的、格式化的出口:比如"若信息不足,请输出 [需要补充:xxx] 并停止"。一句抽象的"可以说不知道",往往会被模型的"完成任务"倾向盖过去;一个具体的填空格式,反而更容易被遵守——因为它更像一个待办事项,而不是一种示弱。
4. 给工具,而不是靠记忆。能用 grep 的事就别用脑补。让模型自己去检索日志、查数据库、翻文档,然后把检索结果当证据引用。这一条最朴素也最有效:幻觉的根源是"没有来源还想说话",那你给它来源就行了。
5. 长上下文的夹心法。如果你的提示词很长,把最关键的约束同时放在最开头和最结尾,不要只放中间。上下文越长,这个操作收益越明显——这算是对"迷失在中间"最省事的对冲。
6. 让它自评,但别信它的自评。让模型检查自己的回答有没有依据,通常有效;但让它自评"我有多确定",那是纯表演——它对自身置信度的感知几乎没有校准。所以:置信度别问模型,问证据链。
一个我常用的模板,供参考:
任务:基于 <材料> 回答 <问题>。
输出格式:
【事实】每条事实后用 [来源: 原文片段] 标注
【存疑】材料中无依据但你倾向于给出的答案,标注 [无依据]
【结论】仅基于【事实】得出,不得引入【存疑】内容
约束:
- 若【事实】为空,直接输出"材料中无依据"
- 不得使用材料之外的任何信息,包括你的先验知识
- 若问题含多个子问题,逐个独立作答,不要合并
把这套东西塞进系统提示,你会得到一个啰嗦很多、但可靠很多的模型。啰嗦是代价,像体检报告一样不好看,但你能拿它去跟人扯皮。
行业趋势:所有人都在治理幻觉,只有用户在裸奔
这两年 AI 落地的路径高度趋同:先把模型接进来,再被幻觉坑一轮,然后补一套检索、一套引用、一套校验。这套流程叫 RAG 加护栏,叫 Agent 加防护栏,叫工作流加确定性节点——名字换着来,干的是同一件事:把不确定性圈进笼子里。
趋势本身是健康的,模型能力在涨,但"输出即垃圾"的默认状态没变,于是工程手段在前面挡着。但问题在于,这套笼子往往是在"付费用户"那边搭得最结实——大厂的客服有全套护栏,你在自己的项目里对着一个裸 API 调参数。
我的判断很直接:模型能力的提升会持续,而"幻觉治理"最终会退化成两类工作——一类是模型厂商在推理层内建的约束,另一类是使用方在业务层沉淀的模板和校验。前者越来越强,后者永远不会标准化,因为每个场景的"什么算事实"都不一样。所以真正值钱的能力,不是会写 Prompt,是能判断一件事该不该由模型来说。
顺带吐槽一句现在流行的"AI 会议纪要"。它把我的沉默自动总结成了"对方案表示认可",把我的犹豫总结成了"倾向保守"。整份纪要读下来,除了我的名字,其他全是虚构。这类产品的卖点是"省下整理的时间",实际上省下的是你纠正它的时间——一比一,没省。
一个自测清单
下次准备把 AI 的输出直接往外发之前,花三十秒扫一遍:
• 这句话后面有没有可追溯的来源?没有来源还能不能查证?
• 模型给的是"抽取"还是"生成"?如果材料里根本没有这个信息,它为什么还能答?
• 有没有那种"太顺滑"的段落?顺滑到像从别人嘴里听过的标准话术。
• 数字、日期、版本号、接口名——这些是幻觉的重灾区,一个都不要放过。
• 如果它答错了,代价由谁承担?如果答案会直接对外,那就不能只靠模型自觉。
最后一条才是关键:幻觉从来不是靠提示词根治的,是靠责任边界根治的。当一段输出需要有人签字,画一条线只让它负责画线以内的事,剩下的靠检索、靠校验、靠人去拍板。工具可以把活干到九成,那最后一成必须留给人——这部分省不掉,也不该省。
AI 会越来越会说话,说得像真的那部分也会越来越难分辨。所以真正该练的不是"怎么让它答得更好",而是"怎么让它别替你说那些你没法验证的话"。这两件事,前者是技巧,后者是本事。