一、最好的史官,出了一段假史

国史馆里,论才情,没人比得上何太史。

何太史大名何敏行,三十四岁入史馆,四十二岁升太史。他修过《世宗实录》,主编过《皇朝通典》,经手的文稿摞起来比他本人还高两头。同僚们说:"何太史写的人物列传——你读着就觉着这人好像刚从你面前走过去。"

但偏偏就是在人物列传上,何太史出过一次大错。

去年国史馆重修《文宗实录》。何太史负责写六位大臣的列传。其中一位叫盛文昭——做过一任礼部侍郎,不算很有名。何太史洋洋洒洒写了三千字。写了他哪年科举、哪年中进士、哪年上过一道著名的"请罢矿监"折子——写得绘声绘色,从殿上对答到同僚侧目都写了。

稿子送到总纂官案头。总纂官姓陈,是个以"龟毛"闻名的老学究——一个年份前后差半年他都能跟你较三天劲。

陈总纂翻完何太史的盛文昭传,没批字。过了三天,他把一沓文牍放在何太史桌上。

"你写'盛文昭于隆庆三年上《请罢矿监疏》'——我查了隆庆三年所有的奏疏档,没有。"

何太史接过文牍,翻了一遍。确实没有。

"那可能年份记错了——"

"不急。"陈总纂再推过来一沓文牍,"我查了盛文昭从隆庆元年到万历十年所有的行状和墓志——此人在礼部任上从未就矿监一事上过任何奏疏。矿监这回事,盛文昭一辈子就没碰过。"

何太史的脸白了。

"你再看看你自己写的《世宗实录·盛文昭传》。"陈总纂从架上抽出另一本书,"八年前你写的初版。里面没有矿监这回事。"

何太史翻开自己写的旧稿。确实没有。

三千字的列传——写了一个不存在的事件,引了一篇不存在的奏疏,描绘了一场不存在的朝堂辩论。

而写下这一切的,是国史馆最有才情的笔。

二、它不是在说真话——它在说像真话的话

出事的第二天,何太史把自己关在屋里,把那份假列传从头到尾重新看了一遍。

写法没有任何问题。结构、辞章、典故、语气——一个字都没有错。它完全"读起来像真的"。

读起来像真的——可它不是。

他又翻了另一样东西——那天写这份稿子时的草稿。他有一个习惯——下笔之前先列几个要点。草稿上第一行写的是:"盛文昭,万历初年礼部侍郎。此人资料不多。"

"资料不多"——这四个字,是关键。

"资料不多的时候,我干了什么?"何太史对着自己的草稿在想。他没有凭空想象。但他做了另一件事——把"同时期其他礼部官员经常做的事"填了进去。万历初年,礼部好几个侍郎都上过折子反对矿监——他把这个背景当成了盛文昭的履历。不是故意编造——是他的脑子里,把一群人的共同经历,不知不觉贴到了一个人身上。

陈总纂来找他喝茶。

"老何,我核了你近几年写的列传。不光盛文昭——其他五个冷门人物,至少也有三个,多多少少都有类似的问题。不是大错——把同时期另一人做的某事塞到了传主头上、移了一年的时间、换了一个地名。每个单独看,都不起眼。"

"但拿这种稿本面世——一年之后别人转引了,就没人分得清哪些是你查过的、哪些是你自己也不知道从哪冒出来的。"

何太史放下茶杯:"我写盛文昭那三千字的时候——每一句在我脑子里都是顺的。我下笔的时候没觉得有任何不对劲。"

陈总纂点头。

"这才是要命的。你错得越自信,将来害的人越多。"

三、信手拈来的地方,最不可信

陈总纂做了一个决定——在国史馆设了一个从来没有过的职位:核史官。

不是一个。是十个——专门核对史馆稿件中的每一个"可核查的事实陈述"。哪个年份、哪条奏疏、哪个人名、哪个地名、哪个数字——只要有原始档案可查,一律翻档案对。

头一个月,核出了四百多处错。不是何太史一个人的——整个史馆的人都有。最擅写战史的武太史,核出了三十七处——全是战争的兵员数字。不是说错——是前后不一致。同一个战役的同一个数字,在这篇里用了三万人,在那篇里用了三万两千——差距不大,但在史书上差两千人可能差的是一路的胜负。

武太史被核出来的时候很不高兴。"差两千人算什么大事?战场上本来就没个准数。"

"两千人算不算大事我不管,"陈总纂说,"但你用了两个不同的数,同时又都没有出处。这两个数从哪儿来的?你写的时候到底看没看档?"

武太史憋了一会儿:"三万这个数——是写的时候脑子里蹦出来的。三万二这个——可能是后来查过的。"

"那你为什么不把查过的写进两篇?"

武太史答不上来。因为他写第一篇的时候觉得"我记性好,不用查"。等他后来真去查了——发现错了——但没回头改第一篇。

核史官们发现了三个规律。

第一,错误最集中的地方——是史官自己觉得"太熟了,不用查"的地方。"太熟了"往往意味着"我大概知道,细节不一定"。而细节,才是最要命的地方。

