什么是段落重排序(Passage Re-ranking)?
段落重排序(Passage Re-ranking)是检索增强流程中的第二阶段排序步骤:先由召回模型取回一批候选段落,再用更强的模型对候选逐一打分并重新排列顺序。arXiv 论文《Passage Re-ranking with BERT》描述了用 BERT 做基于查询的段落重排序的一种实现,并报告其在 TREC-CAR 与 MS MARCO 段落检索任务上的结果。
段落重排序(Passage Re-ranking)指在检索流程中,对已经由前一级检索器召回的一批候选段落,用另一个(通常计算代价更高、表达能力更强的)模型重新评估每个段落与查询的相关程度,并据此重新排列候选顺序的做法。它要解决的问题是:单靠快速召回得到的排序往往不够精确,而把最精确的模型直接用在全部文档上又太慢,于是把「找得全」和「排得准」拆成两个阶段来完成。
为什么重要
在大规模文本集合上做检索,通常面临一个两难。若直接用复杂模型给集合里的每一段打分,代价随集合规模线性增长,实际不可行;若只用倒排索引、词频统计一类轻量方法,虽然能在毫秒级返回结果,但排序质量受限于匹配信号的表达能力,语义相近但用词不同的段落容易被漏掉或排到后面。
两阶段检索正是为缓解这一矛盾而出现的:第一阶段(召回)追求速度与覆盖率,从海量集合中取回一个规模可控的候选集;第二阶段(重排序)只在这个小得多的候选集上工作,因此可以承担昂贵得多的计算。段落重排序就是第二阶段的具体形态之一。它的价值在于,排序质量直接决定了后续环节能拿到什么材料——在检索增强(retrieval-augmented)的问答、开放域问答等场景中,最终答案往往由排在最前面的若干段落决定,因此把真正相关的段落推到前列,比单纯扩大候选集更有效。
工作机制
段落重排序的核心思路可以拆成几个要点。
- 输入是「查询 + 单个段落」的配对。 与召回阶段把查询和段落分别编码、再比较向量不同,重排序模型通常把查询与候选段落放在一起送入模型,让模型直接建模两者之间的交互关系。这种交互式打分比独立编码更贵,但也更能捕捉细粒度的相关性。
- 候选集来自上一级检索器。 重排序本身不负责从全库中找段落,它只处理已经召回的那一批。因此它的效果上限受召回率约束:如果正确段落根本没被召回,重排序无从补救。
- 打分后按分数重新排列。 模型为每个候选段落输出一个相关性分数,系统据此对候选重新排序,取前若干条交给下游使用。评价这类系统时常用的指标包括 MRR@10 等排序质量指标。
- 代价换质量。 因为要对每个候选段落单独跑一次模型前向计算,重排序的延迟与候选数量成正比,这也是候选集规模需要权衡的原因。
arXiv 论文《Passage Re-ranking with BERT》给出的做法属于上述框架的一种具体实现。该论文摘要称,其系统是对 BERT 用于基于查询的段落重排序的一次「简单重新实现」(simple re-implementation)。论文报告称,该系统在 TREC-CAR 数据集上达到当时的最佳水平,并在 MS MARCO 段落检索任务的排行榜上位列第一,在 MRR@10 上相对此前最佳结果提升了 27%(相对值)。这些结果出自该论文自身的报告,属于作者在其设定与数据集上的结论。
典型例子
该论文摘要中提到的具体对象包括:
- TREC-CAR 数据集:论文称其系统在该数据集上达到当时的最佳水平(state of the art)。
- MS MARCO 段落检索任务:论文称其系统是该任务排行榜上的第一名,并在 MRR@10 指标上相对此前最佳结果提升 27%。
- BERT:论文将其作为重排序所用的预训练神经模型。摘要同时把 ELMo、OpenAI GPT 与 BERT 并列为当时在问答、自然语言推理等任务上取得显著效果的预训练模型。
- 可复现代码:论文摘要说明,用于复现其结果的代码已公开提供。
需要说明的是,上述数字与排名均来自该论文摘要的陈述,反映的是论文提交与修订时所处的评测状态,并不代表此后各数据集或排行榜上的持续排名。
边界与常见误解
第一,段落重排序不是检索的全部。它依赖上游召回提供候选,因此不能替代召回阶段;把重排序当作「从全库直接找答案」的手段,会立刻遇到计算量问题。
第二,重排序模型的效果高度依赖训练数据与领域。论文报告的结果是在 TREC-CAR 与 MS MARCO 这类特定数据集与任务设定下取得的,不能直接外推到任意语言、任意领域或任意文档类型。
第三,「重排序提升 27%」这类数字有明确限定:它是 MRR@10 上的相对提升,比较对象是论文所述的此前最佳结果,且限定在 MS MARCO 段落检索任务上。把它读成绝对提升、或读成对所有检索场景的普遍增益,都是误读。
第四,重排序有明确的成本。逐候选打分意味着延迟随候选数量增长,在延迟敏感的应用中需要在候选规模与排序质量之间取舍;同时,引入一个额外的神经模型也增加了部署与维护的复杂度。
第五,该论文自述其实现是「简单重新实现」,即把已有的预训练模型套用到重排序任务上,而非提出全新的模型架构。因此把它理解为「某种新模型」并不准确,它更接近一种任务设定与工程做法的确立。