← 返回 2026-02-26

深度研究中的文本排序方法再审视 Revisiting Text Ranking in Deep Research

Chuan Meng, Litu Ou, Sean MacAvaney, Jeff Dalton 📅 2026-02-25 👍 7 2026-07-13 08:35
LLM Agent 信息检索 文本排序 检索增强 深度研究

系统评估文本排序方法在深度研究Agent中的效果,发现BM25+重排序优于大模型嵌入

前置知识

文本排序(Text Ranking)

文本排序是信息检索的核心任务,目标是给定用户查询 $q$ 和文档语料库 $C = \{d_1, d_2, \ldots, d_n\}$,返回一个按相关性排序的文档列表 $D \subseteq C$。传统流程分为两个阶段:第一阶段使用检索器(Retriever)从大规模语料库中快速召回候选文档集,第二阶段使用重排序器(Re-ranker)对候选集进行精细排序。检索器通常基于稀疏向量(如 BM25 的词袋模型)、稠密向量(如 BERT 编码的单向量或多向量)或学习稀疏表示(如 SPLADE);重排序器则使用交叉编码器(cross-encoder)对查询-文档对进行联合编码并输出相关性分数。

本文的核心任务就是评估这些文本排序方法在深度研究场景下的表现,理解其基本流程和各组件的作用是阅读本文的前提。

深度研究(Deep Research)

深度研究是近年来兴起的一类复杂信息获取任务,目标是回答需要多步推理和广泛网络搜索的查询。典型流程遵循 ReAct 范式:LLM Agent 接收用户查询后,在多个迭代中交替进行推理(生成思维链)和搜索(调用搜索引擎获取外部证据),逐步收集、综合并验证信息,最终生成答案。与传统单次检索不同,深度研究涉及数十次搜索调用和复杂的证据合成过程。

本文研究的正是深度研究场景下文本排序方法的表现。理解深度研究的迭代搜索和推理范式,才能理解为什么排序质量会影响 Agent 的整体表现。

BM25

BM25 是经典的基于词袋模型的稀疏检索方法,通过计算查询词在文档中的词频(TF)和逆文档频率(IDF)来评估相关性。它有两个关键超参数:$k_1$ 控制词频饱和度(越大则重复出现的词权重越高),$b$ 控制文档长度归一化(越大则对长文档的惩罚越重)。BM25 不需要训练,完全基于统计特征,因此在域外数据上表现稳定。默认参数通常设为 $k_1=0.9, b=0.4$。

本文发现 BM25 在合适的参数配置下,甚至能超越 7B/8B 参数量的神经网络检索器,这一发现在深度研究场景中具有重要实践意义。

查询格式失配(Query Format Mismatch)

神经网络排序模型通常在特定格式的查询上训练,例如 MS MARCO 数据集使用自然语言问题(如 "What is the capital of France?")。然而在深度研究中,Agent 发出的搜索查询往往是关键词风格(如 "France capital city" 或带引号的精确匹配)。当推理时的查询格式与训练时的格式不一致时,神经网络模型的性能会显著下降,这就是查询格式失配问题。

本文发现这是限制神经排序器在深度研究中表现的关键瓶颈,并提出了 Q2Q 方法来缓解这一问题,这是本文的核心贡献之一。

研究动机

深度研究任务中,搜索是最核心的组件——Agent 需要在多轮迭代中通过搜索引擎获取外部证据来回答复杂的多跳推理问题。然而,现有深度研究系统大多依赖不透明的黑盒 Web 搜索 API(如 Google Search、Bing Search),这些 API 的内部排序逻辑不可控,导致研究者无法系统分析文本排序方法在深度研究中的贡献。例如,Chen et al. [6] 的工作使用 Qwen3-Embed-8B 作为检索器,Sharifymoghaddam and Lin [45] 仅测试了一种重排序方法配合一种检索器,但没有人系统地比较过不同检索器范式(稀疏/稠密/学习稀疏/多向量)、不同重排序器类型(非推理型/推理型)、不同信息粒度(文档级/段落级)以及查询格式失配对排序效果的影响。这种不透明性和评估缺失使得我们无法理解深度研究系统中搜索组件的真实表现和最佳实践。

