这是一篇关于如何改进无监督密集检索模型的论文。密集检索(Dense Retrieval)通过将查询(Query)和文档(Passage)都编码成向量,然后在向量空间中寻找最相似的文档来工作。

问题 (Problem)

传统的密集检索模型严重依赖大量的人工标注数据,这使得它们在新领域的应用成本高昂且泛化能力不足。

为了解决这个问题,研究界提出了无监督的对比预训练方法,例如 Contriever 模型。这类方法通过在无标签的文档中自动构建正样本对(例如,从同一篇文档中随机裁剪出两段文字作为“查询”和“相关文档”)来进行学习。

然而,这种自动构建的方式存在一个核心缺陷:“假正例”(False Positives)问题。如下图1所示,一篇文档中相邻的两个句子也可能在语义上毫不相关。如果模型被强制认为它们是相关的,就会学习到错误的表示,从而损害检索性能。

Figure1
图1:论文中的一个例子,源自维基百科。高亮的两个句子虽然来自同一篇文章,但内容上几乎没有关联。随机裁剪很容易将它们构造成一个“假正例”对。

本文提出的 ReContriever 模型,旨在解决无监督预训练中的“假正例”问题。

方法 (Method)

ReContriever 的核心思想是让模型在训练过程中学会区分“真”正例和“假”正例,并对前者赋予更高的学习权重。它建立在 Contriever 模型之上,并引入了两个关键组件:“一文多对”策略和**“相关性感知对比损失”**。

一文多对 (One-Document-Multi-Pair)

传统的对比学习方法通常从一个文档中只生成一个正样本对 (q, d+)。为了更充分地利用数据并为后续的相关性评估提供基础,ReContriever 采用“一文多对”策略。

具体来说,对于一个文档 T,它会首先裁剪出一个固定的“查询”段落 q,然后再从该文档中裁剪出 n 个不同的“候选正例”段落 d_1+, d_2+, ..., d_n+。这样,就从单个文档中生成了 n 个正样本对。保持 q 不变是关键,因为它为后续比较这 n 个候选段落与 q 的相关性提供了一个统一的基准。

相关性感知对比损失 (Relevance-Aware Contrastive Loss)

这是该方法的核心。标准的对比学习损失函数是 InfoNCE,其目标是拉近正样本对的距离,推远负样本对的距离。其公式如下:

LInfoNCE(q,d+)=logexp(s(q,d+)/τ)exp(s(q,d+)/τ)+i=1Dexp(s(q,di)/τ)\mathcal{L}_{\text{InfoNCE}}(q, d^+) = -\log \frac{\exp(s(q, d^+) / \tau)}{\exp(s(q, d^+) / \tau) + \sum_{i=1}^{D} \exp(s(q, d_i^-) / \tau)}

其中:

  • s(q,d+)s(q, d^+) 是查询 q 和正例 d+ 的相似度得分(如点积)。
  • di{d_i^-} 是一系列负例文档。
  • τ\tau 是一个温度超参数。

传统方法中,一个批次的总损失是所有样本对 InfoNCE 损失的平均值。

ReContriever 对此进行了改进,引入了相关性权重。它利用模型自身在当前训练阶段的能力来充当一个“不完美的预言家”,评估每个正样本对的“可信度”。改进后的损失函数 LrelevanceL_{\text{relevance}} 如下:

Lrelevance=1mi=1mj=1nsθ(qi,dij+)k=1nsθ(qi,dik+)相关性权重LInfoNCE(qi,dij+)\mathcal{L}_{\text{relevance}} = \frac{1}{m} \sum_{i=1}^{m} \sum_{j=1}^{n} \underbrace{\frac{s_{\theta}(q_i, d_{ij}^+)}{\sum_{k=1}^{n} s_{\theta}(q_i, d_{ik}^+)}}_{\text{相关性权重}} \cdot \mathcal{L}_{\text{InfoNCE}}(q_i, d_{ij}^+)

