如果你一直关注大型语言模型 (LLMs) 的爆发,你可能对检索增强生成 (Retrieval-Augmented Generation, RAG) 并不陌生。这是构建能够在训练数据之外“知晓”事物的 AI 系统的标准架构。其公式通常很简单: 用户提问,检索器从数据库 (如维基百科) 中搜寻相关的文本块,然后 LLM 基于这些文本块合成答案。

然而,在这个公式中存在一个研究人员经常忽视的隐藏变量: 粒度 (Granularity)

当我们对数据建立索引时,这些文本块应该多大?我们应该检索整个文档吗?段落?还是句子?多年来,行业标准一直是 100个单词的段落 (Passage) 。 这似乎是一个“恰到好处”的区域 (Goldilocks zone) ——既不太长,也不太短。

但一篇题为 “Dense X Retrieval: What Retrieval Granularity Should We Use?” 的迷人研究论文挑战了这一假设。研究人员认为,段落通常充满了无关的噪声,而句子则缺乏必要的语境。他们提出了一种改变游戏规则的新检索单元: 命题 (Proposition)

在这篇文章中,我们将深入探讨这篇论文,了解为什么检索单元的大小至关重要,什么是“命题”,以及它如何显著提高开放域问答 (QA) 的性能。

段落和句子存在的问题

要理解为什么我们需要一种新的检索单元,首先需要看看现有方法的缺陷。大多数密集检索器 (如 DPR 或 Contriever) 的训练目标是将查询和文档映射到向量空间中。

段落 (噪声太多)

通常,我们将文档切分为固定长度的段落 (例如,100个单词) 。

  • 优点: 它们通常包含足够的上下文来理解主题。
  • 缺点: 它们包含大量“废话”。如果一个100词的段落中只有一句话包含答案,那么剩下的90个词可能是关于日期、其他人或旁支故事的无关细节。这种噪声会分散检索器的注意力 (降低相关性得分) ,并在生成答案时混淆 LLM。

句子 (太过模糊)

或者,我们可以索引单个句子。

  • 优点: 信息密度高。精确。
  • 缺点: 它们通常缺乏语境。考虑这个句子: “他在周二签署了该法案使其成为法律。” 如果你单独检索到这句话,你根本不知道“他”是谁,或者“该法案”指的是什么。没有这些语境,这句话对于回答问题毫无用处。

“恰到好处”的困境

研究人员在下图中完美地展示了这个问题。

三种检索单元粒度的示例: 段落、句子和命题。命题简洁且自包含。 图 1: 比较三种粒度级别。请注意,段落 (蓝色) 包含了关于修复工作的无关细节。句子 (绿色) 依赖于前文的语境 (提到“塔”而不是“比萨斜塔”) 。命题 (红色) 重写了事实,使其完全自包含。

如图 1 所示, 命题 (红色部分) 弥合了这一差距。它提取了句子的语义,但将其重写为独立的陈述,用完整的实体名称替换代词。它既简洁又具有语境。

究竟什么是“命题”?

这篇论文的核心贡献是定义并将 命题 (Proposition) 作为一种检索单元付诸实践。作者基于三个原则定义了一个命题:

  1. 独特的含义: 每个命题概括了文本中一个独特的事实单元或意义片段。
  2. 最小化: 它不能进一步拆分为更小的命题。它是原子的。
  3. 语境化且自包含: 它包含所有必要的语境 (如解析代词) ,因此它可以完全独立地被理解,而无需阅读周围的文本。

这一概念汲取了语言学和语义评估的灵感,但将其应用于密集检索索引是一种新颖的方法。目标是创建一个索引,其中每个条目都是一个密集、干净的信息块。

方法论: 构建 FactoidWiki

研究人员面临着巨大的后勤挑战: 维基百科非常庞大。你不可能手动将数百万个维基百科页面重写为命题。为了解决这个问题,他们采用了“教师-学生” (Teacher-Student) 的方法来自动化该过程,创建了一个他们称之为 FactoidWiki 的数据集。

