引言

在大型语言模型 (LLM) 飞速发展的领域中,检索增强生成 (Retrieval-Augmented Generation, RAG) 已成为问答系统的黄金标准。通过允许模型在回答查询之前从外部数据库获取相关文档,我们显著减少了——尽管尚未完全消除——“幻觉”问题。RAG 向我们承诺了一个 AI 回答基于事实而非仅基于统计概率的世界。

然而,一个关键问题依然存在: 信任

当 LLM 提供一个附带引用 (例如“[1]”) 的答案时,我们本能地会相信它。我们假设模型阅读了文档 [1] 并从中得出了答案。但这通常只是一种错觉。模型产生引用幻觉就像它们产生事实幻觉一样容易。它们可能会基于预训练的记忆生成一个正确的答案,但为了满足提示词的格式要求而随便贴上一个引用。这种现象被称为“歪打正着” (right for the wrong reasons) 。

如果我们无法验证模型是否确实使用了检索到的文档来生成答案,那么引用就是毫无意义的。

在这篇深度文章中,我们将探索一种名为 MIRAGE (Model Internals-based RAG Explanations,基于模型内部机制的 RAG 解释框架) 的新框架。与以往要求模型自我引用或使用外部验证器的方法不同,MIRAGE 直接深入观察 LLM 的“大脑”。通过分析概率偏移和梯度更新,它能从数学上确定检索文档的哪些部分实际影响了生成的答案。

这种方法让我们从看似合理的引用迈向了忠实 (faithful) 的归因,确保当 AI 说“来源: [1]”时,它是认真的。

当前归因方法的问题

在理解解决方案之前,我们必须了解为什么当前的方法会失败。迄今为止,将 LLM 答案归因于来源主要有两种方式: 基于蕴涵的方法自引用

基于蕴涵的归因 (NLI)

这种方法将问题视为一项事后验证任务。在 LLM 生成答案后,另一个单独的模型 (通常在自然语言推理或 NLI 数据集上训练) 会将答案与文档进行比较。如果文档在逻辑上支持 (蕴涵) 该答案,则添加引用。

这里的缺陷在于这是一种外部检查。NLI 模型可能会发现文档 A 支持该答案,但 LLM 实际上可能忽略了文档 A,而是从记忆中捏造了答案。这个引用在事实层面是“正确的”,但在模型生成过程层面是“不忠实”的。此外,为每个句子运行第二个模型在计算上也是昂贵的。

自引用

更现代的方法是在模型写作时提示它引用来源。你会给模型这样的指令: “写一个答案并使用 [1], [2] 格式引用文档。”

虽然方便,但这完全依赖于模型的指令遵循能力。如下图所示,模型经常无法完成这项任务。

Figure 2: Instruction-following errors in a self-citation example, using the setup of Gao et al. (2023a).

在上图 2 中,我们看到了一个典型的失败案例。模型被问到为什么 Mac 对病毒免疫。它生成了一个引用 [12],但提供的列表中根本不存在这个文档。它还未能引用 Apple 删除了其“病毒免疫”营销口号这一声明,尽管信息存在于文档中。

这些错误——遗漏引用、格式错误和捏造文档——凸显了我们不能盲目相信 LLM 会监管自己的来源。我们需要一种机制来衡量模型实际上在做什么,而不仅仅是它声称自己在做什么。

MIRAGE 登场: 从内部观察

研究人员提出了 MIRAGE , 这是一个即插即用的框架,通过分析 模型内部机制 来生成引用。

MIRAGE 的核心理念很简单: 如果一个文档对于答案来说确实是必要的,那么移除该文档应该会改变模型的预测。通过测量当添加或移除文档时模型内部概率分布的偏移程度,我们可以精确地定位答案中的哪些 Token 依赖于上下文中的哪些 Token。

Figure 1: MIRAGE is a model internals-based answer attribution framework for RAG settings. Context-sensitive answer spans (in color) are detected and matched with contextual cues in retrieved sources to evaluate the trustworthiness of models’ answers.

如图 1 所示,MIRAGE 采用了标准的 RAG 设置 (查询 + 文档) ,并在最终输出之前插入了一个处理层。它不需要重新训练 LLM;它只是观察推理过程。

该框架分两个主要步骤运行:

  1. 上下文敏感 Token 识别 (Context-sensitive Token Identification, CTI): 识别答案的 哪些 部分受到了外部知识的影响。
  2. 上下文线索归因 (Contextual Cues Imputation, CCI): 识别这种影响来自文档中的 何处

让我们从数学和概念上分解这些步骤。

第 1 步: 上下文敏感 Token 识别 (CTI)

并非答案中的每个词都需要引用。像“the”、“is”或“and”这样的虚词是基于语法规则生成的,而不是外部数据。甚至有些事实可能是预训练期间记忆下来的。

