检索增强生成 (RAG) 彻底改变了我们使用大型语言模型 (LLM) 的方式。通过赋予模型访问外部工具、维基百科或私有文档的能力,我们将它们从富有创造力的小说家变成了知识渊博的助手。至少在理论上是这样。

在实践中,RAG 系统面临着“可信度”危机。即使你向 LLM 提供了正确的文件,它仍可能产生幻觉,误解文本,或者完全忽略证据而恢复到预训练的记忆中。这种现象被称为 不忠实 (unfaithfulness)

我们该如何阻止这种情况?加州大学洛杉矶分校 (UCLA) 的一篇新论文 Synchronous Faithfulness Monitoring for Trustworthy Retrieval-Augmented Generation 提出了一个巧妙的解决方案。他们没有选择在整篇文章写完后再去核查事实 (这种方式既慢又昂贵) ,而是推出了 SYNCHECK : 一个在生成过程中监控模型“心跳”的系统,以便在谎言出现的瞬间捕捉到它。

在这篇文章中,我们将详细拆解 SYNCHECK 的工作原理、它追踪的巧妙指标,以及它如何驱动一种新的解码算法 (FOD) ,该算法不仅能检测错误,还能实时修复错误。

问题所在: 忠实性 vs. 事实性

在深入探讨解决方案之前,我们需要准确定义问题。在 RAG 的语境下,*事实性 (factuality) * 和 *忠实性 (faithfulness) * 之间存在明显的区别:

  • 事实性: 该陈述在现实世界中是否为真?
  • 忠实性: 该陈述是否准确反映了提供给模型的检索上下文?

RAG 系统被设计为应该是忠实的。如果检索到的文档说“天是绿色的”,一个忠实的模型应该报告“天是绿色的”。如果模型忽略这一点并说“天是蓝色的” (因为它的预训练知识告诉它如此) ,那么它对上下文就是 不忠实 的。

目前阻止这种情况的方法都很笨拙。它们要么完全拒绝回答 (弃权) ,要么试图在答案生成后对其进行“批判”。SYNCHECK 背后的研究人员认为,我们需要一种更细粒度的方法: 同步监控

SYNCHECK: 检查模型的脉搏

这篇论文的核心贡献是 SYNCHECK。可以把它看作是一个与 LLM 并行运行的测谎仪。当 LLM 生成句子时,SYNCHECK 会分析四个特定的信号,以确定该句子是否值得信赖。

Figure 1: (a) An illustration of SYNCHECK, a fine-grained faithfulness checker for RALMs. (b) The Faithfulness-Oriented Decoding pipeline.

如上图 1(a) 所示,SYNCHECK 聚合多个信号以生成一个忠实度概率 (\(P_{faith}\)) 。让我们看看它监控的四个“生命体征”:

1. 似然性 (信心检查)

最基本的信号是模型分配给自己生成的 Token 的概率。如果模型表现得结结巴巴 (生成的 Token 概率很低) ,通常表明存在“知识缺口”。它不知道该说什么,所以很可能是在编造。SYNCHECK 测量句子中最小和平均 Token 似然性。

2. 不确定性 (困惑检查)

即使模型给某个 Token 分配了高概率,与其他选项相比,它仍可能是不确定的。SYNCHECK 测量 熵 (Entropy) (概率分布的“分散”程度) 。高熵意味着模型很困惑。

至关重要的是,研究人员还在模型的内部层上使用了一种称为 局部内在维度 (Local Intrinsic Dimension, LID) 的指标。这个听起来很复杂的指标有助于量化当前的生成状态对模型来说有多“熟悉”。高 LID 通常与模型在混合检索上下文与其自身记忆时的挣扎相关。

3. 上下文影响 (注意力检查)

这可以说是最有趣的信号。系统会问: 检索到的文档实际上改变了模型写的内容吗?

为了计算这一点,SYNCHECK 使用 Kullback-Leibler (KL) 散度 进行快速比较。它比较两个概率分布:

  1. 模型 带有 上下文时的预测。
  2. 模型 没有 上下文时的预测。

如果这两个分布几乎相同,KL 散度就很低。这意味着模型忽略了上下文,完全依赖于其预训练记忆——这是不忠实的一个巨大危险信号。

4. 语义对齐 (意义检查)

最后,SYNCHECK 执行轻量级的“蕴含”检查。它使用一个更小、更高效的模型来验证生成的句子在逻辑上是否由检索到的上下文支持。这能捕捉到模型听起来很自信且使用了上下文,但误解了含义的情况 (例如,文本说“拥抱降低死亡率”,模型却说“拥抱增加死亡率”) 。

聚合器

这四个信号 (似然性、不确定性、影响、对齐) 被输入到一个轻量级的聚合器中。令人惊讶的是,研究人员发现,简单的逻辑回归模型或小型 MLP (多层感知机) 就能非常有效地将这些信号组合成单一的“忠实度分数”。

