幻觉是大模型落地过程中绕不开的一道坎。模型可以流畅地回答问题,却可能编造出不存在的文献、错误的药物剂量或者根本不存在的API接口。要治理幻觉,第一步是能够客观地测量它,而这恰恰是最容易被忽视的环节。不少团队只在一个通用问答数据集上跑个准确率就下结论,结果模型换到医疗、法律或者代码场景后幻觉率飙升。这篇文章围绕多领域幻觉基准展开,聊聊为什么需要广覆盖的评测体系,以及如何搭建一套属于自己的评测流程。

为什么单一领域的幻觉评测远远不够
幻觉的表现形式高度依赖领域。在开放域闲聊中,模型编造一个名人的轶事,危害可能微乎其微;但在医疗问答里,把药物剂量说错一个数量级就是严重事故。不同领域对事实性、精确性、可验证性的要求完全不同,一套基准想包打天下基本不可能。
从技术角度看,幻觉大致分为两类:事实性幻觉指模型输出与已确立的世界知识相矛盾,比如声称某位科学家获得了他从未获得的奖项;忠实性幻觉则指输出偏离了给定的上下文,比如在摘要任务中捏造原文没有的信息。这两类幻觉在不同领域的占比差异很大。代码生成场景中,忠实性幻觉(调用不存在的库函数)占大头;而在百科问答中,事实性幻觉更常见。如果评测集只覆盖某一类任务,得出的结论会严重偏颇。
还有一个现实原因:模型在不同领域上的知识密度不均匀。预训练语料中代码和百科内容占比高,模型在这些领域表现相对好;而小语种法律条文、罕见病的医学文献覆盖稀疏,幻觉自然更严重。多领域基准能够暴露这种不均衡,帮助定位模型的短板到底在哪里,而不是被平均分掩盖。
主流多领域幻觉基准盘点
目前学术界和工业界已经提出了不少幻觉评测基准,下面挑选几个有代表性的做对比说明。
| 基准名称 | 覆盖领域 | 评测方式 | 特点 |
|---|---|---|---|
| TruthfulQA | 通用常识、常见误解 | 人工标注+模型判分 | 专测对抗性误导问题 |
| HaluEval | 问答、摘要、对话、知识图谱 | 幻觉样本判别 | 大规模自动构造正负样本 |
| FActScore | 人物传记等长文本 | 原子事实分解打分 | 将生成内容拆成原子事实逐一核查 |
| SimpleQA | 跨领域短事实问答 | 与参考答案比对 | 考察事实密度与拒绝回答能力 |
| HumanEval-X | 多语言代码生成 | 单元测试通过率 | 通过可执行测试间接衡量幻觉 |
可以看到,这些基准的评测思路差异很大。HaluEval采用判别式思路,给模型一个正确答案和一个掺入幻觉的答案,看它能否分辨;FActScore则走生成式核查路线,把长回答拆解成一条条原子事实,再逐条与知识库比对,最后统计准确事实的占比。两种方法各有优劣:判别式评测成本低、可大规模扩展,但不能直接反映模型生成时的幻觉率;原子事实分解更精细,但依赖高质量知识库,且拆解本身可能引入噪声。
实际选型时建议组合使用。用HaluEval这类判别式基准快速筛选模型版本,用FActScore这类细粒度基准做深度分析,再叠加垂直领域的自建评测集。以医疗场景为例,可以基于临床指南构造问答对,把模型输出中与指南矛盾的部分标记为幻觉样本,长期积累下来就是一笔很有价值的领域评测资产。
如何搭建自己的多领域幻觉评测流程
开源基准再全,也替代不了贴合自身业务的评测集。搭建多领域幻觉评测流程,核心是三步:领域定义、样本构造、指标设计。
首先是领域定义。不要按学科分类去划,而是按业务风险等级划。比如做智能客服,可以把领域分成产品参数咨询、订单状态查询、政策解释、闲聊四类,前三类对事实性要求高,权重应该设置得更重。领域之间的边界要在文档里写清楚,标注人员才不会各标各的。
其次是样本构造。一个实用的技巧是同时准备可回答问题和不可回答问题。可回答问题用于测幻觉率,不可回答问题用于测模型是否会老实承认不知道。后一点经常被忽略,但实践中大量幻觉恰恰发生在模型被问到知识边界之外的问题时。下面是一段简单的评测样本组织示例:
import json
# 多领域评测样本结构示例
eval_samples = [
{
"domain": "medical",
"question": "成人布洛芬单次最大剂量是多少?",
"reference": "非处方使用单次不超过400mg,24小时不超过1200mg",
"answerable": True
},
{
"domain": "law",
"question": "2023年某市二手房交易印花税税率是多少?",
"reference": None, # 知识库中无此条目,考察拒绝回答能力
"answerable": False
}
]
def score_hallucination(answer, sample):
if not sample["answerable"]:
# 不可回答问题:回答了不知道/无法确认即得分
refuse_keywords = ["无法确认", "没有相关", "不知道"]
return any(k in answer for k in refuse_keywords)
# 可回答问题:与参考答案矛盾即记为幻觉,实际可用LLM裁判
return check_consistency(answer, sample["reference"])
最后是指标设计。单一的整体幻觉率不够用,建议按领域分别统计,并区分严重程度。同样是幻觉,把营业时间说错半小时和把手术禁忌症说反了,严重性完全不同。可以设计三级标注:轻微偏差、明显错误、严重有害,分别加权计算。同时建议引入拒答率作为辅助指标,如果模型为了压低幻觉率而频繁拒答,用户体验会明显下降,这两个指标需要放在一起看才能反映真实水平。
从评测到治理:基准如何指导幻觉缓解
评测的价值不在于给模型打分,而在于定位问题并指导改进。多领域基准的细分报告能直接告诉你该用哪种缓解手段。
如果报告显示事实性幻觉集中在长尾知识,检索增强生成(RAG)通常是最划算的方案。把模型的回答从依赖参数化记忆改为依赖检索到的文档,配合忠实性校验环节,能显著降低事实错误。如果幻觉集中在指令遵循环节,比如模型无视上下文自行发挥,那么针对性微调或调整系统提示词的效果会更好。如果不可回答问题的测试显示模型从不拒答,就需要在训练数据或提示中加入承认未知的能力引导。
值得强调的是,缓解手段上线后必须回到同一套基准上复测,形成评测、改进、复测的闭环。RAG可能压低了事实性幻觉,却因为检索片段噪声引入了新的忠实性问题;微调可能降低了医疗领域的幻觉,却让代码领域表现退化。只有多领域的持续追踪才能发现这类此消彼长的隐性变化。建议每次模型迭代都保留完整的分领域评测报告,建立趋势看板,这比任何单次的绝对分数都有参考价值。
总的来说,治理幻觉没有一劳永逸的银弹,多领域基准提供的正是一张持续可用的地图。地图画得越细,绕开陷阱的把握就越大。