问题 (Problem)

在信息检索领域,密集检索(Dense Retrieval)系统通常需要大量的标注数据(即“查询-相关文档”对)进行训练才能达到良好效果。但在许多场景下,这种标注数据是稀缺或不存在的。因此,如何在没有标注数据的情况下(即零样本 Zero-Shot 场景)构建高效的密集检索系统,是一个核心挑战。

现有的SOTA(State-of-the-art)方法,如HyDE,尝试使用大语言模型(LLM)来解决这个问题。它的思路是:针对一个用户查询,让LLM生成一篇“假想的”(hypothetical)相关文档,然后用这篇假想文档的向量去寻找语料库中内容最相似的真实文档。

然而,这种依赖LLM生成假想文档的方法存在三个主要缺陷

  1. 知识局限性:该方法严重依赖LLM自身的参数化知识。如果查询涉及特定或专有领域(如公司内部文档),LLM可能无法生成高质量、有事实依据的假想文档。
  2. 效率低下:对于每个查询,LLM都需要生成一篇完整的文档(包含大量token),这个生成过程非常耗时,导致检索延迟很高。
  3. 内容不可靠:即使给LLM提供一些参考文档作为上下文,它在生成内容时也可能出现幻觉、忽略或曲解已有信息等问题。

因此,本文要解决的问题是:如何在零样本场景下,构建一个既有效又高效的密集检索系统,同时避免上述依赖LLM生成完整文档所带来的问题?


方法 (Method)

本文提出了一种名为 ReDE-RF (Real Document Embeddings from Relevance Feedback) 的新方法。其核心思想非常巧妙:不再让LLM“创作”内容,而是让它扮演“裁判”的角色。作者将任务从“生成假想文档”重新定义为“评估已有文档的相关性”,并利用这个相关性反馈来优化查询。

ReDE-RF的完整流程如下图所示,可以分为四个主要步骤:
Figure1

  • 图例解读:上图清晰地展示了整个流程。一个关于“史上最伟大的NBA球员”的查询,首先通过一个基础的混合检索系统(BM25 + Contriever)召回初步的文档列表(Doc 1, Doc 2, Doc 3…)。然后,ReDE-RF模块中的LLM逐一判断这些文档是否相关。例如,LLM判断Doc 1不相关,而Doc 2和Doc 3相关。接着,系统只使用被判断为“相关”的文档(Doc 2, Doc 3)的向量来更新原始查询向量。最后,用这个更新后的、更精确的查询向量去Contriever索引中进行最终的相似度搜索,得到排序更优的最终结果列表(如“勒布朗·詹姆斯”、“迈克尔·乔丹”、“科比·布莱恩特”等)。

下面是每个步骤的详细技术解读:

1. 初步检索 (Initial Retrieval)
对于给定的用户查询q,首先使用一个完全无监督的混合检索系统(如传统的BM25稀疏检索 + Contriever稠密检索)从大规模文档库中召回一个初步的候选文档集D(例如,Top-20的文档)。这一步的目的是快速筛选出一批可能相关的文档,为后续LLM的精选提供素材。

2. LLM相关性反馈 (Relevance Feedback with LLMs)
这是ReDE-RF的核心。系统会遍历上一步召回的每一个候选文档d_iDd\_i \in D,并使用一个特定的提示(Prompt)去请求LLM(被称为LLMRelJudgeLLM_{Rel-Judge})判断该文档与原始查询q的相关性。这个提示要求LLM只输出一个token:“1”代表相关,“0”代表不相关。

这个过程极大地提升了效率,因为LLM不再需要生成长篇大论,只需进行一个简单的分类判断。最终,LLM会筛选出一个被认为是相关的文档子集 Dr=dr1,dr2,...,drkD_r = {d_{r_1}, d_{r_2}, ..., d_{r_{k^*}}},其中 kk^* 是相关文档的数量。

