如何评估大模型的幻觉与事实性?常见指标有哪些局限?
简化版
幻觉评估要把回复拆成可核验的原子声明,再判断每条是否被给定证据或权威来源支持,分别统计事实精确率、覆盖率、不可验证比例。TruthfulQA、FActScore、NLI、LLM Judge 各自只覆盖部分问题,不能用单个总分代表所有领域的事实错误。核心认知:幻觉评估不是”整段看起来像不像真的”,而是”声明拆开、证据对齐、逐条验证”。
详细版
事实性至少两类:内在一致性(回答不违背给定上下文)、外在事实性(声明符合现实世界可靠来源)。摘要、RAG、开放问答的证据边界不同,要分别设计评测。
长答案按原子事实拆分:支持的声明数 ÷ 可核验声明数 = 类似事实精确率;同时测答案是否遗漏关键事实。自动核验依赖检索召回、证据质量、Judge 能力——检索不到 ≠ 一定是错的。
完整版教学
一、先给幻觉分类(别泛指”错误”)
「幻觉」常被泛指任何错误,但工程评估要分类才能定位根因:
| 类型 | 例子 | 根因可能在 |
|---|---|---|
| 与上下文矛盾 | 材料说 A,答成 B | 生成/忠实度 |
| 无证据添加 | 编了材料里没有的细节 | 语言先验 |
| 现实事实错误 | 违背世界事实 | 模型知识 |
| 错误引用 | 引了不支持结论的来源 | 检索/生成 |
| 数字错误 | 算错或编数字 | 推理 |
| 不当确定性 | 不确定的事说得很肯定 | 校准 |
分类后才知道该调检索、Prompt、模型知识还是生成策略。
二、原子事实方法(FActScore 类,带计算)
一段长回答含多个声明,整段只给对错会丢细节。原子化方法:
回答拆成最小可独立验证的事实:
声明1:"爱因斯坦生于 1879 年" → 检索证据 → 支持 ✓
声明2:"他发明了晶体管" → 检索证据 → 不支持 ✗
声明3:"他获得诺贝尔奖" → 支持 ✓
事实精确率 = 支持数 / 可核验声明数 = 2/3 ≈ 0.67
注意:原子化和证据判定本身也会出错,需要抽样人工核验。
三、常见数据集与指标的局限
TruthfulQA:关注"会诱发人类常见错误观念"的问题(测模型是否模仿错误说法)
⚠️ 它不是通用知识覆盖测试,分高不代表全知识域可靠
摘要任务:用事实一致性分类器(内在一致性)
RAG:测回答声明是否由检索上下文支持
引用任务:测引文是否真的蕴含对应结论
关键:不同指标的分母和任务定义不同,分数不能直接混合(TruthfulQA 的分和 FActScore 的分不是一回事)。
四、自动评分的风险
NLI 模型:可能不懂领域事实
LLM Judge:受表达风格、错误参考答案、候选中的提示注入影响
检索式核验:会把搜索引擎的偏差带进评估
→ 高风险领域用权威资料 + 专家复核,记录证据版本和访问时间
五、必须同时测有用性(否则”拒答刷分”)
一个隐蔽陷阱:让模型全部回答”不知道”,事实错误率能刷到很低,但完全没用。所以要同时测:
事实精确率(答对的比例)+ 覆盖率(该答的答了没)
+ 正确拒答(该拒的拒了)+ 过度拒答(能答的误拒了)
并按【问题是否可回答】分组
只看事实精确率会奖励「什么都不敢答」的无用模型。
六、常见误区与追问
- 误区:幻觉评估看整段像不像真的。 要拆成原子声明逐条对齐证据验证,不是看整体观感。
- 误区:一个事实性分数能代表所有领域。 TruthfulQA/FActScore 各覆盖部分,分母和任务不同不能混合。
- 误区:只看事实精确率就够。 全答”不知道”也能刷低错误率,要同时测覆盖率和过度拒答。
- 误区:检索不到就判为错。 检索召回有限,检索不到不等于事实错误,要区分”不可验证”。
- 误区:TruthfulQA 分高=知识全面可靠。 它专测”是否模仿人类错误观念”,不是通用知识覆盖。
- 追问:事实性分哪两类? 内在一致性(不违背给定上下文)、外在事实性(符合现实权威来源)。
- 追问:FActScore 怎么算? 拆原子事实、逐条检索判定支持、支持数/可核验数(如 2/3≈0.67)。
- 追问:为什么要同时测有用性? 否则全拒答就能刷低幻觉率,要配覆盖率和过度拒答,按可否回答分组。
七、加强记忆
幻觉评估记「声明拆开、证据对齐、逐条验证」,不是「整段像不像真的」:先分类(上下文矛盾/无证据添加/事实错/错误引用/数字错/不当确定性)、原子事实方法算事实精确率(支持数/可核验数)、同时测覆盖率和过度拒答(否则全拒答刷分)。核心局限钉死:不同指标(TruthfulQA/FActScore)分母任务不同不可混合、TruthfulQA 测的是”模仿人类错误观念”非通用知识、检索不到≠错、自动评分有偏要人工校准。高风险领域用权威资料+专家复核。