Propositionizer (命题生成器)

他们构建了一个名为 Propositionizer 的模型来自动分割文本。

  1. 种子 (GPT-4) : 他们首先使用特定的指令提示 GPT-4,将段落分解为命题。利用这一点,他们生成了一个包含 4.2 万个段落的高质量种子数据集。
  2. 学生 (Flan-T5) : 使用 GPT-4 数据作为训练集,他们微调了一个 Flan-T5-large 模型。这个更小、更快的模型随后可以处理整个英文维基百科转储数据。

这项工作的规模令人印象深刻。他们处理了 600 万个维基百科页面,生成了 2.57 亿个命题 , 相比之下只有 4100 万个段落和 1.14 亿个句子。

展示工作流程的图表: 文本由 Propositionizer 处理成 FactoidWiki,然后用于检索和 QA。 图 2: Dense X Retrieval 的流程。 (A) Propositionizer 将原始文本转换为原子事实。 (B) 这些构成了 FactoidWiki 索引。 (C) 检索器查找相关的命题。 (D) QA 模型回答用户的问题。

如图 2 所示,该过程将繁重的工作转移到了索引阶段。一旦索引建立完成 (FactoidWiki) ,检索过程 (阶段 C 和 D) 保持标准不变,但流入系统的数据质量显著提高。

实验设置

为了证明命题的优越性,作者进行了全面的评估。

  • 任务: 开放域问答 (Open-Domain Question Answering) 。
  • 数据集: Natural Questions (NQ), TriviaQA (TQA), Web Questions (WebQ), SQuAD, 和 Entity Questions (EQ)。
  • 检索模型: 他们测试了四种流行的密集检索器:
  • SimCSEContriever (无监督) 。
  • DPRGTR (有监督/在段落对上训练) 。
  • 指标: Recall@k (检索到的文档是否包含答案?) 和 Exact Match (LLM 是否生成了正确答案?) 。

这个设置非常严格,因为它既测试了无监督模型 (未学习依赖特定块大小) ,也测试了有监督模型 (明确在 100 词段落上进行了训练) 。

关键发现: 检索性能

结果惊人地一致: 按命题索引优于按段落或句子索引。

这一点尤其值得注意,因为像 DPR 和 GTR 这样的模型是被训练来检索段落的。即使它们从未在命题上进行过训练,在使用命题时它们的表现也更好。

展示不同数据集和模型下段落检索性能的表格。命题通常得分最高。 表 1: 检索性能 (Recall@5 和 Recall@20) 。请看“Avg” (平均) 列。对于像 SimCSE 和 Contriever 这样的无监督检索器,命题 (每个区块的最后一行) 提供了巨大的性能提升。

结果分析

  1. 无监督模型的主导地位: 对于像 SimCSE 这样的模型,与段落相比,使用命题将 Recall@5 平均提高了 12.0 个点 。 这表明当模型在没有偏差的情况下寻找语义相似性时,命题是最纯粹的匹配。
  2. 泛化能力: 在有监督模型训练期间未见过的数据集 (如 SQuAD 和 Entity Questions) 上,命题提供了显著的提升。这表明命题检索比段落检索能更好地泛化到新领域。

为什么命题会胜出? (信息密度)

论文中最有力的论点之一是关于信息密度 。 在 RAG 系统中,我们有一个有限的上下文窗口。我们只能向 LLM 提供一定数量的单词。

如果你检索 5 个段落 (约 500 个词) ,你可能得到 5 句实际答案和 45 句噪声。如果你检索 50 个命题 (约 500 个词) ,你得到的是 50 个独特的事实。

研究人员通过分析“召回率 vs. 词数”来可视化这一点。