本文的目标是本文的目标是在一个可控的深度研究实验环境中,系统性地复现和评估主流文本排序方法的表现,回答三个关键研究问题:(1)段落级和文档级检索单元在深度研究中各自的效果如何?(2)不同检索器、重排序器和重排序深度构成的排序流水线中,重排序的有效性如何?(3)Agent 发出的搜索查询与排序模型训练查询之间的格式失配对性能影响有多大?通过这些评估,建立深度研究场景下文本排序的最佳实践指南。

与已有工作不同的是,本文的独特切入角度在于首次构建了一个「白盒」深度研究排序评估框架。具体而言,本文抓住了三个被忽视的关键点:第一,段落级信息单元在深度研究中的潜力被严重低估——现有系统大多以完整网页为单位进行检索,但文档过长会迅速耗尽 Agent 的上下文窗口,而段落的紧凑特性可以更高效地利用有限的上下文窗口预算,同时避免文档截断带来的信息丢失;第二,Agent 发出的搜索查询通常遵循网页搜索风格(关键词、短语、引号精确匹配),这与神经排序器训练时使用的自然语言问题存在系统性失配,而这一问题此前未被系统研究;第三,BM25 的文档长度归一化参数对文档级检索效果有巨大影响,但现有工作普遍使用默认参数,未做针对性调优。

核心方法

本文的研究方法可以类比为一个「对照实验工厂」:在一个固定的、带有标准答案的深度研究数据集(BrowseComp-Plus)上,同时部署两种开源 LLM Agent(gpt-oss-20b 和 GLM-4.7-Flash)、五种检索器(覆盖四大主流范式)和三种重排序器(覆盖不同性价比平衡点),通过控制变量的方式系统评估各组件的效果。技术路线上,作者首先为 BrowseComp-Plus 构建了段落级语料库(将原始文档切分为不超过 250 词的段落),然后在段落和文档两种粒度上分别运行各检索器,接着在检索结果上应用不同的重排序器和重排序深度,最后通过 Agent 的最终答案准确率、召回率和搜索调用次数来评估整体效果。此外,作者还提出了一个查询到问题(Q2Q)的改写方法,用 LLM 将 Agent 的关键词式搜索查询转化为自然语言问题,以缓解查询格式失配问题。

本文最核心的洞察是:深度研究场景中的文本排序问题与传统信息检索存在系统性差异,而这些差异被现有黑盒评估所掩盖。具体而言,Agent 发出的搜索查询不是自然语言问题,而是类似网页搜索的关键词组合(如带引号的精确匹配),这种格式对词汇检索器(如 BM25)有利,但会严重损害神经网络检索器的性能——因为这些模型是在自然语言问题上训练的。这一发现意味着,在深度研究中简单地将最先进的神经排序器替换 BM25 并不一定能带来提升,反而可能适得其反。同时,段落级检索单元相比文档级单元有结构性优势:更紧凑的表示允许 Agent 在有限的上下文窗口内进行更多轮搜索和推理,从而提高最终答案准确率。这一发现对深度研究系统设计具有直接的指导意义。

方法步骤详情

本文的方法包含以下步骤:(1)段落语料库构建:使用 spaCy 工具将 BrowseComp-Plus 的 100,195 篇文档(平均 7,845 tokens/篇)切分为 2,772,255 个段落(平均 279 tokens/段),每段不超过 250 词,保留文档标题作为段落前缀以提供上下文。(2)检索器部署:在段落和文档两种语料库上分别运行 BM25、SPLADE-v3、RepLLaMA、Qwen3-Embed-8B 和 ColBERTv2 五种检索器,每次搜索返回 Top-5 结果,文档级结果截断为前 512 tokens。(3)重排序流水线:在检索结果上应用 monoT5-3B、RankLLaMA-7B 和 Rank1-7B 三种重排序器,测试重排序深度 10、20、50 三个设置。(4)端到端评估:两种 Agent(gpt-oss-20b 和 GLM-4.7-Flash)在 830 个查询上运行,最大迭代次数 100,输出 token 上限 40,000,记录搜索调用次数、召回率和答案准确率。(5)Q2Q 改写:使用 gpt-oss-20b(低推理模式)将 Agent 的关键词查询转化为自然语言问题,可选地加入 Agent 的最近推理轨迹作为额外上下文。

技术新颖性