3. 更新查询表示 (Updating the Query Representation)
在获得相关文档集 DrD_r 后,ReDE-RF会用这些真实文档的向量来优化原始的查询向量。这一步的数学公式如下:

v^qReDE=1k+1(f(q)+i=1kCE[dri])\hat{v}_{q_{ReDE}} = \frac{1}{k^*+1} \left( f(q) + \sum_{i=1}^{k^*} C_E[d_{r_i}] \right)

  • 公式解读
    • f(q)f(q) 是原始查询q经过Contriever编码器得到的初始查询向量。
    • drid_{r_i} 是被LLM判断为相关的第i个真实文档。
    • CE[dri]C_E[d_{r_i}] 表示从预先计算好的文档向量索引库中,直接提取文档 drid_{r_i} 的向量。这是一个非常高效的操作,因为所有文档的向量在建索引时已经离线计算好了。
    • 整个公式的含义是:将原始查询向量与所有被LLM认证为相关的真实文档向量进行平均,从而生成一个全新的、信息更丰富、更贴近语料库内容分布的查询向量 v^qReDE\hat{v}_{q_{ReDE}}

4. 最终检索 (Final Retrieval)
使用这个优化后的查询向量 v^qReDE\hat{v}_{q_{ReDE}},在Contriever的文档向量索引中进行最终的ANN(近似最近邻)搜索,得到最终的排序结果。

特殊情况处理:如果在初步检索的文档中,LLM没有找到任何相关的文档(即 DrD_r 为空集),ReDE-RF提供了两种备选(Default)策略:

  1. 退回至Contriever:直接使用原始查询向量 f(q)f(q) 进行检索。
  2. 退回至HyDEPRFHyDE_{PRF}:在这种困难情况下,才启用计算成本较高的HyDE方法(使用初步召回的文档作为上下文)来生成假想文档进行检索。

方法蒸馏 (DistillReDE)
为了进一步解决LLM在推理时带来的延迟问题,论文还提出了一种名为DistillReDE的蒸馏方法。其目标是将ReDE-RF的强大性能“蒸馏”到一个更小的、无需LLM参与的Contriever模型中。具体做法是:

  1. 离线使用大量合成查询,并通过完整的ReDE-RF流程计算出最优的查询向量。
  2. 将这些最优向量作为“教师”信号,来微调一个标准的Contriever查询编码器。
  3. 优势在于,这个过程只更新查询编码器,无需重新为整个语料库建立文档向量索引,大大节约了成本。

Baseline

为了全面评估ReDE-RF的性能,论文选取了三类基线模型进行对比:

  1. 无监督检索模型 (不使用LLM)

    • BM25: 经典的稀疏检索模型。
    • Contriever: SOTA的无监督稠密检索模型。
    • Hybrid (BM25 + Contriever): 结合稀疏和稠密的混合模型。
    • Contriever AvgPRF: 一种伪相关性反馈方法,它不经过LLM筛选,直接将初步召回的所有文档向量进行平均来更新查询。
  2. 零样本密集检索模型 (使用LLM且无需训练)

    • HyDE: 核心对比对象,使用LLM生成假想文档。
    • HyDEPRFHyDE_{PRF}: HyDE的变种,在生成假想文档时,将初步召回的文档作为上下文。
    • PromptReps: 另一种利用LLM进行零样本检索的方法,它通过提示LLM生成一个描述性token来代表查询和文档。
  3. 有监督密集检索模型 (使用标注数据进行微调)

    • DPR, ANCE, ContrieverFT: 这些是经典的、在大量标注数据上训练过的模型,用于展示零样本方法与有监督方法之间的性能差距。

数据集 (Datasets)

实验在两大类共9个公开数据集上进行,覆盖了不同领域和资源量。评价指标统一使用 NDCG@10

  1. 高资源网页搜索数据集:

    • TREC DL19TREC DL20: 来自TREC深度学习赛道的标准测试集。
  2. 低资源BEIR基准数据集:

    • 新闻检索: TREC-News, Robust04
    • 金融问答: FiQA
    • 实体检索: DBpedia
    • 生物医学: TREC-Covid, NFCorpus
    • 事实核查: SciFact

