引言

想象一下,你正在一个藏书百万的图书馆里寻找特定的信息。你向图书管理员提出了一个模糊的请求。普通的图书管理员可能会根据关键词给你一份书单。而更优秀的图书管理员可能会先问一些澄清性问题来理解你的意图,然后整理出一份清单,亲自检查这些书以确保它们是相关的,最后进行交叉比对,给你一份终极阅读清单。

这个复杂的过程反映了计算机科学中零样本文档检索 (Zero-Shot Document Retrieval) 所面临的挑战。我们希望系统能为它从未见过的查询找到相关文档,而无需针对该主题进行特定训练。虽然像 GPT-4 或 Llama 这样的大型语言模型 (LLM) 已经彻底改变了这一领域,但它们并不完美。它们可能会“产生幻觉”编造信息,被文档的顺序搞混,或者在面对过多文本时失去焦点。

在这篇文章中,我们将深入探讨 GENRA (Generative Retrieval with Rank Aggregation,基于排名聚合的生成式检索) ,这是由研究人员 Georgios Katsimpras 和 Georgios Paliouras 提出的一种新颖方法。他们的方法超越了简单的搜索,通过创建一个多步骤的流水线来生成上下文、验证相关性,并且——最关键的是——使用排名聚合将多个视角结合成单一的高精度结果。

背景: 零样本检索与 LLM

在剖析 GENRA 之前,我们需要了解现代信息检索的概况。

标准方法

传统上,检索系统依赖于两种主要范式:

  1. 稀疏检索 (Sparse Retrieval) : 想想 BM25。它将查询中的关键词与文档中的关键词进行匹配。这种方法速度快,但在处理同义词或语义含义时会很吃力。
  2. 稠密检索 (Dense Retrieval) : 这使用编码器 (如 BERT 或 Contriever) 将文本转换为数学向量。相似的概念在向量空间中会彼此靠近。

在零样本设置中,这些模型必须在它们从未接受过训练的数据集上表现良好。为了提高准确性,研究人员通常会添加一个重排序 (Re-ranking) 步骤。系统首先检索 100 个文档,然后使用更强大的模型对它们进行排序,将最好的文档放在顶部。

LLM 的作用

最近,LLM 被用来增强这一过程。例如,一种名为 HyDE (Hypothetical Document Embeddings,假设性文档嵌入) 的方法要求 LLM 编写一个回答查询的虚假文档,然后搜索看起来像这个虚假文档的真实文档。

然而,依赖单次的生成或检索是有风险的。如果 LLM 生成了一个幻觉概念,搜索就会偏离轨道。如果重排序器存在偏差,有价值的文档就会被埋没。

视觉化差异

为了理解 GENRA 与这些典型设置有何不同,让我们看看系统架构。

典型检索架构与 GENRA 架构的对比。

如上方的 图 1 所示:

  • 典型检索 (a): 这是一条线性路径。查询 \(\rightarrow\) 检索器 \(\rightarrow\) 重排序器。LLM 支持这些模块,但如果它出错,就会成为单点故障。
  • GENRA 检索 (b): 这是一条分支和汇聚的路径。它包括生成、评估 (检查文档是否真的好) 和最终的聚合阶段。

核心方法: GENRA 如何工作

GENRA 之所以脱颖而出,是因为它不只是信任初始搜索。它创建了一个生成、验证和聚合的反馈循环。该方法分三个不同的步骤运行。

GENRA 流水线的三个关键步骤: 段落生成、相关性评估和排名聚合。

让我们分解 图 2 中展示的工作流程。

步骤 1: 段落生成 (扩展)

查询通常很短且模棱两可。如果你搜索“apple”,你是想要水果还是那家科技公司?

GENRA 首先提示 LLM 生成能够捕捉用户意图的信息性段落。系统不使用原始查询进行搜索,而是使用这些生成的段落来指导搜索。

  • LLM 创建一组段落 \(P\)。
  • 这些段落被编码成向量。
  • 系统将这些向量取平均值,创建一个丰富的“查询表示 (Query Representation) ”。
  • 这个增强后的查询从数据集中检索出前 \(k\) 个候选文档。

通过扩展查询,GENRA 弥合了用户简短问题与文档中详细语言之间的词汇鸿沟。

步骤 2: 相关性评估 (过滤器)

现在我们有了一份候选文档清单。但它们真的相关吗?标准方法可能只是对它们进行重排序,但 GENRA 实施了严格的有效性检查。

研究人员提出了两种方法来做到这一点:

  1. 基于 LLM 的过滤 (是/否) : 系统将查询和一次一个文档输入给 LLM,并询问: “这个文档是否回答了查询?是或否?”
  • 为什么一次一个? 将长长的文档列表提供给 LLM 往往会导致“迷失在中间 (Lost in the Middle) ”现象,即模型会忘记列表中间的项目。独立处理它们可以确保公平的评估。
  1. 重排序: 或者,他们使用专门的重排序模型 (如 RankVicuna) 对文档进行排序,只保留前 \(m\) 个。

只有通过这个“合理性检查”的文档才会进入下一阶段。这充当了一个噪声过滤器,去除了可能会混淆最终排名的不相关内容。

步骤 3: 排名聚合 (“群体的智慧”)

这是论文中最具创新性的部分。

在标准检索中,你会产生一个排名列表。如果那个列表有缺陷,你就没有后备方案了。GENRA 假设没有单一的排名是完美的。相反,它生成多个排名并将它们结合起来。

