LLM 为什么会说出不符合事实的话
LLM (大语言模型) 并不是查证事实后作答,而是选择作为后续可能出现的词来组成句子。因此,即使是不知道或记忆模糊的事,它也会用自信的语气编出煞有介事的回答。这叫作幻觉。
幻觉无论换模型还是改设置都不会消失。能做的是采用不容易引发它的提问方式,以及发现已经出现的错误。了解容易发生的场景,就知道该确认哪里,确认的精力也会减少。
本文依次说明产生的机制、容易发生的场景、4 项对策,以及如何看懂基准测试的准确性。
预测下一个词的机制会产生错误
LLM 阅读大量文本,学习某个词之后容易出现哪个词。句子的形式和措辞因为反复出现,所以能正确学会。另一方面,像某个人的生日这样只出现一两次的事实,区分正确答案与错误答案的线索很少。
2025 年的一篇论文论证,在无法区分正确句子与错误句子时,错误在统计上是无法避免的。而且,很多评测在答案正确时给分,回答不知道则给 0 分。在这种评分下,靠猜作答分数更高,所以模型被培养成不知道时也会作答。
也就是说,煞有介事的错误与其说是构造上的缺陷,不如说是从学习方式和被评测的方式中自然产生的。要记住语气的自信并不代表答案的正确。
容易发生的场景在哪里
容易出错的,是无法从句子形式判断正确与否、不记得事实本身就答不出的部分。
- 专有名词:人名、公司名、商品名、地名
- 数字:日期、金额、比例、统计数值
- 引用:书和论文的标题、法规条文、URL
- 新的事件:训练数据截止日期之后的事
- 细节性的专业内容:在面向大众的文章中很少出现的知识
引用尤其危险。它有时会以像模像样的形式编出并不存在的论文标题或条文编号。另一方面,在文章的摘要、改写和结构建议这类不依赖事实正确性的工作中,错误的危害较小。要先分辨出委托的工作中哪些部分依赖事实。
减少幻觉的 4 项对策
对策有以下 4 项。组合得越多错误越少,但不会降到零。
- 让它给出出处:让它为每个主张标出依据的出处或引文,撤回找不到依据的主张
- 提供资料:提供作为回答依据的文档,并要求只用这份资料作答。检索资料并提供给模型的机制叫作 RAG
- 不知道时让它直说:在指令中写上“资料里没有的内容,可以回答不知道”
- 由人确认:专有名词、数字和引用,要打开原始资料确认
Anthropic 也建议告诉模型可以回答不知道,并让它为每个主张给出佐证的引文。把同一个问题问几次,找出回答互相矛盾的部分,也是发现错误的线索。
例如询问公司内部的规章时,就贴上规章文档,并写明“只用这份文档作答。文档里没有的内容,回答不知道。把作为回答依据的句子从文档中原样引用附上”。附有引文的话,确认时只要打开引文的位置就行。
在法律、医疗和税务这类错误危害很大的问题上,LLM 的回答只作为查资料的入口,最后要找专家或官方资料确认。Anthropic 也写明重要的信息一定要确认。
如何看懂基准测试的准确性
基准测试 (用共同的题目来测量的考试) 的正确率,是答对的题目所占的比例。回答不知道的题目和答错的题目,多数情况下同样算作失误。按这种算法,越爱靠猜的模型正确率越容易上升。
在事实正确性很重要的工作中,不仅要看正确率,也要看答错的比例。也有把回答分类评分的基准测试。例如 2024 年公开的 SimpleQA,把对简短事实问题的回答分为答对、答错和未作答 3 类来评分。正确率相同的话,答错比例低的一方,是确认精力更少的模型。
用途页面的评价并没有直接测量不符合事实的回答有多少。要在自己的工作中确认,就准备 10 个左右知道答案的问题,分别数出错误的数量和回答“不知道”的数量。
总结 - 只确认依赖事实的部分
幻觉产生于预测下一个词的机制,以及让靠猜占便宜的评测。它无法消除,所以要分辨出专有名词、数字、引用和新事件这类容易出错的部分来确认。使用回答前给依赖事实的部分做上记号,只用原始资料确认这些部分,比重新查证全文省力。
对策是给出出处、提供资料、让它说不知道、由人确认这 4 项。如果常用提供资料让它作答的方式,就到读取文档并作答的页面确认长文档阅读理解的评价。