展示召回率与词数对比的折线图。红线 (命题) 始终高于蓝线 (段落) 和绿线 (句子) 。 图 3: 此图显示了检索器找到答案的速度。X 轴是检索到的单词数。Y 轴是召回率。红线 (命题) 比其他线更陡峭。这意味着你可以用更少的词找到答案。

如图 3 所示,命题允许系统在更紧的预算内打包更多相关信息。对于 API 成本和延迟取决于 token 数量的实际应用来说,这是一个巨大的优势。你可以用少得多的文本达到同样的准确率。

“长尾”优势

另一个有趣的发现是命题如何处理稀有信息。研究人员根据实体频率 (问题的主体在维基百科中出现的频率) 分解了性能。

常见实体 (如“Barack Obama”或“Paris”) 对任何检索器来说都很容易。但“长尾”实体 (冷门演员、特定化合物、次要历史事件) 通常是密集检索器难以处理的地方。

召回率与实体频率。红线 (命题) 在图表左侧 (稀有实体) 显示出相对于蓝线 (段落) 的巨大差距。 图 4: 在“Entity Questions”上的性能。X 轴左侧代表稀有/不常见的实体。注意红线 (命题) 和蓝线 (段落) 之间的巨大差距。

如图 4 所示,命题的优势在稀有实体上最为明显。为什么?因为在段落中,一个稀有实体可能只被提及一次,周围充满了稀释向量嵌入的常用词。而在命题中,稀有实体是主角。嵌入完全集中在那个特定的事实单元上。

案例研究: 段落何时失效

为了具体说明这一点,让我们看看论文中提供的一些错误分析。这些例子确切地展示了为什么段落和句子会在命题成功的地方失败。

展示检索错误示例的表格。段落因干扰而失败;句子因缺乏语境而失败。 表 2: 错误分析。在 Q1 中,段落检索返回了关于 Super Bowl X (10) 的块,而不是 Super Bowl 50,因为关键词重叠。在 Q3 中,句子检索失败,因为句子使用了代词“it”而不是“pericardium” (心包) 。

  • 语境问题 (表 2 中的 Q3) : 问题询问“心包囊 (pericardial sac) ”的功能。
  • 句子检索 找到的句子是: “它将心脏与其他结构的干扰隔离开来……” 检索器给这个句子的评分很低,因为“它”不匹配“心包囊”。
  • 命题检索 找到的是: 心外膜构成心包囊的一部分,包围、保护并润滑心脏。” 通过明确命名实体,匹配成功。
  • 干扰问题 (表 2 中的 Q1) : 问题询问 Super Bowl 50 的主题。
  • 段落检索 返回了一块关于 Super Bowl X (10) 的内容,因为它讨论了主题和球衣。密集向量被关于超级碗主题的一般性讨论“干扰”了。
  • 命题检索 找到了关于 Super Bowl 50 “金禧纪念”的具体事实,因为该命题紧紧围绕那场特定的比赛。

结论与启示

论文 “Dense X Retrieval” 对我们构建 RAG 系统的方式提出了令人信服的修正。它表明我们要么多年来一直使用错误的测量单位。我们将文档视为物理纸张,将其切割成任意长度,而我们本应该将其视为事实的集合。

给学生和从业者的关键要点:

  1. 粒度至关重要: 不要只接受向量数据库的默认分块大小。尝试使用更小、更干净的单元。
  2. 密度即效率: 通过使用命题,你可以用更少的 token 检索到同样多的知识。这将带来更快、更便宜且更准确的 LLM 推理。
  3. 跨任务泛化: 如果你无法针对特定领域微调检索器,使用命题级索引是“开箱即用”提升性能的好方法。

“Propositionizer”方法确实需要高昂的前期成本——处理整个语料库以重写它并不便宜。然而,对于高性能应用程序而言,推理时的收益 (更高的准确性、更好的泛化能力和高效的提示) 很可能超过索引成本。

随着我们迈向更先进的 AI 系统,数据索引的质量将变得与模型质量同样重要。这篇论文树立了一个标杆: 检索的未来是原子化的。