其中:

  • m 是一个批次中的文档数量,n 是每个文档生成的正样本对数量。
  • sθ(qi,dij+)s_{\theta}(q_i, d_{ij}^+) 是模型(参数为 θ\theta)计算出的第 i 个文档的查询 qiq_i 与其第 j 个正例 dij+d_{ij}^+ 之间的相似度。
  • 相关性权重部分是关键:对于源自同一个文档 i 的所有 n 个正样本对,模型会计算它们各自的相似度,然后进行归一化。模型认为更相关的样本对(即 sθs_{\theta} 得分更高)会获得更大的权重,从而在损失计算中占据主导地位。反之,那些可能是“假正例”的样本对权重会很小,对模型更新的影响也随之减弱。

通过这种方式,ReContriever 能够自适应地关注那些质量更高的正样本对,从而减轻“假正例”带来的负面影响。

Baseline (对比模型)

论文将 ReContriever 与多个强大的基线模型进行了比较:

  • 传统稀疏检索模型: BM25。
  • 无监督密集检索模型:
    • 基于对比学习: Contriever (主要对比对象), SimCSE, coCondenser, Spider。
    • 基于自编码: RetroMAE。
  • 有监督密集检索模型 (作为参考): DPR。

数据集 (Datasets)

模型在两个主流的评测基准上进行了评估:

  1. BEIR: 一个异构的信息检索评测基准,包含了15个不同的公开数据集,用于评估模型的零样本(zero-shot)泛化能力。
  2. 开放域问答 (Open-Domain QA): 三个代表性的问答检索数据集:Natural Questions (NQ), TriviaQA, 和 WebQuestions (WQ)。

此外,还在4个特定领域的语料库上进行了进一步预训练的实验,以测试模型的实际应用潜力。

可复现性 (Reproducibility)

  • 代码: 论文明确指出代码是公开的(在GitHub上:Yibin-Lei/ReContriever)。代码基于 Pytorch、Huggingface-Transformers 和 Contriever 的官方代码实现,具有较好的可复现基础。
  • 算力:
    • 预训练: 在 16 块 NVIDIA A100 GPU 上进行,批处理大小为 2048,训练了 500,000 步。
    • 领域内预训练: 在 8 块 NVIDIA A100 GPU 上进行。
    • 少样本实验: 在单块 NVIDIA A100 GPU 上进行。
    • 模型从 BERT-base-uncased 初始化。这些详细的配置和算力需求为复现工作提供了清晰的指引。

可改进的几个点 (Potential Improvements)

论文在局限性部分也坦诚地指出了几个未来可以改进的方向:

  1. 通用性仍有不足: 尽管 ReContriever 表现出色,但在零样本、通用场景下,其性能仍然落后于经典的 BM25 模型。这意味着在面对一个全新的领域时,如果想获得最佳性能,可能仍需要基于该领域的语料进行额外的预训练,这在一定程度上限制了它的即开即用性。
  2. 潜在的社会偏见: 模型基于 BERT-base 初始化,因此不可避免地会继承其预训练语料中可能存在的社会偏见(如性别、种族歧视等),这在使用时需要特别注意,并可能需要采取去偏见措施。

可以被引用的一些结论 (Citable Conclusions)

  1. 核心贡献: 通过“一文多对”和“相关性感知对比损失”,ReContriever 有效缓解了无监督对比学习中的“假正例”问题,为密集检索提供了一个更鲁棒的预训练范式。
  2. 性能超越 SOTA: 在 BEIR 基准的15个任务中,ReContriever 在10个任务上优于之前的最强无监督模型 Contriever,平均排名第一。在开放域问答检索任务中,性能也几乎全面领先于所有无监督方法。
  3. 实践应用价值高:
    • 领域适应性强: 在特定领域的语料上进行短暂的二次预训练后,ReContriever 能够稳定地超越强大的 BM25 基线,展现了很好的领域适应潜力。
    • 少样本学习能力强: 在只有少量(例如128个)标注样本的情况下进行微调,ReContriever 的性能可以媲美使用数千个样本训练的有监督 DPR 模型,这对于标注数据稀缺的场景非常有价值。
  4. 方法组件的必要性: 消融实验证明,“一文多对”策略和“相关性感知损失”缺一不可。单独使用相关性感知损失甚至会导致性能下降,说明两者结合才能产生协同效应,共同提升模型性能。