幻觉抑制的事实核查机制怎么做

话题来源: RAG系统优化全攻略:从召回率提升到幻觉抑制的7个技巧

大模型的幻觉并不是“胡说八道”这么简单。更准确地说,它是在证据不足、证据冲突或提示诱导下生成了看似合理但不可验证的内容。要压住这类问题,事实核查机制不能只靠一句“请基于资料回答”,而要把生成结果拆成可审计的事实单元,再逐条和证据源对齐。真正有效的方案,更像一条质检流水线。

核查对象:不要查整段,要查“事实声明”

很多团队犯的第一个错误,是把模型完整回答丢给另一个模型,让它判断“是否正确”。这太粗。一个回答里可能有定义、时间、数字、因果关系、建议条件,混在一起检查,误判率很高。

更稳妥的做法是做 claim extraction,把回答拆成原子事实:

  • “某政策于2023年发布”
  • “该政策适用于小微企业”
  • “申请材料包括营业执照和纳税记录”
  • “办理周期通常为5个工作日”

每一条都应能被独立验证。Google Research 在关于事实一致性评估的研究中也反复强调,claim 级别评估比段落级评估更接近人工审校逻辑。说白了,别问“这篇答案可靠吗”,要问“这句话有没有证据”。

证据检索:给每条声明找出处

事实核查的第二步不是让模型再想一遍,而是重新检索。这里建议采用“声明驱动检索”,即用每条 claim 作为查询,而不是沿用用户原始问题。

一个实用配置是:

  • BM25 负责精确命中日期、编号、专有名词
  • 向量检索负责语义相近内容
  • reranker 对候选证据重排,取前3到5段
  • 对证据保留文档ID、段落位置、更新时间

比如模型回答“某药物可用于12岁以下儿童”,系统必须检索药品说明书、监管机构公告或临床指南,而不是拿一篇健康科普文章凑数。医疗、金融、法律场景里,证据等级比相似度分数更要命。

一致性判断:NLI 比“打分”更可控

核查模型最好输出三类结果:支持、矛盾、证据不足。这与自然语言推理(NLI)的 entailment、contradiction、neutral 三分类对应,工程上也容易落地。

判断结果处理方式
支持保留,并附引用
矛盾删除或改写
证据不足标记不确定,禁止确定性表述

这里有个细节很容易被忽略:证据不足不等于错误。比如知识库里没有“2024年最新收费标准”,系统不该编一个价格,也不该直接说“没有收费”。更合理的表述是:“当前资料未提供2024年收费标准,需以官方页面为准。”这句话看起来保守,却能少背很多锅。

置信度阈值:别迷信一个分数

生产环境里可以设置多维阈值,而不是只看模型给出的 confidence。

  • 检索相似度低于阈值:不生成确定答案
  • 支持证据少于2条:降低语气强度
  • 证据更新时间超过业务有效期:提示可能过期
  • claim 中包含数字、日期、法规条款:强制引用来源
  • 出现矛盾证据:触发人工复核或返回分歧说明

某企业客服系统曾做过一次灰度测试:在售后政策问答中加入 claim 级核查后,答案拒答率从3.8%升到7.1%,但错误承诺率从2.4%降到0.6%。运营同事一开始嫌“回答变怂了”,两周后投诉单少了一截,态度立刻变了。

输出层:让模型学会“少说一句”

幻觉抑制的终点不是让模型永远回答正确,而是让它知道什么时候闭嘴。提示词里应明确约束:

若证据无法支持某项声明,不得补充常识性推断;可说明缺少依据,并给出需要核验的来源类型。

最终答案最好带上轻量引用,例如“依据:文档A第3段”。不必把引用做成论文格式,但必须让用户或审计人员能追到原文。没有可追溯性,事实核查就只是心理安慰。

更可靠的机制,是把“不确定”产品化

事实核查机制做得好,系统会显得没那么“聪明”:它会拒答,会改口,会提示资料过期,也会把漂亮但无证据的句子砍掉。可这恰恰是专业系统和玩具 Demo 的分水岭。幻觉不是靠模型自觉消失的,它需要检索、拆句、证据、推理和阈值一起拦截;少一个环节,漏洞就会从最贵的地方冒出来。

评论