Skip to content

9.3.3 怎么判断 RAG 有没有幻觉? ​

先给结论:判断 RAG 有没有幻觉,核心不是看回答听起来像不像真的,而是看回答里的关键结论,有没有被当前材料支持。只要结论超出了证据边界,或者把不确定内容说成确定事实,就应当被视为幻觉或至少是证据外回答。

很多人判断幻觉时,最常见的方式是:

  • 凭感觉觉得不对

这当然有时能抓出问题,但它不够稳。因为真实 RAG 系统里的很多错误不是明显离谱,而是:

  • 半对半错
  • 有一点依据
  • 但又多说了一截

所以判断幻觉,必须回到证据关系本身。

一、先确认“当前证据边界”是什么 ​

判断幻觉前,必须先明确:

  • 模型这次应该依据什么回答

在 RAG 里,这通常就是:

  • 当前检索到并送入上下文的材料

如果不先固定这条边界,后面就会很容易混成:

  • 模型常识对不对
  • 现实世界上对不对
  • 当前材料支不支持

而 RAG 评测真正更关心的是最后一条:

  • 当前材料支不支持

二、看答案里哪些是“关键事实结论” ​

不是每一句都同等重要。

更稳的检查方式通常是先抓出:

  • 主结论
  • 条件判断
  • 范围判断
  • 数值、时间、版本、对象这类硬事实

这些地方最容易发生幻觉,也最值得优先审查。

三、逐个检查这些结论是否被材料支持 ​

如果某个结论:

  • 在材料中找不到明确支撑 或
  • 只能通过很松散的联想才能成立

那它至少已经是:

  • 证据外补全

而这通常就应当被纳入幻觉判断范围。

特别常见的幻觉形式包括:

  • 材料没说时间,模型补了时间
  • 材料没说适用全部,模型补成全部
  • 材料没说一定成立,模型补成确定规则

四、要区分“完全捏造”和“半幻觉” ​

很多人一提幻觉,就只想到完全编造。

但在 RAG 里,更常见的往往是:

  • 前半段有证据
  • 后半段开始超范围推断

这类回答的风险甚至更高,因为它更像真的。

所以判断幻觉时,不要只找:

  • 有没有完全无中生有

也要找:

  • 有没有把证据支持范围悄悄扩大

一个最小示意 ​

python
context = "文档未说明退款到账时间。"
answer = "退款通常会在 3 个工作日内到账。"

这个回答的问题不在于它听起来不合理,而在于:

  • 当前材料根本没有支持“3 个工作日”

所以它就是典型的 RAG 幻觉。

五、为什么“看起来合理”不算通过 ​

这是判断幻觉时最容易掉进去的坑。

模型给出的内容常常:

  • 语气自然
  • 逻辑顺
  • 甚至现实里也可能常见

但这些都不能代替:

  • 当前证据支持

对 RAG 系统来说,一条“现实里也许没错,但当前材料没支持”的回答,仍然应该被视为风险回答。

六、一个更实用的判断顺序 ​

可以先按这个顺序检查:

  1. 回答里有哪些关键事实判断
  2. 每个判断是否能在当前材料中找到明确依据
  3. 有没有把模糊支持说成明确结论
  4. 有没有把未给出的细节自动补全

只要这几步里出现明显证据断裂,就不能把它当成无幻觉回答。

一个常见误区 ​

很多人会把幻觉判断理解成:

  • 只要和参考答案不一样,就是幻觉

这不一定对。因为有些表达方式不同,但仍然忠于材料;也有些表面接近参考答案,但其实是靠猜出来的。

更稳的判断依据不是“像不像标准答案”,而是:

  • 有没有证据支撑

一句话总结 ​

判断 RAG 有没有幻觉,关键不是看回答听起来像不像真的,而是看答案中的关键结论是否都被当前材料支持。只要结论超出证据边界,或者把材料未明确支持的内容说成确定事实,就应当被视为幻觉或至少是证据外回答。