每页4向量保住ColPali近八成检索质量

Generative Late-Interaction Embeddings For Visual Document Retrieval

Mohamed Eltahir, Talal Aloushan, Rose Khairoalsendi, Jana Shata, Mohammed Alhassan, Leen Alrehaili, Tanveer Hussain, Naeemullah Khan

cs.IR

2026-09-11

KAUST发现ColPali页面向量落在五到六维的单位球面上。每页压成4个向量再按需重建,ViDoRe v1上保住未压缩系统79%的nDCG@5,415K参数三分钟拟合。

这篇在解决什么

视觉文档检索现在的标准答案是迟交互:ColPali给一页图的每个patch各存一个向量,查询时用MaxSim逐token找最大内积再求和。一页大约1031个128维向量,bfloat16下约258KB,一百万页光向量就258GB。精度来自「别把一页压成一个向量」,代价是存储。

现有压缩几乎都是在encoder输出里做子集或局部平均:pooling、剪枝、合并。公开结果很少降到每页大约16个向量以下;再往下的方法往往要重训encoder,整库得重编码。这篇问的是另一件事:这些向量几何上到底是什么,能不能按几何来存。

方法

在6729页、三个encoder上测下来,一页的token云内在维数中位数大约4.9到6.1,而且三个模型都把输出L2归一化,点恰好在单位球面上。环境维数从128到3072差24倍,内在维数只差1左右。

两条直接推论。第一,普通k-means质心是单位向量的欧氏均值,落在球内,MaxSim会被系统性低估。把质心重新投影回球面,零成本。第二,自由度只有五六个,少数锚点加一个共享解码器,理论上能把整页向量再生成出来。

GLIE分三步,encoder全程冻结:

查询分两段:先用k个存盘向量对全库做MaxSim,再只把前L=20页解码回全长精排。编解码器一共415K参数。

结果

ViDoRe v1十个子集、宏平均nDCG@5。未压缩天花板约0.836。k=4时GLIE为0.657,相当于未压缩的79%;先前最好的免训练压缩大约70%。k=16时0.759,约91%。百万页从258GB降到约1.0GB。

方法(ViDoRe v1)k=4k=16
归一化k-means(免训练)0.6050.736
GLIE0.6570.759
匹配预算的Light-ColPali LoRA0.5440.632
未压缩ColPali0.8360.836

球面锚定单独就能+0.093(k=4)到+0.030(k=64)。学到的code在k≤16再加0.044到0.016,生成读出在k=4再加0.016。解码器从184K扩到13M,nDCG最多动0.009,最小的那个在k=4还最好。拟合1250/2500/5000页,k=4的边际几乎不变,大约一千页就饱和。同样配方迁到ColQwen2,k=4保住未压缩质量的82%。

匹配小预算下,给encoder做13.3M LoRA、约1.5 GPU小时,到不了免训练的归一化聚类;GLIE用三分钟、415K参数,六个预算全赢,差距0.074到0.132。注意这不是在打Light-ColPali原文:原文用13万查询、每档约72 GPU小时,而且主要报k≳16。

为什么重要

迟交互系统如果还在用k-means,质心归一化是今天就能上的一行补丁。要压到每页几个向量、又不想重编码语料,GLIE给出一条后处理路线:冻结公开checkpoint,缓存embedding,按预算单独拟合。

它打开的是「按需重建证据」这条轴,不是把向量再量化一档。作者自己把解码器写成下一步的主设计面。

局限与存疑

k=4时,同一短名单上完美解码能到0.782,GLIE只有0.657,差距是解码保真;0.782到0.836才是短名单召回。把L从20加到100,GLIE几乎不动(0.660),oracle却爬到0.822,说明短名单里还有证据,当前解码器吃不到。ViDoRe v1在高预算会饱和,v2上读出收益一直维持到k=64,增益曲线跟基准有关,不是常数。

没有和PLAID、产品量化做组合实验。视频迟交互被点名为更大场景,但没做。代码仓库链接在论文里还是占位。

术语

原文与代码

社区讨论

相关论文

全部论文解读