可复现性 (Reproducibility)

论文提供了非常详细的实现细节,可复现性较高。

  • 代码和框架: 基于公开的 PyseriniHuggingFace Transformers 库实现。
  • 模型:
    • 核心LLM (LLMRelJudgeLLM_{Rel-Judge}) 使用的是 Mistral-7B-Instruct-v0.2
    • 稠密检索器使用的是 facebook/contriever
    • 论文还在消融实验中测试了Mixtral、Gemma、Llama等多种不同大小的开源LLM。
  • 算力: 实验在单张A100 GPU上完成。论文还详细报告了不同方法的平均查询延迟,这对于评估实际部署的可行性至关重要。
  • 超参数和提示: 论文附录中给出了复现HyDE和ReDE-RF所使用的全部提示语(Prompts),以及蒸馏过程的训练参数(如学习率、批大小等),为复现工作提供了便利。

可改进的几个点 (Potential Improvements)

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

  1. 对初步检索的依赖:ReDE-RF的性能上限受限于初步检索的结果。如果第一阶段召回的文档质量很差,完全不包含相关文档,那么LLM也无能为力。未来的工作可以研究如何使模型对第一阶段的检索结果不那么敏感,或者设计一种动态机制,当顶层结果不佳时自动扩大检索范围。
  2. 对LLM判断准确性的依赖:虽然LLM做判断题比做问答题简单,但它仍然可能出错。一个错误的“相关”判断可能会引入噪声,污染查询向量。如何设计更鲁棒的机制来处理或过滤LLM的潜在错误判断,是一个值得探索的方向。
  3. 延迟问题:尽管ReDE-RF比HyDE快得多,但在推理时引入LLM仍然比纯粹的稠密检索要慢。论文提出的蒸馏方法DistillReDE是一个很好的离线解决方案。对于在线服务,可以进一步探索使用更小、更专用的模型(例如,专门为相关性判断任务微调的小模型)来替代通用的7B大模型,以实现性能和速度的极致平衡。
  4. 与重排序(Reranking)的结合:实验表明,ReDE-RF(优化召回)和LLM重排序(优化排序)是互补的。可以设计一个更一体化的框架,将两者有机结合,而不是作为两个独立的串联步骤,可能会带来更大的提升。

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

这篇论文提供了多个有价值的、可供引用的发现和结论:

  1. “判断”优于“生成”:对于零样本密集检索任务,将LLM的角色从“内容生成者”转变为“相关性裁判”,不仅在低资源领域显著提升了检索效果(最高提升6%-14%),而且大幅降低了查询延迟(最高提速11倍)。
  2. 真实文档向量更可靠:使用语料库中真实文档的向量来增强查询,可以使查询表示更“接地气”,更好地适应特定领域的知识和语言风格,避免了生成式模型可能带来的领域知识缺乏或内容幻觉问题。
  3. LLM相关性反馈的有效性:简单地将初步召回的文档向量全部平均(AvgPRF)并不能提升性能,这证明了使用LLM进行精准筛选,剔除不相关文档是ReDE-RF成功的关键。
  4. 性能可被有效蒸馏:ReDE-RF的性能增益可以被成功地“蒸馏”到一个标准的稠密检索模型中,从而在不牺牲太多性能的前提下,完全移除推理阶段对LLM的依赖,实现高效部署。
  5. 召回优化与排序优化的互补性:ReDE-RF旨在提升第一阶段召回的候选项质量(能找到更多好结果),而LLM重排序则专注于优化排序(把最好的结果排到最前面)。两者功能不同但目标一致,结合使用效果更佳。
  6. 提示工程的重要性:在设计用于相关性判断的提示时,明确地给出“相关性”的定义(例如,“文档是否能直接回答查询”)比模糊的提问能带来更好的性能。