引言

大型语言模型 (LLM) 彻底改变了我们与信息交互的方式,但它们存在一个顽固的缺陷: 幻觉。当 LLM 不知道答案时,它往往会编造一个。对此,行业标准的解决方案是检索增强生成 (RAG) 。 在 RAG 系统中,模型从外部数据库检索相关文档,并将其用作回答用户问题的上下文。

然而,RAG 引入了一个新问题。当检索系统引入“噪声”文档——不相关的文本、过时的信息或相互矛盾的事实时,会发生什么?标准的 LLM 往往难以在检索到的上下文中区分精华与糟粕。它们可能会分心,导致即使拥有正确的信息,给出的答案在事实上也是错误的。

在这篇文章中,我们将深入探讨一篇研究论文,它解决这个问题的思路不是训练更好的模型,而是改变模型在生成过程中的思维方式。我们将探讨动态对比解码 (Dynamic Contrastive Decoding,DVD) , 这是一种新颖的策略,它将 RAG 视为一场多文档竞赛。通过动态分析模型在不同文档间的置信度,DVD 能够放大最可靠来源的“声音”,同时抑制噪声,且无需对模型进行任何训练。

背景: 多文档挑战

要理解 DVD,我们需要先了解当前解码策略的局限性。

标准 RAG 方法

在典型的 RAG 设置中,算法会检索一组与查询 (\(q\)) 相关的文档 (\(D = \{d_1, d_2, ..., d_N\}\)) 。这些文档被拼接成一长串文本,作为提示词 (Prompt) 输入给 LLM。然后 LLM 逐个 token 地生成答案。

这里的问题在于分心 (Distraction) 。 如果 \(d_1\) 包含正确答案,但 \(d_2\) 到 \(d_5\) 包含不相关的乱语或细微的矛盾,LLM 会将它们全部视为有效上下文。先前的研究表明,LLM 很容易受到不相关上下文的影响,从而导致准确率下降。

对比解码

DVD 方法的基础在于对比解码 (Contrastive Decoding) 。 该技术旨在通过对比“强”分布与“弱”分布来改进生成效果。

例如,一种称为上下文感知解码 (Context-Aware Decoding, CAD) 的现有方法会运行模型两次:

  1. 有上下文: 模型看到查询和检索到的文档。
  2. 无上下文: 模型只看到查询 (依赖其内部参数化记忆) 。

通过从“有上下文”运行的 Logits (原始预测分数) 中减去“无上下文”运行的 Logits,系统迫使模型更多地依赖外部文档,减少对预训练先验知识的依赖,从而减少幻觉。

然而,CAD 将所有检索到的文档视为单个文本块。它无法在该文本块中区分文档和文档。这正是 DVD 切入的地方。

DVD: 动态对比解码

DVD 超越了简单的上下文感知解码,将 RAG 视为一个多文档问答 (MDQA) 任务。DVD 不会将所有文档混在一起,而是实时单独分析它们,以决定哪些是值得信赖的。

该框架基于“即插即用”的原则运行——无需对 LLM 进行微调。它在推理阶段进行干预,具体来说是在模型计算下一个词的概率时。

图 1: DVD 的框架。我们提出了一种新的解码策略,包含选择标准和动态权重,以整合所有文档的知识并放大所选文档的知识。

如图 1 所示,该过程包括三个主要阶段:

  1. 批量输入构建 (Batch Input Construction) : 同时向模型提供多个版本的上下文。
  2. 选择标准 (Selection Criteria) : 通过数学方法识别哪些文档是有帮助的,哪些是混淆视听的。
  3. 动态 Logit 调整 (Dynamic Logit Adjustment) : 修改最终的输出概率以放大“好”信号。

1. 批量输入构建