第二,错误最隐蔽的地方——是史官在描述"一群人里的某一个人"的时候。群体特征会被不知不觉地当成个人履历。盛文昭就是这样掉的坑——他周围的人都上了矿监折子,他就被"平均"成了也上过。

第三,错误最多的作者——不是那些新手。是那些最有经验的、下笔最快的、文采最飞扬的老史官。不是新人不出错——是新人出错了你能一眼看出来。老手出的错,裹在漂亮的句子和圆融的逻辑里——不核死它,它就像真的。

四、放过去不是因为它对,是因为没人核

何太史被核了三个月。核了改,改了核——核到核史官手头的"待核清单"上他的条目从四十条降到三条降到一条,最后归零。

三个月后的何太史,写东西变慢了。可他写出来的东西——每一句话,都多了两行小字:"出处:文宗实录卷六十二"、"出处:盛氏家谱·世系考"。

"你以前写东西像飞,"陈总纂翻着他的新稿子,"现在一步一步走。"

"以前是信手拈来。现在是如履薄冰。"

何太史放下笔:"但至少不会再写一篇三千字的假列传了。"

那年国史馆出了一本《核史则例》——把核史官一年的经验写成了十条规矩。第一页第一行是:

凡立一传、记一事、引一言——必有出处。无出处者,宁删勿存。

第二条——

愈熟之事,愈当核。盖熟者易疏,疏则生错。

第七条——

文采佳、下笔疾者,其稿尤当细核。盖疾者多凭记忆,记忆者,不可尽信。

《核史则例》印出来那天,陈总纂坐在院子里翻了一下午。何太史走过来,看到他在翻最后一页。

"老陈,核史官这个职位——以前为什么从来没人想过?"

陈总纂把书合上。

"因为以前大家都是这么写的——凭记忆、凭印象、凭'我记得好像是这样'。放过去了,从来不是因为对了——是因为没人去核。有人去核了,才知道过去放过去的东西,有多少是经不起推敲的。"

何太史望着院子里的银杏树,一片叶子正往下掉。

"所以核史官不是在查错——是在给每一个'放过去了'的东西,补上那道本应有人过的关。"

"对。而且这道关永远过不完。"

何太史回过头:"那怎么办?"

陈总纂也站起来,看着同一片叶子落地。

"天底下没有不出错的笔。但有一件事可以做得比笔好——知道自己什么时候可能出错,并且在那个时刻,把手里的稿子,再核一遍。"

技术解读

幻觉(Hallucination)是大语言模型从诞生之日起就与之共存——且至今无法根除的核心问题。早在 GPT-3(Brown et al., 2020)时代,研究者就注意到:模型在知识空白处不是"说不知道",而是倾向于"生成听起来合理但不真实的内容"。2023 年,Ji 等人在《Survey of Hallucination in Natural Language Generation》中系统回顾了幻觉的分类、成因与缓解策略。

幻觉的根源深植于自回归语言模型的训练范式本身——模型的唯一目标是最大化训练数据的似然估计 P(text | corpus)。它没有"这句话是否真实"的显式信号,它学会的只是"在给定的上文之后,哪些词最常出现"。在一个概率的世界里,"听起来像真的"和"真的是真的"在 loss 函数上没有区别——两者都是高概率的 token 序列。这是幻觉的数学根源。

核心概念回顾

概念 通俗解释
幻觉(Hallucination) 模型生成了语法正确、逻辑通顺、但与事实不符的内容——且通常以高度自信的语气表述
内在幻觉(Intrinsic Hallucination) 生成的内容与给定上下文(如 prompt 中的信息)直接矛盾——模型无视了眼前的信息
外在幻觉(Extrinsic Hallucination) 生成的内容无法从给定上下文中验证,且与外部事实不符——模型在"编造"知识
高熵状态(High-Entropy States) 当模型对下一个 token 不确定(多个备选概率接近)时,更容易产生幻觉——因为这恰好是"不确定性最高"的时刻
统计规律 vs 事实知识 语言模型学的是"词与词的共现概率",不是"事实的真假"。这两者高度相关,但并不等价
长尾信息幻觉 对于训练数据中出现频率极低的知识(如偏门人物、模糊日期),模型更容易出错——因为统计信号太弱
自信与准确度的脱节 模型对其输出的置信度(token 概率)往往与其事实准确性几乎无关——即"错得越离谱,说得越笃定"是完全可能的
知识冲突 模型的参数记忆与外部检索到的信息或 prompt 中的事实约束发生冲突时,模型优先信任参数记忆
主动拒答(Refusal / Abstention) 教模型在不确定时说"我不知道"——这是缓解幻觉的一线方法,但过度拒答会影响有用性
事实一致性检查(Factual Consistency Check) 用检索或另一个模型交叉验证模型生成的"事实陈述"是否能在外部来源中得到确认

故事中的隐喻对照

