MAGIC用最优传输免训练压缩多向量检索,留1%仍领先

MAGIC: Marginal-Guided Compression with Optimal Transport for Efficient Visual Document Retrieval

Xu Yuan, Hua Liu, Wenqi Fan, Qing Li

cs.CV, cs.IR

2026-09-18

港理工按检索需求做最优传输压缩冻结页向量;视觉文档检索榜上留一成向量时排序分82.12,留百分之一时71.04,均高于现有合并基线。

这篇在解决什么

ColPali 这类视觉文档检索把一页拆成几百个 patch 向量,用 late-interaction 的 MaxSim 做细粒度匹配:每个 query token 找最像的那个 patch。准,但索引和打分都贵。

事后压缩(post-hoc merging)不动检索器,只把 N 个 patch 合成 K 个代表向量(文中叫 facet)。现有合并目标通常是均匀重构:每个 patch 权重一样,facet 用量也不约束。诊断很刺眼:按 MaxSim 统计,前 20% 的 patch 贡献了约 84% 的 query-token 选中。预算变紧时,均匀合并会把很少被问到的 patch 留下来,同时把真正有用的证据堆进少数几个 facet,有效使用的 facet 数远低于预算。

香港理工大学和南方科技大学把这个问题写成检索对齐的容量分配。

方法

MAGIC(Marginal-Guided Compression with Optimal Transport)是训练免费的索引期压缩。先从 MaxSim 推导一个上界:压缩后分数掉多少,可以被检索需求加权的覆盖误差控制。需求 wj 是未来 query token 选中 patch j 的概率。均匀重构把低需求 patch 的误差和高需求 patch 罚得一样重,所以上界松。

实践里人口分布未知,就用一份与评测查询不相交的校准 query-token 池去估计 wj。先从训练集页面抽视觉词典,再按「视觉激活 × 多样性」选出 Lcal=1000 个 token,对每个文档做温度 τ=0.05 的 softmax 选中频率。源边缘按这个需求加权,目标边缘强制 K 个 facet 均分质量,避免质量塌到少数中心。然后做熵正则最优传输:固定 facet 用 log-domain Sinkhorn 更新传输计划,固定计划用球面重心更新 facet,最后一次 spherical-Lloyd 读出。线上仍是标准 MaxSim,只是文档侧从 N 变成 K。

结果

主表在 ViDoRe v1、冻结 ColQwen2.5 上比事后压缩器。指标是 nDCG@5 / Recall@5。

方法r=0.1 均分r=0.01 均分
Light-ColPali81.32 / 87.9968.34 / 77.13
ColChunk79.09 / 86.1670.09 / 78.21
MAGIC82.12 / 88.3971.04 / 80.00

中等压缩(留 10%)MAGIC 略高于最强基线 Light-ColPali。激进压缩(留 1%)优势变大:nDCG@5 比 ColChunk 高 0.95,比 Light-ColPali 高 2.70。预算扫描曲线在 ColPali、Jina-v4 和多语 ViDoRe v2 上趋势一致。

消融里源边缘最关键:改成均匀源,r=0.1 时 82.12 掉到 79.11,r=0.01 时 70.71 掉到 61.88。拿掉平衡目标边缘或 Lloyd 读出,下降更小但同向。存储和延迟基本跟保留向量数走:未压缩 380.67 MB/千页、0.98 ms/查询;r=0.01 时 MAGIC 为 3.86 MB、0.06 ms,大约 99× 存储、17× 延迟。离线压缩在编码器 112.6 ms/页之上只加到 119.9 ms,低于 Light-ColPali 的 212.7 ms。

为什么重要

已经上了 ColPali / ColQwen 多向量索引的团队,不必重训检索器就能把页向量砍到 1%–10%。收益集中在最狠的压缩档,这正是存储和 MaxSim 最痛的地方。校准 token 只需 1000 个且与评测查询不相交,部署负担主要是离线扫一遍。代码已公开。

这是检索对齐的事后合并,不是新的视觉文档编码器。

局限与存疑

需求估计依赖校准池对工作负载的覆盖。稀有问法或领域视觉模式若没进池,对应 patch 会被低估。极端压缩时一个 facet 要代表许多细粒度 patch,小字段、密表、版式证据仍可能丢。校准池和压缩索引绑死在具体 backbone 的嵌入空间上,换 ColPali / ColQwen / Jina 都得各自离线跑一遍。主实验隔离的是压缩策略,不是把 MAGIC 和需要改检索器的学习式压缩做同设置对打。

术语

原文与代码

社区讨论

相关论文

全部论文解读