Appearance
9.3.3 怎么判断 RAG 有没有幻觉?
先给结论:判断 RAG 有没有幻觉,核心不是看回答听起来像不像真的,而是看回答里的关键结论,有没有被当前材料支持。只要结论超出了证据边界,或者把不确定内容说成确定事实,就应当被视为幻觉或至少是证据外回答。
很多人判断幻觉时,最常见的方式是:
- 凭感觉觉得不对
这当然有时能抓出问题,但它不够稳。因为真实 RAG 系统里的很多错误不是明显离谱,而是:
- 半对半错
- 有一点依据
- 但又多说了一截
所以判断幻觉,必须回到证据关系本身。
一、先确认“当前证据边界”是什么
判断幻觉前,必须先明确:
- 模型这次应该依据什么回答
在 RAG 里,这通常就是:
- 当前检索到并送入上下文的材料
如果不先固定这条边界,后面就会很容易混成:
- 模型常识对不对
- 现实世界上对不对
- 当前材料支不支持
而 RAG 评测真正更关心的是最后一条:
- 当前材料支不支持
二、看答案里哪些是“关键事实结论”
不是每一句都同等重要。
更稳的检查方式通常是先抓出:
- 主结论
- 条件判断
- 范围判断
- 数值、时间、版本、对象这类硬事实
这些地方最容易发生幻觉,也最值得优先审查。
三、逐个检查这些结论是否被材料支持
如果某个结论:
- 在材料中找不到明确支撑 或
- 只能通过很松散的联想才能成立
那它至少已经是:
- 证据外补全
而这通常就应当被纳入幻觉判断范围。
特别常见的幻觉形式包括:
- 材料没说时间,模型补了时间
- 材料没说适用全部,模型补成全部
- 材料没说一定成立,模型补成确定规则
四、要区分“完全捏造”和“半幻觉”
很多人一提幻觉,就只想到完全编造。
但在 RAG 里,更常见的往往是:
- 前半段有证据
- 后半段开始超范围推断
这类回答的风险甚至更高,因为它更像真的。
所以判断幻觉时,不要只找:
- 有没有完全无中生有
也要找:
- 有没有把证据支持范围悄悄扩大
一个最小示意
python
context = "文档未说明退款到账时间。"
answer = "退款通常会在 3 个工作日内到账。"这个回答的问题不在于它听起来不合理,而在于:
- 当前材料根本没有支持“3 个工作日”
所以它就是典型的 RAG 幻觉。
五、为什么“看起来合理”不算通过
这是判断幻觉时最容易掉进去的坑。
模型给出的内容常常:
- 语气自然
- 逻辑顺
- 甚至现实里也可能常见
但这些都不能代替:
- 当前证据支持
对 RAG 系统来说,一条“现实里也许没错,但当前材料没支持”的回答,仍然应该被视为风险回答。
六、一个更实用的判断顺序
可以先按这个顺序检查:
- 回答里有哪些关键事实判断
- 每个判断是否能在当前材料中找到明确依据
- 有没有把模糊支持说成明确结论
- 有没有把未给出的细节自动补全
只要这几步里出现明显证据断裂,就不能把它当成无幻觉回答。
一个常见误区
很多人会把幻觉判断理解成:
- 只要和参考答案不一样,就是幻觉
这不一定对。因为有些表达方式不同,但仍然忠于材料;也有些表面接近参考答案,但其实是靠猜出来的。
更稳的判断依据不是“像不像标准答案”,而是:
- 有没有证据支撑
一句话总结
判断 RAG 有没有幻觉,关键不是看回答听起来像不像真的,而是看答案中的关键结论是否都被当前材料支持。只要结论超出证据边界,或者把材料未明确支持的内容说成确定事实,就应当被视为幻觉或至少是证据外回答。