本文的技术新颖性体现在三个方面。首先,这是首次在深度研究场景中系统复现如此广泛的文本排序方法集合(5 种检索器 × 3 种重排序器 × 多种深度),此前工作最多测试 1-2 种配置。其次,Q2Q 查询改写方法是一个简单但有效的创新——它利用 Agent 自身的推理轨迹来消除搜索查询的歧义性,将 "61,880" football attendance 改写为 What football match had an attendance of 61,880?,使神经排序器能够正确理解搜索意图。与直接用查询改写不同,加入推理轨迹(Q+R 变体)对消除歧义至关重要——仅用原始查询(Q 变体)几乎没有改善。第三,对 BM25 文档长度归一化的深入分析揭示了一个被广泛忽视的问题:默认参数 $k_1=0.9, b=0.4$ 在文档级检索上表现极差,而文档导向的参数 $k_1=10, b=1$ 能带来 76.8% 的召回率提升。

实验结果

本文的实验结果可以归纳为几个核心发现。第一,段落级检索单元全面优于文档级单元(不使用全文阅读器):在 gpt-oss-20b Agent 上,SPLADE-v3 在段落语料库上达到 0.516 准确率,比文档语料库上的 0.476 提升了 8.4%;这种优势在上下文窗口较小的 Agent 上更为显著,因为段落的紧凑性允许进行更多轮搜索和推理(gpt-oss-20b 在段落上的完成率为 0.980,文档上仅 0.824)。第二,BM25 在段落语料库上出人意料地强劲:gpt-oss-20b 配合 BM25 达到 0.572 准确率和 0.616 召回率,是所有检索设置中的最高值。这与 Agent 查询的网页搜索风格(关键词、引号精确匹配)高度吻合。第三,单向量稠密检索器(RepLLaMA-7B、Qwen3-Embed-8B)尽管参数量远大于 BERT 级别的 SPLADE-v3 和 ColBERTv2,但表现一致较差,印证了单向量方法在域外数据上泛化能力不足的已知问题。第四,全文阅读器在文档语料库上有效(gpt-oss-20b + SPLADE-v3 准确率从 0.476 提升到 0.529),但在段落语料库上略有负面效果(从 0.572 降到 0.542),因为段落本身已提供对相关文本段的直接访问。第五,重排序持续有效:gpt-oss-20b 使用 BM25 + monoT5-3B(深度 50)达到最佳性能——0.716 召回率和 0.689 准确率,相比无重排序分别提升 16.23% 和 20.45%,同时搜索调用减少 10.98%。令人意外的是,基于推理的重排序器 Rank1-7B 没有表现出明显优势,因为它倾向于错误解读关键词式查询的语义(例如将独立关键词 "radiation" 和 "protein" 误解为一个语义单元)。第六,Q2Q 方法有效缓解查询格式失配:Q2Q (Q+R) 在 SPLADE-v3 上带来 7.34% 召回率和 7.95% 准确率的相对提升,在 Qwen3-Embed-8B 上分别为 7.91% 和 10.07%。

BrowseComp-Plus 数据集统计
Table 1: BrowseComp-Plus 数据集统计
Agent 复现结果的 sanity check 对比
Table 2: Agent 复现结果的 sanity check 对比
gpt-oss-20b Agent 在不同检索器上的端到端性能
Table 3: gpt-oss-20b Agent 在不同检索器上的端到端性能
GLM-4.7-Flash Agent 在不同检索器上的端到端性能
Table 4: GLM-4.7-Flash Agent 在不同检索器上的端到端性能
BM25 不同超参数设置下的 Agent 性能
Table 7: BM25 不同超参数设置下的 Agent 性能
gpt-oss-20b 在段落语料库上不同排序流水线的性能
Table 8: gpt-oss-20b 在段落语料库上不同排序流水线的性能
Q2Q 查询改写方法在不同检索器上的效果
Table 11: Q2Q 查询改写方法在不同检索器上的效果
Rank1 推理重排序器的失败案例
Table 10: Rank1 推理重排序器的失败案例
Agent 发出的搜索查询示例
Table 5: Agent 发出的搜索查询示例
查看结构化数据
任务指标本文基线提升
深度研究端到端答案准确率 Accuracy 0.689(BM25 + monoT5-3B depth=50, gpt-oss-20b) 0.421(Qwen3-Embed-8B, gpt-oss-20b, 文档语料库,Chen et al. [6] 复现) +63.7% 相对提升
深度研究端到端召回率 Recall 0.716(BM25 + monoT5-3B depth=50, gpt-oss-20b) 0.570(Qwen3-Embed-8B, gpt-oss-20b, 文档语料库) +25.6% 相对提升
段落 vs 文档检索准确率(SPLADE-v3) Accuracy 0.516(段落语料库) 0.476(文档语料库) +8.4% 相对提升(gpt-oss-20b)
Q2Q 查询改写效果(SPLADE-v3) Accuracy 0.557(Q2Q Q+R) 0.516(原始查询) +7.95% 相对提升
BM25 参数调优效果 Recall 0.647($k_1=10, b=1$, 文档语料库) 0.366(默认 $k_1=0.9, b=0.4$, 文档语料库) +76.8% 相对提升