有关所使用的具体特征的详细信息,请参见下表:

Table 4: A list of features monitored by SYNCHECK.

性能表现: SYNCHECK 有效吗?

为了测试这一点,作者编制了一个综合基准测试,涵盖了问答、摘要、数据到文本和传记生成。他们将 SYNCHECK 与现有的方法进行了比较,例如 Self-RAG (使用批判 Token) 和 FLARE (使用似然性) 。

结果非常明显。

Table 1: AUROC results of context faithfulness tracking methods.

如表 1 所示,传统方法 (FLARE, CriticTok) 表现挣扎,AUROC 徘徊在 0.6 左右 (0.5 是随机猜测) 。 SYNCHECK 的得分始终高于 0.80 , 并且经常接近 0.85-0.90。这证明仅仅依赖单一信号 (如概率) 是不够的;你需要解码动态的全貌来捕捉不忠实行为。

FOD: 实时修复问题

检测错误很有用,但修复错误更好。作者利用 SYNCHECK 构建了 面向忠实度的解码 (Faithfulness-Oriented Decoding, FOD)

传统的解码 (贪婪搜索) 只是选择下一个可能性最大的词。FOD (如图 1(b) 所示) 增加了一个安全机制:

  1. 生成: 模型生成一个句子。
  2. 监控: SYNCHECK 计算忠实度分数。
  3. 回溯: 如果分数低于阈值 (\(\tau_1\)) ,系统会踩刹车。它会丢弃不忠实的句子。
  4. 束搜索 (Beam Search) : 模型回到上一个忠实的句子,并启动“束搜索”。它尝试多条不同的前进路径,剪枝掉任何看起来不忠实的分支,并保留最好的一条。

这种方法平衡了 忠实性 (忠于文本) 和 信息量 (实际回答问题) 。

结果: FOD vs. 其他方法

研究人员将 FOD 与贪婪搜索、拒绝回答 (如果不确定则拒绝回答) 和上下文感知解码 (CAD) 进行了比较。

Figure 2: Faithfulness score on Llama 2 7B chat with output truncated to the first L sentences.

图 2 可视化了性能。x 轴代表生成文本的长度 (句子数量) 。

  • 蓝色三角形 (贪婪) : 随着文本变长,忠实度通常会下降或保持平庸。
  • 绿色圆形 (FOD) : 这条线始终较高。FOD 即使在生成内容变长时也能保持高忠实度,特别是在像数据到文本这样的困难任务中。

在六个数据集上,FOD 的表现比标准贪婪搜索高出 12% , 比上下文感知解码高出 19%

深入探究: 什么最重要?

你可能会问,“我们真的需要所有这四个信号吗?”研究人员进行了一项消融研究来找出答案。

Figure 3: Feature ablation study with SYNCHECK MLP.

图 3 显示了移除特征的影响。虽然 语义对齐 (绿色条) 是贡献最大的单一特征,但移除 上下文影响 (粉橙色) 或 不确定性 (橙色) 也会损害性能。最好的结果 (蓝色条) 来自于结合所有信号。这证实了不忠实是一个多层面的问题;有时是因为困惑 (不确定性) ,有时是因为忽略了文档 (上下文影响) 。

它能泛化吗?

最有希望的发现之一是 SYNCHECK 的可迁移性。你需要为每个任务训练特定的检测器吗?

Figure 4: Performance of SYNCHECK on different train-test task pairs.

图 4 是一个展示跨任务性能的热力图。y 轴是训练任务,x 轴是测试任务。大量的红色/橙色块表明,在一个任务 (如 QA) 上训练的 SYNCHECK 模型在完全不同的任务 (如摘要) 上进行测试时表现出奇地好。这表明幻觉的“特征”——高熵、低上下文影响——在不同类型的写作中是普遍存在的。

结论

LLM 的“黑盒”性质一直使得它们在高风险环境中难以被信任。Synchronous Faithfulness Monitoring 提供了窥探这个黑盒的机会。通过不仅测量模型说了 什么,而且测量它在说的时候 如何 表现 (似然性、熵、上下文使用) ,我们可以建立真正有效的护栏。

SYNCHECK 和 FOD 证明了我们不必在创造性模型和忠实模型之间做选择。通过正确的监控,我们可以推动模型坚持事实,使 RAG 系统在现实世界中足够可靠。

关键要点:

  • 不要只相信似然性: 仅仅因为模型很自信,并不意味着它是忠实的。
  • 上下文影响是关键: 测量模型是否忽略了检索到的文本 (通过 KL 散度) 是检测幻觉的有力手段。
  • 实时修复: 事后编辑太晚了。在生成过程中进行监控和回溯 (FOD) 能产生最好的结果。

本文探讨了 Wu 等人 (2024) 的研究论文 “Synchronous Faithfulness Monitoring for Trustworthy Retrieval-Augmented Generation”。