ReDeEP: Detecting Hallucination in Retrieval-Augmented Generation via Mechanistic Interpretability
研究了 RAG 场景中幻觉背后的内部机制:当 LLM 中的知识前馈网络 (Knowledge FFNs) 过度强调残差流中的参数化知识,而复制头 (Copying Heads) 无法有效地保留或整合来自检索内容的外部知识时,就会出现幻觉。提出了ReDeEP,这是一种通过解耦 LLM 对外部上下文和参数化知识的利用来检测幻觉的新方法
RAG 模型中外部上下文和 LLM 的参数知识之间潜在的冲突,这些冲突可能导致幻觉,但并非总是如此。 因此,将 RAG 幻觉与知识冲突区分开来,作为一个新的研究方向非常重要。 本文的工作重点是检测 RAG 幻觉,尤其是在检索到的外部上下文准确且相关的情况下。

现有的幻觉检测方法可以分为三个因果框架:(i) 参数被外部混淆: 第一种方案其依赖于LLM的隐藏状态进行幻觉检测,但是由于隐状态是外部上下文E和模型本身的参数知识P共同作用的结果,并不能确定幻觉的来源到底是E还是P(ii) 外部被参数混淆: 第二种方案通过利用外部上下文和模型响应来进行幻觉检测。 由于模型的生成结果不可避免地受到 P 的影响,即使 E 提供了正确的信息,模型仍可能因 P 产生幻觉。同样需要考虑如何解耦 E 与 P 的影响。(iii) 参数和外部混合: 第三种方案直接结合参数知识和外部知识,通常使用不确定性或采样技术(比如token概率)来检测幻觉。但是没有有效区分E和P的作用,让二者的独立贡献变得模糊,影响了幻觉检测的精确性。
下面是一些现有的方法论,分别对应上面提到的三种方案:
(1) 外部混淆参数(PCE):
- EigenScore: EigenScore 衡量嵌入空间中的语义一致性。 较高的 EigenScore 表明幻觉的可能性更高,因为它们表示更大的语义差异 (Chen et al., 2024b)。
- SEP: SEP(语义熵探测器)使用在 LLM 隐藏状态上训练的线性探测器,通过分析生成前符元的语义熵来检测幻觉 (Han et al., 2024)。
- SAPLMA: SAPLMA 在 LLM 激活值上训练分类器以检测幻觉。 它捕获来自 LLM 隐藏层的内部信号,以识别模型何时可能产生幻觉 (Azaria & Mitchell, 2023)。
- ITI: 推理时间干预 (ITI) 分析注意力头激活,并使用二元分类器通过研究头与任务性能之间的关系来预测幻觉 (Li et al., 2024)。
(2) 参数混淆外部(ECP):
- 提示: 此方法使用 RAGTruth 中提供的提示 (Niu et al., 2024) 通过使用 GPT-4-o-mini 将其与基本事实进行比较来评估 LLM 生成的响应是否为幻觉 (Niu et al., 2024)。
- LMvLM: LMvLM 采用两个语言模型 (GPT-4-o-mini 与 主干 LLM) 之间的多轮交互,通过让他们互相检查彼此的答案来发现不一致之处 (Cohen et al., 2023)。
- ChainPoll: ChainPoll 使用 GPT-4-o-mini 通过精心设计的提示来判断完成结果是否包含幻觉。 评估会重复多次(通常五次),最终的幻觉分数计算为“yes”答案与总响应数的比率(Friel & Sanyal, 2023)。
- RAGAS: RAGAS 通过将句子分解成更短的断言,并使用 GPT-4-o-mini 根据上下文验证每个断言,以支持语句的比率计算忠实度分数,从而检查生成响应的忠实度(Es et al., 2024)。
- Trulens: Trulens 使用 GPT-4-o-mini 评估上下文与生成响应之间信息的重叠程度,根据重叠程度赋予 0 到 10 之间的可靠性分数(Trulens, 2024)。
- RefCheck: 与 RAGAS 类似,RefCheck 从生成的响应中提取知识图谱,并评估知识图谱是否与外部上下文一致(Hu et al., 2024)。
- P(True): P(True) 通过查询大语言模型 (LLM) 本身对其生成响应的真实性来衡量生成声明的不确定性。 置信度分数计算为第一个符元为“True”的概率(Kadavath et al., 2022)。
(3) 混合参数和外部方法 (MPE):
- SelfCheckGPT: SelfCheckGPT 使用一种零资源、基于采样的方法,其中多个参考响应由 GPT-4-o-mini 检查与生成答案的一致性(Manakul et al., 2023)。
- LN-Entropy: 长度归一化熵衡量多个生成中的序列级不确定性,使用按序列长度归一化的熵来检测幻觉(Malinin & Gales, 2020)。
- Energy: 基于能量的异常值检测方法使用能量函数分析生成响应中的不确定性来识别幻觉。 更高的能量表明出现幻觉的可能性更高(Liu et al., 2020)。
- Focus: Focus 通过关注关键信息符元、前置词和符元属性来增强基于不确定性的幻觉检测,模拟人类的事实核查(Zhang et al., 2023)。
- Perplexity: 此方法使用大语言模型生成的响应的困惑度来检测幻觉。 更高的困惑度表示更大的不确定性和更高的幻觉可能性(Ren et al., 2022)。
三种方案都存在不足,作者的做法是首先利用机械可解释性来解耦LLM对参数知识和外部上下文的利用。引入了两个指标:外部上下文评分:使用注意力头来量化模型对外部上下文的利用;以及参数知识评分:基于前馈网络(FFNs)来评估LLM对参数知识的利用。
相关性分析和因果干预表明幻觉通常在下面情况产生:知识前馈神经网络(来自LLM后层)过度添加参数知识到残差流中,导致模型盛恒更加基于P而不是E;复制头(有复制行为的注意力头)忽略了从检索内容中获得的必要外部知识,或者LLM在生成过程中丢失了复制头所关注的信息。
背景
工作基于机械可解释性,目标是解释语言模型的各个组件如何促成预测。
关注 Transformer 解码器only架构(类似 GPT 的模型)
Transformer 使用残差连接,其中每一层通过残差流将来自注意力头和前馈网络 (FFN) 的信息添加到隐藏状态,从而促成最终预测。
注意力头: 选择性关注前序token来调整当前token的隐状态表示(embedding),并且更新残差流。
复制头:特殊的注意力头,通过Output-Value circuits把信息从一个token复制到另一个token,用来保留之前关注的token信息,把它传递到后续的计算中,让模型可以更加有效地利用检索到的外部内容。
复制头可以通过分析 OV 矩阵的正特征值来识别,这些特征值表示复制行为。如果复制头没能正确保留或者整合检索信息,就容易导致LLM忽略外部知识,而依赖内部知识,从而产生幻觉。
FFN前馈神经网络: FFN 层主要在 Transformer 中充当知识存储,每个 FFN 层通过线性组合键值对来转换隐藏状态,其中键编码特定知识,值表示此知识的输出。 研究表明,FFN 对利用大语言模型中的参数化知识至关重要,使模型能够有效地检索和整合存储的信息以进行预测
Logit 透镜(lens):Logit Lens 是一种直接将隐藏状态解码为词汇分布的技术,它使用 LLM 的 LayerNorm (层归一化,实现对隐藏层的标准化归一)和解嵌入Unembedding矩阵𝑾U(把隐状态转化为实际的词汇分布,也就是logits,表示当前要生成的token的概率分布)来实现可解释性
相关工作:很少有研究关注 RAG 幻觉,特别是导致这些幻觉的内部机制。 受知识冲突研究的启发 (Xu et al., 2024),我们的工作首次将机制可解释性应用于从大语言模型 (LLM) 利用外部和参数化知识的角度来分析 RAG 幻觉的内部机制,从而产生比以前方法更准确的检测方法。
实验探究
使用机制可解释性技术,关注大语言模型 (LLM) 对外部上下文和参数化知识的使用如何导致幻觉。