局限与改进

本文存在若干局限性。首先,实验仅使用了两种开源 LLM Agent(gpt-oss-20b 和 GLM-4.7-Flash),模型规模和家族覆盖有限,作者自己也承认评估更多 LLM 和更大模型是未来方向。其次,数据集 BrowseComp-Plus 仅包含 830 个事实性查询,且所有查询都有简短客观的答案,不涉及需要长文本生成的开放式问题,结论在更广泛的深度研究场景中的泛化性有待验证。第三,BM25 参数调优($k_1=10, b=1$)是在所有查询上直接进行的(因为缺少验证集),存在过拟合风险,作者也建议读者在比较调优后的 BM25 结果时需谨慎。第四,Q2Q 方法需要额外调用 LLM 进行查询改写,增加了推理延迟和成本,但论文未评估这一开销。第五,重排序器均基于 MS MARCO 训练,其在深度研究场景中的训练-推理失配问题同样存在,但本文未探索针对深度研究的重排序器微调。第六,本文仅测试了 Top-5 检索返回策略,未系统探索返回文档数量的影响。

独立分析的弱点

本文存在几个值得改进的弱点。首先,Q2Q 方法的实用性有待提升——它使用 gpt-oss-20b 的低推理模式来改写查询,每次改写都需要一次 LLM 推理调用,这在 Agent 已经需要数十次搜索调用的场景下会带来显著的额外成本和延迟。改进方向是训练一个轻量级的查询改写模型(如微调一个小型 T5 模型),或探索基于规则的查询规范化方法。其次,论文未探索检索器和重排序器的联合优化——例如是否可以将 Q2Q 改写直接集成到神经检索器的训练过程中,从源头解决查询格式失配问题。第三,段落切分策略固定为 250 词的朴素分段,未考虑语义完整性——基于语义边界的段落切分(如使用文本分割模型)可能进一步提升段落级检索质量。第四,论文仅在单一数据集(BrowseComp-Plus)上实验,该数据集的文档语料来自网络爬取,结论在学术文献搜索、企业知识库等其他深度研究场景中的泛化性未知。

未来方向

作者提出了三个未来方向:评估更多 LLM Agent 和更大模型规模以验证结论的泛化性;探索更多排序器和配置(如排序的 scaling laws);将深度研究扩展到对话式场景。基于本文成果,还可以延伸出几个方向:(1)开发面向深度研究的专用排序模型——在 Agent 生成的查询-文档对上微调检索器和重排序器,从训练端消除查询格式失配;(2)探索自适应检索策略——根据查询特征动态选择使用 BM25 还是神经检索器,而非固定使用单一检索器;(3)研究排序质量与 Agent 推理效率的关系——更好的排序结果是否能让 Agent 用更少的搜索轮次达到相同或更好的准确率,从而降低推理成本;(4)将 Q2Q 思路扩展为 Agent 感知的检索框架,利用 Agent 的完整推理状态(而不仅仅是最近一次推理轨迹)来改进查询理解。

复现评估

本文的复现性非常好。作者在 GitHub 上开源了全部代码、数据和 Agent 生成的轨迹(https://github.com/ChuanMeng/text-ranking-in-deep-research)。实验使用了公开可用的模型(gpt-oss-20b、GLM-4.7-Flash、BM25 via Pyserini、SPLADE-v3、RepLLaMA、ColBERTv2 等),数据集 BrowseComp-Plus 也已公开。硬件方面,实验使用了 NVIDIA RTX 6000 Ada (48GB)、H100 (80GB) 和 H200 (141GB) GPU,其中 Agent 部署使用 vLLM,检索器和重排序器分别使用 Tevatron、PyLate、PyTerrier_t5 等开源框架。复现的主要门槛在于 GPU 资源——运行 830 个查询、每个查询最多 100 次迭代的端到端实验需要大量 GPU 时间,但论文的 sanity check 表明在相同配置下可以高度复现已发表的结果。段落语料库的构建使用了标准的 spaCy 工具,流程清晰可复现。