交叉编码器预算不够时,高斯过程只解top-k入选边界

BoundaryMORPH: Budgeted Reranking via Active Set Selection for Diffuse Retrieval

Eylon Caplan, Shamik Roy, Shib Sankar Dasgupta, Yingfan Wang, Rashmi Gangadharaiah

cs.IR

2026-09-23

Purdue与AWS用高斯过程把有限交叉编码器调用花在上下文容量的入选边界上,三套开放查询上nCG@100比最强基线最高多5.4点。

这篇在解决什么

开放式查询在 RAG 里经常是「弥散」的:真正相关的文档有几十上百篇,散落在双编码器召回的长名单里。生成端的上下文容量 \(k\) 事先就定好,比如塞 100 篇;交叉编码器(cross-encoder,同时看查询和文档的精排模型)却受延迟限制,预算 \(B\) 往往小于 \(k\)。文中一个例子是 144 篇金标相关、\(k=100\)、\(B=25\)。

标准做法是把交叉编码器打在双编码器的前 \(B\) 名,剩下的按原排序填进窗口。这有两处结构性浪费。已经稳进 top-\(k\) 的文档还在被反复确认;名单更靠后、真正可能翻盘的文档却没人看。\(B<k\) 时,有 \(k-B\) 个席位根本得不到交叉编码器的信息。

问题因此变成资源分配:这 \(B\) 次调用花在哪,才能让最后交给生成器的 \(k\) 篇尽量相关。

方法

BoundaryMORPH 把这件事做成带预算的 top-\(k\) 集合选择,核心是一个高斯过程代理。

先验不从零开始。双编码器的 MIPS 百分位排名被当成先验均值:名单头部接近 1,尾部接近 0。高斯过程拟合的是交叉编码器分数相对这条先验的残差。没被打分的区域会退回相信双编码器,每次调用只是把这条曲面掰弯,不用重建。核函数用文档嵌入上的 von Mises–Fisher 方向核,相近文档的观测会传到邻居。查询向量本身作为一次零成本的满分观测,提前把查询附近的方差捏小。

采集规则也不再追全局最高分。当前后验均值把候选池切成在任集合(估计的 top-\(k\))和挑战者。标准化边界间隙最小的那一对,就是最可能站错边的 incumbent 与 challenger;这一次交叉编码器打在两者里方差更大的那个。已经稳进或稳出的文档被跳过。标准 GP-UCB 其实是 \(k=1\) 的特例。

候选池取 Qwen3-Embedding-4B 的 top-10000。算法无额外可调参数。核矩阵 \(O(N^2)\),后验更新 \(O(B^3 N)\),实测延迟仍由交叉编码器推理主导。

结果

评测集是经过「至少 20 篇相关」过滤的弥散查询:NeuCLIR 85 条(中位相关 51)、Robust04 187 条(62)、TravelDest 99 条(462)。主模型对是 multilingual-e5-large 加 zerank-2。指标用 nCG@\(k\)(相对人类标注的最优 \(k\) 集合)和 CE-nCG@\(k\)(相对交叉编码器自己的最优 \(k\) 集合),因为这里关心的是集合质量,不是集合内部排序。

主表(\(B=25/50\),\(k=50/100/200\))上 BoundaryMORPH 全部配置第一,BAGEL 第二。BAGEL 也是高斯过程,但零先验、用 UCB 追最大值。

数据集设置BoundaryMORPHBAGEL单阶段重排
NeuCLIRB=25, nCG@10055.151.446.2
Robust04B=25, nCG@10046.441.037.1
TravelDestB=25, nCG@10039.835.528.4
NeuCLIRB=50, nCG@10059.255.746.2

摘要里相对最强基线最高 +5.4 nCG@100,对应 Robust04、\(B=25\)、\(k=100\)。平均看,nCG@100 比第二名高 3.8 个百分点,CE-nCG@200 高 7.3 个百分点。换嵌入和交叉编码器,差距仍在。

两个组件都拆不掉:去掉边界采集,nCG 降 1.5–2.6 个百分点;去掉 MIPS 先验,降 2.1–3.8 个百分点。给算法的 \(k\) 与评测的 \(k\) 对齐时分数最高,说明它真的在为那个容量优化。

增益来自少打稳赢的文档。最终 top-\(k\) 里有相当一部分相关度来自从未打分的文档。多模态质量(次峰上的突出相关质量)与相对 BAGEL 的优势 Spearman \(\rho=+0.59\)。追最大值的方法会把预算耗在主峰上,BoundaryMORPH 会跨到第二语义峰。

为什么重要

Deep research 和开放式 RAG 的真实约束经常是 \(B<k\)。这时把交叉编码器当成「把前 \(B\) 名排得更准」的工具,方向就错了。该解的是集合成员资格。方法无训练、无超参扫描,可以塞进现有双编码器加交叉编码器流水线。同样 25 次精排调用,可以覆盖比单阶段重排更宽的语义峰。

这是选择策略的改进,不是新的嵌入或交叉编码器。召回池里没有的文档,它也捞不回来。

局限与存疑

高斯过程必须等每次交叉编码器返回再更新,所以是串行的;大批量并行的生产环境里,单阶段重排可以靠 batch 摊掉延迟。精确后验随 \(B\) 三次方增长,\(B\le 200\) 还轻,\(B=500\) 时矩阵求逆可超过 30 秒。容量被建模成文档数 \(k\),真实窗口卡的是 token;分块后文档长度接近时这个近似说得通,变长 chunk 还没适配。评测只留了相关文档不少于 20 的查询,事实型短查询不在范围内。

主实验候选池已经是 embedding top-10000,比较的是预算内如何选,不是从全库召回。nCG 相对人类标注,CE-nCG 相对交叉编码器自身,两者一起看更稳,但交叉编码器如果系统性偏,集合仍会跟着偏。

术语

原文与代码

社区讨论

相关论文

全部论文解读