在Llama2-7B-chat模型上进行了实验,使用了RAGTruth数据集的训练集,这是一个高质量的手动标注的RAG幻觉数据集。RAGTruth中的每个数据点包含一个查询 𝐪,检索到的上下文 𝐜,响应 𝐫,以及幻觉标签 h (其中0表示真实,1表示幻觉)。
度量指标(评估模型在生成过程中如何利用外部信息和内部知识):
1.外部上下文的度量(外部上下文分数External Context Score ECS)
这个重点在于注意力头是否关注了正确的上下文,以及模型是否有效地保留并在生成过程中利用了这些信息。定义了一个基于上下文语义差异的度量方法:
对于最后一个token,注意力权重
表示模型在生成过程中特别关注外部上下文的程度。由于注意力机制往往只聚焦于若干个token,就选中关注度最高的前k个token作为模型最重要的参考信息:
这里的I表示Inference参考,n表示最后一个token 的索引,l表示模型的某一层,h表示幻觉标签(0真实1幻觉)
把注意力关注的token的隐藏状态取mean-pooling均值来表示综合语义:
这就是这篇文章搞的地方了,定义和常规直觉不一致,在这里的x表示的是第j个token在第L层的隐藏状态值。
通过计算最后生成的 token t_n的隐藏状态与关注的上下文表示e之间的余弦相似度,可以衡量 LLM 在生成该 token 时是否有效地利用了关注的外部信息:
。余弦相似度的值越大表明生成的内容和检索到的上下文越相似,表明模型充分利用了外部的上下文。
每生成一个新的token就会计算这个token的ECS值,最后把整个生成的回答r的所有的token的ECS得分取平均值,得到响应级别的外部上下文分数ECS:。这个平均值衡量了LLM在整个回答生成过程中是否充分利用了外部检索到的信息。
【第一个评价指标就是找整个输入内容中LLM最关注的前k个token的embedding,把这些embedding求平均,把这个平均结果和当前生成的token的embedding之前求一个余弦相似度,相似度越高,越表明当前token的生成很大程度上依赖于对模型的输入内容(因为外部知识是整合在prompt中给LLM的,是放在输入内容中)。把这些余弦相似度再求一个平均用来衡量模型使用外部知识的程度。】
2.内部知识参数化的度量
用 LogitLens 将 FFN 层之前(即)和之后(即
)的残差流状态映射到词汇分布。二者词汇分布的差异表示 FFN 层添加到残差流中的参数知识,由 Jensen Shannon 散度 (JSD) 测量,给出了 token-level 参数知识得分 (PKS)
,这里面的q(x)就是softmax(LogitLens(x)),词汇分布概率取了个softmax,回复级的PKS得分:
【实际上第二个度量指标就是把经过FFN层前后的embedding通过LogitLens反向映射回单词的分布概率,用经过FFN层前后的这样的单词分布差异来判断LLM对内部知识是否进行了利用。】
实验
问题1:LLM对外部上下文、参数知识的利用与幻觉之间的关系
(1)外部上下文和基于RAG的幻觉之间的关系
要对比真实响应(h=0)和幻觉响应(h=1)的外部上下文得分ECS
首先构造数据集子集:D^H:包含所有幻觉响应的集合;D^T:包含所有真实响应的集合
【这里我猜测是比如把LLM的温度参数调低,然后把问题和上下文抛进去,得到结果,由于实验人员本身是知道真实答案的,就这样把数据划分为幻觉响应和真实响应两类。】
计算所有真实响应和幻觉响应的ECS平均分,拿真实结果减去幻觉结果,得到一个差值,结果大于0说明在所有生成正确答案的案例中,LLM使用外部知识作答的概率更高。
实验结果如a图,在32(层)*32(个注意力头)上进行实验,1024个注意力头中有1006个得到的结果为正数,说明RAG中的LLM在产生幻觉的时候使用自身内部知识更多;在产生正确回答的时候使用外部知识更多。
为了进一步验证忽略上下文是否导致RAG幻觉,作者计算了幻觉标签h和外部上下文得分ECS之间的Pearson相关系数PCC(两个随机变量的ρ,协方差除以标准差的乘积,概率论中的概念,取值从-1到1,-1表示完全负相关,1表示完全正相关,0表示不相关)。由于预期二者为负相关,因此对幻觉标签取了反(此实验中1表示正确结果,0表示幻觉结果)
结果如b图,很多都是正值说明大多数注意力头的外部上下文得分与幻觉标签呈负相关,表明 LLM 在生成幻觉时往往未能充分利用外部上下文。外部上下文利用不足时,幻觉出现的概率更高。进一步分析发现,幻觉的主要原因是 LLM 在生成过程中丢失了原本由注意力头关注的重要信息,而不是注意力头本身忽略了外部知识。
复制头与外部上下文的关系,进一步探究注意力头的特性。
计算每个注意力头的复制能力得分,用来衡量该注意力头在生成过程中是否具备“复制外部上下文信息的能力”
如c所示,与图(a)和(b)的结果的相关性表明,与幻觉相关的注意力头通常是复制头((c)和(a)之间的PCC为0.41,(c)和(b)之间的PCC为0.46)。 当这些复制头具有较低的外部上下文分数时,它们要么未能关注正确的外部上下文,要么即使关注了,也未能有效地保留和利用这些信息。 这降低了LLM的复制能力并导致幻觉,解释了这些头的外部上下文分数与幻觉标签h之间的负相关性:ECS 越低(外部信息利用越差),幻觉发生的可能性就越大。
当一个注意力头的复制头得分越高(即越应该起到复制作用),其 ECS 差异越明显,即该头在真实回答中表现得更依赖外部上下文,而在幻觉回答中则表现得不足。
同时,高复制头得分的注意力头,其外部上下文利用情况(ECS)与幻觉标签之间的负相关性更明显,即当这些头未能有效利用外部信息时,幻觉发生的概率更高。
(2)LLM内部参数化知识的利用与RAG幻觉的关系
对比真实响应 (h=0) 和幻觉响应 (h=1) 的外部上下文得分 (PKS)。观察 LLM 在生成幻觉响应与真实响应时,模型在各层的参数化知识得分P是否存在差异。
同样是计算差值,此时是拿幻觉的参数化知识得分减去真实的得分。结果大于0说明幻觉回答此时更参考了内部知识。
结果显示,在 FFN 模块的后期层中,幻觉回答的参数化知识得分明显高于真实回答,也就是说。总体来看,在所有层上幻觉回答的平均参数化知识得分都高于真实回答。
这些结果表明,当 LLM 生成幻觉时,它在后期层(特别是 FFN 模块后期)中引入了更多的参数化知识。也就是说,模型在生成幻觉回答时,更依赖于其内部存储的知识,而这种过度依赖可能会使得生成的回答与外部检索到的信息脱节,从而导致幻觉。
同样进一步验证参数化知识和RAG幻觉的相关性,计算幻觉标签h和PKS之间的PCC
FFN 模块的参数化知识得分 (PKS) 在后期层的值更高,并且与幻觉标签h呈正相关。也就是说,LLM 越依赖后期层 FFN 模块的参数化知识,越容易生成幻觉。
研究人员将这些在后期层中与幻觉高度相关的 FFN 模块称为 “Knowledge FFNs”。
这表明,幻觉的产生与过度依赖知识 FFN 相关。如果 LLM 无法正确利用外部上下文信息,后期层的 FFN 可能会过度填充模型固有的知识,导致幻觉。
问题2:能否从因果角度验证问题1中发现的关系?
经过问题1的探究,发现:复制头在外部上下文得分低时无法有效复制外部知识,从而导致幻觉;Knowledge FFNs过度注入参数化知识,导致LLM依赖内部而非外部知识,增加幻觉产生的可能性。
使用因果干预方法(人工干预)进行实验来验证是否有因果关系:
对复制头添加噪声,来破坏其对外部上下文的关注;增强Knowledge FFNs对残差流的贡献,使其更加依赖于内部存储的知识。
设立对照组:非复制头的注意力头扰动、非Knowledge FFNs的FFNs扰动
在真实数据集D^T上计算实验组和对照组在负对数似然损失NLL上的差异
【箱型图,上须表示包含约25%高值数据,下须包含约25%的低值数据,中间的箱子表示中间的50%数据,横线是所有数据的中位数所在地】
干预结果表明,实验组在 NLL 变化上的影响显著大于对照组,说明这些组件的作用被干预后,LLM 的生成表现受到显著影响。得出结论:
知识 FFN 过度注入参数化知识确实会导致幻觉。
复制头负责从外部上下文中提取信息,如果其作用被破坏,LLM 无法有效利用外部知识,从而更容易生成幻觉。
到这里可以得出部分结论:
RAG幻觉的发生与两个主要因素有因果关系:
(1)虽然复制头偶尔会忽略外部环境中的必要知识,但更突出的原因是LLM在生成过程中丢失了复制头检索到的信息(RQ1-1、RQ2)
(2)LLM内的知识FFN过度将参数知识注入残差流(RQ1-2、RQ2)。
问题3:从参数化知识角度分析幻觉行为
研究当 LLM 知道或不知道正确答案时,其在生成过程中的幻觉行为,重点关注参数化知识的影响。
构建数据集:
- LLM 知道正确答案的数据集D^T:包含 LLM 已掌握的知识,模型可以直接生成准确答案。
- 幻觉数据集D^H:包含 LLM 不掌握或容易产生幻觉的知识点。
研究对比 LLM 在这两种情况下的注意力机制和参数化知识利用方式)。
当LLM知道真实答案的时候,复制头会更加准确地捕获和利用外部知识,K-FFNs也会向残差流中添加更少的参数知识,即更依赖外部检索内容,而非模型内部记忆;当 LLM 产生幻觉时,复制头的作用下降,导致 LLM 未能有效利用外部检索信息,或者检索到的信息在生成过程中丢失。Knowledge FFNs 过度注入参数化知识,导致 LLM 更倾向于凭内部记忆“编造”内容,而不是依赖真实的外部信息。
检测和缓解RAG中的幻觉
提出了ReDeEP(Regressing Decoupled External Context and Parametric Knowledge)来检测LLM生成中的幻觉;AARF(Add Attention Reduce FFN)减少幻觉
1.字符级别的幻觉检测ReDeEP(Token)
每个 token t的幻觉分数由参数化知识贡献与外部上下文贡献的加权差决定(下面的后者):
对于LLM生成的一个完整的响应r,总体幻觉分数H_t(r)定义为所有token级幻觉分数的平均值。
α和β是回归系数,用来建模ECS和PKS对幻觉的影响,如果PKS高而ECS比较低,结果是幻觉得分比较高,则该token可能是幻觉导致的。
2.块级别的幻觉检测
字符级别的检测开销太大了,每个token都要计算ECS和PKS,并且关注于单个token,无法捕捉RAG任务中的上下文依赖关系。
块级别的检测是把检索到的外部上下文和大模型的回答都划分为可以管理的小块,其中N表示检索上下文划分的块数,M表示回答划分的块数,这样可以在块级别计算ECS和PKS
块级别注意力权重 由块内注意力权重均值池化算出:
选取注意力最高的 Chunk 对作为核心关注对象(c是上下文,r是回答),然后使用一个 Embedding 模型 (emb) ,且仍然使用了embed向量的余弦相似度来衡量 Chunk 级 ECS,即响应 Chunk 与对应检索 Chunk 之间的相似性:
Chunk-level ESC 通过对所有chunk取均值,计算得到
Chunk-level PSK 同样计算每个chunk内的PSK 均值:
对所有chunk取均值,计算得到
综合 Chunk-level ECS 和 PKS,同样通过高斯回归得到 Chunk-level 幻觉得分:
【实际上就是把先前的token级别扩展到块级别上,计算原理一样】
3.可信RAG生成方案 — AARF
AARF (Add Attention Reduce FFN,添加注意力减少前馈网络)方法通过干预注意力头和 FFN 模块来减少幻觉的生成,而不需要更新模型参数。
AARF 方法在两阶段进行操作:
1. Token-level 幻觉检测
首先对每个 token利用 token-level 幻觉得分
和阈值τ比较,进行检测,判断某个 token 是否可能产生幻觉。大于阈值,就需要调整复制头和知识FFN模块的权重,把重点向外部上下文引导并减少对参数化知识的依赖
2. 重新加权注意力头和 FFN 模块对残差流的贡献
在检测到幻觉的 token 后,调整模型的权重,使其更加依赖外部上下文,减少对参数化知识的依赖,从而减少幻觉:
- 增加复制头的权重,使模型更加依赖外部上下文信息。
- 减少 Knowledge FFNs 权重,降低模型对内部参数化知识的依赖。
对于注意力头:
- 如果属于复制头
,则将权重放大:
,其中
。
- 否则,保持原始的注意力权重
对于 FFN 模块:
- 如果属于 Knowledge FFN (l ∈ F),将其权重减小:
,其中 0 < β2 < 1
- 否则,保持原始的 FFN 权重
实验
数据集: RAGTruth 是第一个高质量的手动标注的 RAG 幻觉数据集。 数据包含三种 RAG 任务类型:问答 (QA)、数据到文本写作和新闻摘要;Dolly (AC) 是一个包含精确上下文的数据集,数据来自(Hu et al., 2024),包括文本摘要、封闭式问答和信息提取等任务
Baseline: LLaMA2-7B-Chat、LLaMA2-13B-Chat 和 LLaMA3-8B-Chat三个模型;使用其他现有的幻觉检测方法当作BASELINE: (1) 外部方法导致的参数混淆 (PCE),(2) 参数方法导致的外部混淆 (ECP),以及 (3) 参数和外部方法混合 (MPE)。
使用了 AUC、皮尔逊相关系数 (PCC)、准确率 (Acc. )、召回率 (Rec. ) 和 F1 作为检测准确性的评估指标。
ReDeEP 的性能优于 MPE 方法,这表明机械可解释性有效地解耦了 LLM 对外部上下文和参数知识的利用,从而能够更准确地检测 RAG 幻觉。
ReDeEP通过将外部上下文得分和参数知识得分作为协变量整合到多元回归方法中,有效地解决了混杂问题,从而超越了ECP和PCE方法。
大多数指标上,ReDeEP(chunk)通常优于ReDeEP(token),这表明分块级处理能够更好地保留语义完整性并提高检测性能。
在进行 RAG 幻觉检测时,仅使用参数知识评分(Only PKS)或仅使用外部上下文评分(Only ECS)都无法达到与完整 ReDeEP 模型相同的性能。 这验证了采用多元回归的有效性,其中 PKS 和 ECS 同时用作协变量。 根据 1 节的分析,仅使用 PKS 或仅使用 ECS 会引入混杂因素,导致性能下降。 这解释了为什么 Only ECS 和 Only PKS 的结果都低于 Full ReDeEP。
真实的RAG生成: 使用GPT-4-o进行自动评估,以评估真实性(提示细节可在附录L中找到),在RAGTruth和Dolly (AC)数据集上评估了幻觉减少方法AARF。 图6显示了由GPT-4-o评定的成对比较,表明与基线模型相比,AARF可以在一定程度上减少幻觉。 这些结果验证了干预实验的有效性,并证实了RQ2中提出的发现。