MIRAGE 首先过滤生成的答案,以找到“上下文敏感”的 Token。它通过比较模型在两种场景下对下一个 Token 的概率分布来做到这一点:

  1. 有上下文 (\(P_{ctx}\)): 模型看到了检索到的文档。
  2. 无上下文 (\(P_{no-ctx}\)): 模型只看到了查询。

为了量化差异,研究人员使用了 Kullback-Leibler (KL) 散度 , 这是一个衡量一个概率分布与另一个概率分布差异的标准指标。

Equation for CTI calculation

在这个方程中:

  • \(y_i\) 是当前正在生成的 Token。
  • \(m_i\) 是散度分数。
  • 如果 \(m_i\) 很高 (高于阈值 \(m^*\)) ,这意味着检索到的文档显著改变了这个 Token 的概率。该 Token 被认为是“上下文敏感的”。
  • 如果 \(m_i\) 很低,说明如果没有文档模型大概率也会说同样的话,因此不需要归因。

第 2 步: 上下文线索归因 (CCI)

一旦我们要知道答案中的 哪个 词需要引用 (例如下图 3 中的单词 “smaller”) ,我们就需要找到促使其生成的具体源文档。

MIRAGE 采用了 对比特征归因 (Contrastive Feature Attribution) 。 这是一种可解释性技术,使用梯度 (模型输出相对于其输入的导数) 来为输入 Token 分配“重要性分数”。

Figure 3: Illustration of MIRAGE’s two-step approach adapted from PECORE for RAG answer attribution.

图 3 完美地展示了这个两步流程:

  1. CTI (左) : 系统识别出单词 “smaller” 对上下文高度敏感。
  2. CCI (右) : 系统计算梯度,查看哪些输入 Token 推动模型选择了 “smaller” 而放弃了替代选项 (例如 “PC”) 。

归因分数向量 \(\mathbf{a}^i\) 的数学公式为:

Equation for CCI calculation

在这里,\(\nabla_j\) 代表相对于上下文 Token \(c_j\) 的梯度。至关重要的是,MIRAGE 关注的是被选 Token (\(y_i\)) 的概率与 没有 上下文时会被选的 Token (\(y_i^{\setminus \mathbf{c}}\)) 的概率之间的差异。

这种“对比”元素至关重要。我们不仅想知道是什么让模型说了 “smaller”;我们要知道是什么让模型说了 “smaller” 而不是 它基于内部记忆本想说的内容。

然后,我们过滤这些归因分数,以选出最具影响力的上下文 Token:

Equation for CCI filtering

最后,我们将生成的 Token 与其支持的上下文 Token 配对:

Equation for pairing tokens

第 3 步: 聚合为引用

在这个阶段,我们拥有了一张细粒度的映射图: “生成的 Token #15 受到了上下文 Token #104 的影响。” 为了将其转化为像“[1]”这样的可读引用,MIRAGE 会聚合这些 Token 级别的洞察。

如果生成的某个词被归因于属于文档 1 的任何 Token,则整个句子都会获得文档 1 的引用。

Equation for aggregation

这种方法允许极其精确的“高亮显示” (如图 1 所示) ,准确展示哪段文本导致了特定主张,然后再将其简化为标准的参考文献格式。

实验与结果

研究人员将 MIRAGE 与两个主要的基线进行了评估: 基于 NLI 的归因 (使用 TRUE 模型) 和自引用 (提示模型) 。

与人类标注者的一致性

第一个测试使用了 XOR-AttriQA 数据集,这是一个多语言问答数据集,人类在其中手动标注了哪些文档支持哪些答案。这作为“基准真相” (ground truth) 。

目标是看 MIRAGE 的自动引用是否与人类判断相符。

Table 2: Agreement % of MIRAGE and entailment-based baselines with human AA on XOR-AttriQA match using CORA for RAG.

表 2 显示了五种语言 (孟加拉语、芬兰语、日语、俄语、泰卢固语) 的结果。

  • MIRAGE 表现极其出色: 它的一致性得分 (平均 84.8%) 与 NLI 基线相当,在某些情况下甚至更好。
  • 无需训练: 与需要在大规模数据集上微调的 NLI 模型 (TRUE) 不同,MIRAGE 利用 RAG 模型本身的内部机制,“开箱即用”。
  • 鲁棒性: 虽然 NLI 模型在非优化语言 (如孟加拉语) 上的性能显著下降,但 MIRAGE 保持稳定,因为它利用了生成模型本身的多语言能力。

敏感性分析

MIRAGE 中的一个关键参数是选择归因分数的阈值 (\(s_{CCI}\))。如果我们选择前 3% 的影响力 Token 与前 10% 相比,性能会崩溃吗?