在标准解码过程中,模型根据输入 \(x\) 和之前生成的 token \(y_{

() z _ { t } = \\theta ( x , y _ { < t } ) ()

DVD 不仅仅向模型提供一个输入。相反,它构建了一个包含 \(N + 2\) 个变体的输入批次 (Batch) \(B\),其中 \(N\) 是检索到的文档数量。

让我们分解批次 \(B\) 中的输入:

  1. \(x_1\) (无文档) : 仅包含查询。这代表模型的内部知识 (通常容易产生幻觉) 。
  2. \(x_2\) (所有文档) : 查询加上拼接在一起的所有检索文档。这提供了最多的上下文,但也包含噪声。
  3. \(x_3\) 到 \(x_{N+2}\) (单文档) : 查询分别与每个检索到的文档单独配对。

模型并行处理整个批次:

() Z = \\theta ( B ) ()

这产生了一组 Logit 分布 \(Z = \{z_1, z_2, ..., z_{N+2}\}\)。每个 \(z\) 代表模型基于不同上下文视图对下一个词的预测。

2. 选择标准: 用熵来判断质量

既然我们要基于每个单独的文档进行预测,我们如何知道哪个文档是“好”的呢?作者建议使用熵 (Entropy) 作为质量的代理指标。

在信息论中,高熵意味着高不确定性 (模型将概率分散在许多不同的词上) 。低熵意味着高置信度 (模型非常确定下一个词是“巴黎”) 。

然而,计算整个词表 (通常超过 30,000 个词) 的熵由于低概率词的“长尾”效应而充满噪声。作者对此进行了改进,仅计算Top-K token (最可能的下一个词) 的熵。

() f ( \\boldsymbol { z } _ { i } ) = - \\sum _ { j = 1 } ^ { K } p ( t _ { j } ) \\log p ( t _ { j } ) , t _ { j } \\in V _ { t o p K } ()

对于每个 Logit 分布 \(z_i\),计算得分 \(s_i\)。

() s _ { i } = f ( z _ { i } ) ()

利用这些得分,系统从单文档输入中识别出两个关键分布:

  • \(z_l\) (最低分) : 具有最低熵的分布。这对应于模型认为最清晰、最明确的文档 (“专家”文档) 。
  • \(z_h\) (最高分) : 具有最高熵的分布。这对应于最令人困惑或不相关的文档 (“业余”文档) 。

3. 动态 Logit 调整

这是 DVD 的核心贡献。目标是生成一个最终的 token 分布,该分布能够:

  1. 依赖完整上下文 (\(z_2\)) 。
  2. 减去内部幻觉 (\(z_1\)) 。
  3. 放大最佳文档 (\(z_l\)) ,同时抑制最差文档 (\(z_h\)) 。

最终调整后的 Logit \(\hat{z}\) 的公式为:

() \\hat { z } = z _ { 2 } + \\beta * ( z _ { 2 } - z _ { 1 } ) + \\gamma * ( z _ { l } - z _ { h } ) ()

这里,\(\beta\) 控制我们惩罚内部知识的程度 (类似于标准对比解码) ,而 \(\gamma\) 控制我们将最佳特定文档相对于最差文档提升的程度。

最终的 token 从这个调整后的分布中采样:

() \\begin{array} { c } { y _ { t } \\sim p _ { \\theta } ( y _ { t } | x , y _ { < t } ) = { \\mathsf { s o f t m a x } } ( \\hat { z } ) } \\ { = { \\mathsf { s o f t m a x } } ( z _ { 2 } + \\beta ( z _ { 2 } - z _ { 1 } ) + \\gamma * ( z _ { l } - z _ { h } ) ) } \\end{array} ()

从数学上讲,这也可以看作是概率的乘积:

() y _ { t } \\sim p _ { \\theta } ( y _ { t } | x _ { 2 } , y _ { < t } ) \\frac { p _ { \\theta } ( y _ { t } | x _ { 2 } , y _ { < t } ) } { p _ { \\theta } ( y _ { t } | x _ { 1 } , y _ { < t } ) } ^ { \\beta } \\frac { p _ { \\theta } ( y _ { t } | x _ { l } , y _ { < t } ) } { p _ { \\theta } ( y _ { t } | x _ { h } , y _ { < t } ) } ^ { \\gamma } ()

为什么要“动态”?

在早期的实验中,研究人员发现对 \(\beta\) 和 \(\gamma\) 使用固定值并不是最优的。有时检索到的文档都很糟糕,所以我们应该相信内部知识。有时“最好”的文档仅比“最差”的好一点点,所以放大差异会增加噪声。

为了解决这个问题,DVD 基于置信度 (Confidence) 在每个 token 步骤动态计算权重 \(\beta\) 和 \(\gamma\)。

置信度 \(C_i\) 定义为预测排名第 1 的 token 与排名第 2 的 token 之间的概率差。差距大意味着模型是果断的。

() C _ { i } = p ( y _ { t } ^ { 1 } | z _ { i } ) - p ( y _ { t } ^ { 2 } | z _ { i } ) ()

权重随后由这些置信度差距推导出来:

对于内部知识 (\(\beta\)) : 只有当模型文档时的置信度 (\(s_2\)) 显著高于文档时的置信度 (\(s_1\)) 时,我们才惩罚内部知识。 () \\beta = \\mathfrak { m } \\mathfrak { a } \\times ( C _ { 2 } - C _ { 1 } , 0 ) * \\mathbb { 1 } ( { s } _ { 2 } / { 1 0 } < { s } _ { 1 } ) ()

对于文档选择 (\(\gamma\)) : 我们基于“最佳”文档让模型比“最差”文档自信多少,来放大文档信号。 () \\gamma = \\mathsf { m a x } ( C _ { l } - C _ { h } , 0 ) ()

这确保了解码策略能够时刻适应。如果文档令人困惑,模型会退缩。如果有一个文档清楚地阐明了答案,模型就会跟进。

实验与结果

研究人员在多个基准测试中以零样本 (zero-shot) 设置评估了 DVD,包括 ALCE-ASQA、Natural Questions (NQ)、TriviaQA (TQA) 和 PopQA。他们将其与标准解码 (“Regular”) 和上下文感知解码 (CAD) 进行了比较。

主要性能

以字符串精确匹配 (String Exact Match, Str-em) 衡量的结果显示,DVD 始终优于其他方法。

表 1: 零样本设置下的 Str-em 结果。Regular-closed、-full 和 -single 分别对应无文档、所有文档拼接和单文档的常规解码。DVD-fixed 表示固定的 \\(\\beta\\) 和 \\(\\gamma\\),而 DVD-dynamic 指动态的 \\(\\beta\\) 和 \\(\\gamma\\)。

在表 1 中,注意这个递进关系:

  • Regular-closed (无文档) : 表现较差 (例如 LLaMA2-7B 在 ASQA 上为 9.28) 。
  • Regular-full (标准 RAG) : 显著提升 (12.41) 。
  • CAD: 进一步提升 (14.73) 。
  • DVD-dynamic: 性能最高 (15.85) 。

这种趋势在不同模型规模 (Mistral-7B、LLaMA2-13B、Vicuna-13B) 和数据集上都成立。动态提升最佳文档 (\(z_l\)) 并降低最差文档 (\(z_h\)) 权重的能力,比起简单地将所有文档一视同仁,提供了明显的优势。

“Top-K” 的选择重要吗?

作者利用 Top-K token 的熵来选择最佳/最差文档。\(K\) 的值重要吗?

图 2: 不同 \\(K\\) 值下的 Str-em 表现,\\(K\\) 是 token 的数量。

图 2 表明,\(K=10\) 大致是最佳点 (Sweet spot) 。

  • 如果 \(K\) 太小 (例如 1 或 2) ,熵计算太稀疏,不可靠。
  • 如果 \(K\) 太大 (接近“全部”) ,该指标会被词表长尾中成千上万个不相关的低概率 token 稀释。

选择标准分析

DVD 复杂的基于熵的选择是否真的比随机选择文档或信任检索器的排名更好?

表 2: LLaMA2-13b 在零样本设置下不同选择标准在 ALCE-ASQA 上的 Str-em 结果。选择标准指选择 \\(z _ { l }\\) 和 \\(z _ { h }\\) 的不同方法。固定权重和动态权重指固定或动态的 \\(\\beta\\) 和 \\(\\gamma\\)。详情见第 3.2 节。

表 2 证实了这一假设。随机选择文档的效果比标准检索更差。有趣的是,基于检索 (Retrieval) 排名进行选择 (假设排名第 1 的文档就是 \(z_l\)) 效果不错,但 DVD 的熵方法 (Our DVD) 仍然胜出。这意味着检索器认为最好的文档,并不总是LLM 觉得对生成最有用的文档。

对文档数量的鲁棒性

最后,如果我们检索更多文档,该方法会失效吗?

表 3: LLaMA2-13b 在零样本设置下不同权重 \\(\\gamma\\) 计算方式在 ALCE-ASQA 上的 Str-em 结果。固定权重方法不需要置信度。动态权重方法基于置信度和权重的计算有多种变体。图 3: 不同 \\(N\\) 值下的 Str-em 表现,\\(N\\) 是文档数量。

图 3 (图片右侧) 显示了随着 \(N\) (文档数量) 增加时的性能表现。随着更多文档 (以及更多噪声) 的加入,标准解码 (Regular-full) 往往会略微下降。然而,DVD (粉色线) 保持了高于基线的性能差距,证明即使上下文窗口变得拥挤,它也能有效过滤噪声。

结论与启示

DVD 论文提出了一个令人信服的观点: RAG 的性能不仅仅在于更好的检索,还在于更智能的解码。

通过将生成阶段视为不同上下文来源之间的动态竞争,DVD 允许 LLM “聆听”批次中最清晰的信号。主要收获如下:

  1. 粒度至关重要: 将检索到的文档视为单个文本块 (标准 RAG) 掩盖了单个文档质量的差异。DVD 通过单独处理它们揭示了这一点。
  2. 不确定性是一种信号: 对 Top-K token 使用熵是模型自我评估哪些文档合理、哪些令人困惑的可靠方法。
  3. 动态优于静态: 基于模型置信度逐个 token 地调整外部文档的影响力,比固定超参数产生更好的结果。

虽然 DVD 在推理期间需要更高的计算资源 (因为它在一个批次中运行 \(N+2\) 次前向传播) ,但它提供了一种强大的、无需训练的方法,可以显著提高 RAG 系统的准确性和可靠性。随着 LLM 继续部署在知识密集型领域,像 DVD 这样的解码策略对于确保模型不仅阅读文档,而且真正理解该信任哪些文档将至关重要。