问题 (Problem)

传统的密集检索(Dense Retrieval)系统严重依赖大规模的、人工标注的“查询-文档”相关性数据进行训练。然而,在许多新的或特定的领域中,获取这样的标注数据成本高昂、耗时巨大,甚至是不可能的。因此,如何在没有任何相关性标签(即“零样本”或“完全无监督”)的情况下,构建一个开箱即用且性能强大的密集检索系统,是一个核心的挑战。


方法 (Methodology)

为了解决上述问题,论文提出了 HyDE (Hypothetical Document Embeddings,假设性文档嵌入) 方法。其核心思想是绕过对“查询-文档”相关性的直接建模,而是将其分解为两个独立的、更容易处理的任务。

工作流程图解 (Figure 1)
Figure1

该图清晰地展示了 HyDE 的两步流程:

  1. 生成 (Generation):用户的查询 (query) 首先与一个任务指令 (instruction) 相结合,然后被送入一个遵循指令的大语言模型(如 GPT)。该模型会生成一个“假设性”的文档,这个文档虽然内容可能是虚构的(包含幻觉),但它在语义和结构上捕捉了真实相关文档的特征。
  2. 编码与检索 (Encoding & Retrieval)
    • 生成的假设性文档被输入到一个无监督的文本编码器 (如 Contriever)中,该编码器将其压缩成一个向量。这个向量被视为原始查询的“代理”。
    • 利用这个向量,系统在预先编码好的真实文档库中进行相似度搜索,最终召回最相似的真实文档 (real document)。

核心数学公式
HyDE 的方法规避了传统密集检索中直接计算 sim(q, d) 的难题。

  1. 文档编码器 (Document Encoder)
    HyDE 使用一个通过无监督对比学习预训练的编码器 f=encd=encconf = enc_{d} = enc_{con} 来处理所有真实文档和假设性文档。

    vd=f(d)v_d = f(d)

    这个编码器 ff 的作用是将任何文档(真实的或假设的)映射到一个向量空间中。

  2. 查询向量的构建 (Query Vector Construction)
    查询向量 vqv_q 不是直接由查询 qq 编码而来,而是通过对生成的假设性文档进行编码得到的。给定一个查询 qijq_{ij} 和一个指令 INSTiINST_i,生成模型 gg 会产出一个假设性文档。查询向量是所有可能生成的假设性文档编码向量的期望值。

    E[vqij]=E[f(g(qij,INSTi))]\mathbb{E}[v_{q_{ij}}] = \mathbb{E}[f(g(q_{ij}, INST_i))]

  3. 期望的估计 (Estimating the Expectation)
    在实践中,期望值通过从生成模型 gg 中采样 N 个假设性文档 dk^\hat{d_k},然后将它们的编码向量取平均来估计。

    v^qij1Nk=1Nf(dk^)wheredk^g(qij,INSTi)\hat{v}_{q_{ij}} \approx \frac{1}{N} \sum_{k=1}^{N} f(\hat{d_k}) \quad \text{where} \quad \hat{d_k} \sim g(q_{ij}, INST_i)

    论文中还考虑将原始查询本身也作为一个“假设”,与N个生成文档的向量一起平均,以增强稳健性。

    v^qij=1N+1[k=1Nf(dk^)+f(qij)]\hat{v}_{q_{ij}} = \frac{1}{N+1} \left[ \sum_{k=1}^{N}f(\hat{d_k}) + f(q_{ij}) \right]

  4. 最终检索 (Final Retrieval)
    最后,用这个构建好的查询向量 v^qij\hat{v}_{q_{ij}} 与语料库中所有真实文档的向量 vdv_d 计算内积(相似度),并召回得分最高的文档。

    sim(qij,d)=v^qij,vdsim(q_{ij}, d) = \langle \hat{v}_{q_{ij}}, v_d \rangle


基线模型 (Baselines)

论文将 HyDE 与多类基线模型进行了比较:

  • 无监督模型:
    • BM25: 传统的基于词频的稀疏检索方法。
    • Contriever / mContriever: HyDE 所使用的底层无监督密集编码器,单独使用作为对比。
  • 有监督模型 (作为参考):
    • DPR, ANCE: 在大规模数据集 MS MARCO 上训练的监督式密集检索模型。
    • Contriever-ft / mContriever-ft: 在 MS MARCO 上进行微调后的 Contriever 模型,代表了当前先进的监督式方法。
    • mDPR, mBERT, XLM-R: 用于多语言任务比较的监督式模型。

数据集 (Datasets)

实验覆盖了多种任务和语言,以验证 HyDE 的通用性。

  • 网页搜索: TREC DL19 和 TREC DL20,两者都基于 MS MARCO 数据集。
  • 低资源检索 (BEIR benchmark): 包含7个不同领域的任务,如 Scifact (科学事实核查), Arguana (论点检索), TREC-COVID (新冠科研文献), FiQA (金融问答), DBPedia (实体检索), TREC-NEWS (新闻检索) 和 Climate-Fever (气候变化事实核查)。
  • 多语言检索 (Mr.TyDi): 涵盖斯瓦希里语 (sw)、韩语 (ko)、日语 (ja) 和孟加拉语 (bn) 四种语言。

可复现性 (Reproducibility)

  • 代码: 论文在首页明确指出其代码是开源的,并提供了 GitHub 链接。实验使用了 Pyserini 工具包进行检索。
  • 算力/模型:
    • 生成模型: 主要使用了 OpenAI 的 text-davinci-003 API。同时也测试了 Cohere (52B 参数) 和 FLAN-T5-xxl (11B 参数)。
    • 编码器模型: 使用了 Contriever (BERT-base, 110M 参数) 和 GTR-XL (T5-XL, 1.2B 参数)。
    • 论文附录中详细列出了所用模型的大小、来源和许可证信息。

一个可改进的点

指令的精细化与自适应 (Instruction Refinement and Adaptation)

论文在分析部分提到,在 FiQA(金融)和 DBPedia(实体)这两个任务上,HyDE 的性能与微调后的模型(Contriever-ft)差距较为明显。作者推测,这可能是因为用于这些任务的指令“欠指定”(under-specification)。他们认为,设计更精巧、更具针对性的指令(more elaborate prompts)可能会提升性能

这是一个非常直接的改进方向:

  • 可以研究如何根据查询的意图或领域,自动生成或选择最优的指令。例如,可以训练一个小模型来判断查询属于哪个领域(金融、科学、日常问答等),然后从一个预设的指令库中选择最匹配的指令模板。
  • 甚至可以探索让大语言模型本身来“反思”和“优化”指令。例如,可以先用一个通用指令生成假设性文档,然后分析其与检索结果的初步匹配情况,再让大语言模型根据该反馈,生成一个更精确的指令,进行第二轮检索。这可以使 HyDE 具备一定的自适应能力。