Figure 4: Robustness of MIRAGE EX agreement with human annotations across Top % CCI filtering threshold.

图 4 表明 MIRAGE 具有高度的鲁棒性。在广泛的过滤阈值范围内 (大致在前 5% 到前 20% 之间) ,与人类的一致性保持较高且稳定。这表明来自梯度的“信号”强烈且清晰——相关文档与不相关文档明显不同。

长篇问答上的表现 (ELI5)

研究人员还在 ELI5 (Explain Like I’m Five) 上进行了测试,该数据集要求复杂的、多句的回答。这比简短的事实性回答任务更难。

在这里,他们将 MIRAGE 直接与自引用进行了比较。由于该数据集没有人类标注,他们使用 NLI 模型 (TRUE) 作为质量代理 (检查引用的文档是否实际上支持该主张) 。

Table 3: Answer attribution quality estimated by TRUE for self-citation and MIRAGE on ELI5.

表 3 揭示了一个重要发现: MIRAGE 优于自引用。

  • 对于 Zephyr 模型,MIRAGE (Top 5%) 的 F1 分数达到 45.6 , 而自引用仅为 30.6
  • MIRAGE 通常提供更高的召回率,这意味着它比自引用模型遗漏的相关文档更少。

图片的下半部分 (图 6) 按句子长度分解了这一点。我们可以看到,随着句子变长 (包含更多主张) ,MIRAGE (上图) 保持了较高的引用率,而自引用则难以保持准确性。

可视化归因的“触发点”

为了真正理解 MIRAGE 的工作原理,我们可以查看针对特定预测的归因分数可视化。

在下面的例子中,模型生成了数字 “9” (指的是 190 亿美元的估值) 。MIRAGE 查看检索到的文档,看看是什么触发了这个数字。

Figure 5: Attribution scores over retrieved documents’ tokens for the prediction of context-sensitive token ‘9’.

图表显示,梯度重要性的巨大峰值恰好对应于文档 1 中的 Token **“$19 billion” **。 对于这个特定的预测,其余的上下文 (平坦的线) 实际上被模型忽略了。这证实了 MIRAGE 正在追踪源数据与输出之间的 因果 联系。

定性分析: 为什么内部机制优于蕴涵

MIRAGE 最强有力的论据之一是它能够避免混淆 NLI 模型的“表面层次”陷阱。

考虑一个场景,用户询问关于安全警报的问题。

  • **生成的答案: ** 文本称警报可以被 **取消 (cancelled) **。
  • **文档 A: ** 讨论 **防止 (preventing) ** 警报。
  • **文档 B: ** 讨论 **取消 (cancelling) ** 警报。

NLI 模型或关键字搜索可能会感到困惑,因为“防止”和“取消”在语义上都与停止警报有关。然而,MIRAGE 检测到模型专门关注 文档 B 中的 Token 来生成单词“cancel”。

Table 5: Example showcasing the brittleness of entailment-based AA.

表 5 说明了 NLI 的这种“脆弱性”。生成的答案暗示可以通过输入代码来防止警报。NLI 模型声称文档 [3] 支持这一点。然而,文档 [3] 实际上谈论的是在警报启动后 停止 警报 (取消) ,而不是防止它。它们在事实层面上是不同的。

MIRAGE 正确地识别出生成的答案 (关于防止) 受文档 [3] (关于取消) 的支持,并返回空归因 (\([\emptyset]\))。它正确地认识到模型捏造了“防止”这一事实,或者是从记忆中提取的,而不是错误地将其归因于一个说法略有不同的文档。

结论与启示

神经网络的“黑盒”性质长期以来一直是其在法律、医学和新闻等高风险领域应用的障碍。RAG 向前迈出了一步,将源文档引入了循环中。** MIRAGE** 代表了下一个合乎逻辑的步骤: 验证这些文档与最终输出之间的联系。

通过利用模型的内部机制——特别是 KL 散度和梯度显著性——MIRAGE 提供了一种归因方法,它是:

  1. **忠实的: ** 它追踪实际的生成过程,而不仅仅是语义相似性。
  2. **高效的: ** 它不需要训练外部验证器。
  3. **可控的: ** 归因的粒度可以通过阈值进行调整。

虽然由于计算梯度,该方法引入了一些计算开销,但它解决了“引用幻觉”这一根本问题。随着我们迈向更加自主的 AI 智能体,像 MIRAGE 这样的工具将至关重要。它们充当模型的测谎仪,确保当 AI 声称基于某个来源知道某事时,它并不是在凭空捏造。

对于 NLP 学生和研究人员来说,这篇论文强调了一个至关重要的转变: 我们正从简单地评估模型说 什么,转向评估它是 如何 以及 为什么 这样说的。理解模型内部机制不再仅仅是理论——它是构建可信系统的关键。