故事元素 映射的技术概念 解释
何太史(才情最高、文采飞扬) 高能力但不可靠的 LLM 模型越强,其幻觉越难被发现——因为包装在流畅的文笔和合理的逻辑中
盛文昭的三千字假列传 外在幻觉 生成了一个完全不存在的、但读起来合理且文笔优美的事件描述
"资料不多"(触发幻觉的条件) 长尾信息的统计信号弱 冷门人物/事件在训练数据中出现极少——模型没有足够信息但仍要完成生成,只好"脑补"
把同期礼部官员的集体经历贴到个体身上 统计泛化的误用 语言模型学到的是"这类文章中常见的模式"——它把群体统计规律当成个体事实来输出
核史官(十个人核对每一条事实陈述) 事实一致性检查 / 自动核查管道 系统地检验输出中每条可核查事实是否与外部来源一致
"四百多处错"——整个史馆都有 幻觉的普遍性 所有 LLM 都会产生幻觉——这不是某个特定模型的缺陷,是自回归语言建模范式的固有局限
"脑子里蹦出来的数"vs"后来查过的数" 参数记忆 vs 检索验证 快回答靠记忆(容易出现幻觉),经过检索验证后更正——但"懒"的时候就直接凭记忆说了
"太熟了就不用查"的地方错最多 高频信息的幻觉 高频知识不一定不出错——"太熟了"意味着模型在快速生成模式下,缺少验证步骤就输出了"直觉答案"
"错在自信——下笔的时候没觉得有任何不对劲" 置信度与实际准确度的脱节 模型对其输出的 token 层级概率可能与事实准确性高度无关——流畅的文本可以全都是编的
《核史则例》十条规矩 幻觉缓解策略体系(如 retrieval-augmented verification、输出结构约束、不确定性标注) 把幻觉缓解工程化——从特例变成系统性的规范与流程
"无出处者,宁删勿存" 拒答(Abstention)与引用溯源 没有可信来源的陈述就不应输出——宁可少说,也不说错的
何太史三个月后——每句话加了两行出处小字 带引用的生成 / RAG 验证 经过了系统性核查流程的模型,输出从"自信发言"变成了"有据可查的回答"
"以前放过去不是因为对了——是没人核" 基准测试幻觉的低估 传统 NLP 基准测的是流畅度和表面相关性,测不出"这句话是不是事实"——幻觉在历史中一直被低估

为什么这个故事对应 LLM 幻觉?

  1. 自回归 LM 的数学本质决定了"流畅≠真实"。 交叉熵损失函数衡量 P(下一个词 | 上文) 和真实分布的差距——它不衡量"这句话和世界事实是否一致"。在训练中,一个精心虚构的句子("隆庆三年盛文昭上矿监疏")和一句真话("盛文昭历任礼部郎中、侍郎")在 loss 上可能几乎没有差别——因为在文本表面,它们都是"合理的中文句子"。这就是幻觉的数学根源。

  2. 长尾知识是高幻觉区域。 盛文昭的资料在训练数据中极少出现——模型处于"需要完成生成但又没有足够信息"的状态。"资料不多"对应训练数据中相关 token 窗口的稀疏性——统计信号极弱,任何模式的波动都可能导致错的输出。

  3. 群体验特征与个体事实的混淆。 "万历初年礼部官员上矿监折子"是训练数据中的一个高概率模式。模型在生成盛文昭的传记时,会基于"礼部侍郎 → 大概率上过矿监折子"的统计关联自动完成——而不是基于 "盛文昭本人确实没有上过"。这是幻觉的另一种常见成因:用群体的常态推断个体的史实。

  4. "自信是最大的敌人"——置信度校准的失败。 何太史写假列传时"没觉得有任何不对劲"——这正是 LLM 幻觉的最可怕之处:模型对错误输出的"自信"程度和它对正确输出的自信程度几乎没有可区分的差异。标准的 token 概率无法充当"这句话是不是事实"的可靠信号。

  5. 系统性的核验是缓解幻觉的工程方向。 核史官对应了事实一致性检查管道:Retrieval-Augmented Verification(用检索验证生成的事实)、LLM-as-a-Judge(用一个独立的模型检查另一个模型的输出)、不确定性标注(标记不可验证的部分让用户判断)。"核史官不是在查错——是在补那道本应有人过的关"。

  6. "这道关永远过不完"——幻觉无法根除。 这是 LLM 研究和应用中最清醒的共识。任何基于概率的语言模型都无法 100% 排除幻觉——因为"真实"不是语言模型的损失函数。我们能做的是:降低幻觉频率、标注不确定性、提供引用溯源、在关键场景中引入人工审核。

后记:幻觉是 LLM 最脆弱也最诚实的一面镜子——它照出了"预测下一个词"与"说出事实真相"之间的那条鸿沟。何太史用他的三千字假列传换来了一个教训:自信不是凭证,流畅不是真相。国史馆的核史官们从此以后每天都在翻档案——不是因为他们不相信史官的才情,而是因为他们终于理解了:才情编得出最美好的故事,核验撑得起最卑微的事实。而历史,归根到底,是一堆经得起核验的事实垒起来的。 银杏叶落了又长,核史官的灯亮了一夜又一夜。天底下不出错的笔还没有出现,但现在至少有人在看着——每一句说出去的话,是不是真有那一页泛黄的档案在底下垫着。