过程如下:

  1. 获取步骤 2 中的已验证文档集。
  2. 每个已验证文档视为一个新的查询。
  3. 对于每个已验证文档,执行搜索以在数据库中查找其他相似的文档。
  4. 这会产生多个文档列表 (多个排名) 。

最后,GENRA 使用排名聚合 (Rank Aggregation) 来合并这些列表。如果一个文档出现在许多不同列表的顶部,那么它极有可能是正确答案。研究人员发现, 线性聚合 (Linear Aggregation) 方法 (将文档在所有列表中的归一化分数相加) 效果最好。

这种方法减轻了偏差。即使一个生成的段落稍微偏离了主题,来自所有其他已验证文档的聚合信号也会修正最终结果。

实验与结果

为了证明这个复杂的流水线是值得的,作者在多个基准上测试了 GENRA,包括 TREC 深度学习赛道 (DL19, DL20) 和 BEIR 基准。

消融研究: 微调系统

在看最终分数之前,了解不同组件如何影响性能是很有趣的。

我们应该生成多少个段落?

在步骤 1 中,LLM 生成段落以扩展查询。越多越好吗?

折线图显示了生成段落数量对性能的影响。

图 3 显示,随着生成更多段落 (从 1 到 10) ,性能会提高,但在那之后会趋于平稳甚至下降 。 过多的生成文本会引入噪声和冗余。看起来“最佳点”是在 10 个段落左右。

我们应该保留多少个相关文档?

在步骤 2 中,系统过滤文档。如果我们保留太多,就会让噪声回来。如果我们保留太少,就会丢失信息。

折线图显示了保留的相关文档数量的影响。

图 4 显示,保留前 5 到 10 个已验证文档会产生最佳结果。超过这个范围,性能增益就会减少。这验证了严格相关性过滤器的重要性。

哪种聚合方法最好?

研究人员测试了几种结合排名的数学方法 (Borda 计数, Outrank, DIBRA) 。

表格比较了不同的排名聚合方法。

表 1 表明,简单的线性 (Linear) 聚合 (分数相加) 始终优于像 Borda 或 Outrank 这样更复杂的投票机制。有时,最简单的数学方法是最稳健的。

性能与效率

对于多步骤流水线的一个合理担忧是速度。如果必须生成文本、检查相关性并聚合排名,这难道不慢吗?

条形图比较了不同方法的执行时间。

图 5 比较了处理时间。

  • HyDE (蓝色) 在生成式方法中是最快的。
  • GENRA + Judgements (浅棕色) 比 HyDE 慢,但比完全的重排序模型快得多。
  • RankVicuna (红色/灰色) 的计算成本最高。

这表明 GENRA 在追求顶级准确性的同时,在效率上提供了一个“中间立场”。

基准测试结果

TREC 深度学习 (DL19 & DL20)

这些是检索领域的黄金标准数据集。

DL19 和 DL20 数据集上的结果。

表 2 所示,GENRA (特别是结合 RankVicuna 和 Contriever 时) 获得了最高分 (加粗显示) 。它以显著优势 (在某些指标上高出 7.4 个百分点) 优于 HyDE。这证实了额外的验证和聚合步骤相比简单的查询扩展提供了实质性的质量提升。

BEIR 基准

BEIR 是一个多样化的数据集集合 (生物医学、新闻、推文) ,旨在严格测试零样本能力。

BEIR 数据集上的结果。

表 3 强化了这一趋势。GENRA 在不同领域始终取得最佳或次佳的结果。无论是搜索 Covid-19 研究还是财经新闻,聚合策略都证明是稳健的。

现实世界应用: CrisisFACTS

作者更进一步,在 CrisisFACTS 上测试了 GENRA,这是一个涉及总结灾难期间社交媒体和新闻流的任务。这需要高度的事实准确性。

CrisisFACTS 2022 数据集上的结果。

表 4 显示,GENRA 生成的摘要在质量上与 2022 年挑战赛中的顶级系统相当甚至更好。值得注意的是,GENRA 使用开源模型实现了这一点,无需对危机数据进行微调,而竞争方法通常依赖于专有 API (如 OpenAI) 或特定训练。

结论与启示

GENRA 代表了零样本检索向前迈出的重要一步。通过承认 LLM 是可能犯错的,作者设计了一个系统,它不仅仅是向 LLM 询问答案——而是与 LLM 合作来生成、验证和交叉比对信息。

主要收获:

  1. 验证很重要: 仅仅生成上下文是不够的。你必须使用“合理性检查”步骤来验证检索到的文档是否真的相关。
  2. 聚合减少噪声: 依赖单一的排名列表是有风险的。生成源自已验证文档的多个排名并将它们结合起来,可以平滑误差并突显真实信号。
  3. 开源的力量: GENRA 使用开源模型 (如 Mistral 和 Solar) 的成功证明,我们无需仅依赖封闭的专有 API 就能构建最先进的搜索系统。

对于学生和研究人员来说,GENRA 展示了一种强大的设计模式: 流水线可靠性 。 与其试图训练一个完美的模型,我们通常可以通过将较弱的信号链接在一起并智能地聚合它们来获得更好的结果。随着 LLM 的不断发展,像 GENRA 这样结构化模型推理过程的方法很可能成为高风险信息检索的标准。