派对结束了:正则化ColBERT模型以修复高效ANN方法
派对结束了:正则化ColBERT模型以修复高效ANN方法
MUVERA和SMVE等高效ANN方法承诺简化ColBERT基础设施,但面对现代ColBERT模型时表现不佳。我们将根本原因追溯到嵌入几何分布,证明均值中心化是一个强大但不够充分的修复方案,并引入基于STE的正则化,直接为目标的投影空间优化模型。令人惊讶的是:这种修复并未使嵌入更各向同性,反而将它们集中到更少的维度中——与直觉预测相反,但正是随机投影所需要的。这种正则化能在不同方法、种子和超参数之间迁移,且不降低完整MaxSim检索的性能。
晚交互:强大但昂贵
晚交互模型(也称为ColBERT或多向量模型)在多种检索任务中表现强劲,如跨领域、长上下文、代码和智能体检索。尽管成果显著,但它们带来基础设施挑战,因为需要存储和搜索文档中每个词元对应的所有嵌入。除了存储成本,它还依赖索引结构先生成候选集,然后收集并解压文档词元嵌入,执行完整的MaxSim操作。这通常通过PLAID索引处理,我们通过FastPlaid和NextPlaid让广大用户能够轻松高效地使用这些索引。尽管这些库使得ColBERT模型能在更大规模上部署,但PLAID索引在大规模维护中仍可能复杂。尤其是更新质心仍是一个挑战,受限于IVF-PQ,一旦分布偏移过大就需要重建整个索引,即使在FastPlaid中添加了追踪偏移的机制,这使得CRUD操作困难。SPFresh提供了一些折中方案以简化更新,但可能面临其他扩展问题。因此,新方法被提出,旨在不依赖质心生成候选集。
解决方案
MUVERA利用多向量表示创建固定维度编码(FDE),类似于大型稠密单向量,以利用现有的单向量基础设施如HNSW。SMVE使用随机旋转投影创建多向量表示的稀疏编码,以利用现有的稀疏检索基础设施。这些方法非常有吸引力,因为它们能通过提供更易维护且支持CRUD的索引来简化多向量检索基础设施,从而生成候选集并通过完整MaxSim重新排序。然而,早期展示有希望结果的实验使用的是旧版ColBERT-v2模型,并且似乎未能推广到新模型……
你确定吗?
2025年8月27日,PyLate上有一个问题被提出,描述ModernColBERT在使用MUVERA时表现不正确。我们很快意识到这个问题也扩展到其他模型如ColBERT-small,这排除了我们的训练循环(因为它并非用PyLate训练)。我们进一步假设可能源于蒸馏设置中的分数归一化,直到我们通过执行无归一化的KD排除了它,并进一步确认一些仅使用对比学习的模型如ColBERT-Zero-supervised也受影响。由于大多数新模型同样存在问题,很明显这并非特定于某个训练设置,而是一个更全局的问题。一个简单的解释是这些方法本身就工作不正常;但为什么对某些模型(包括新模型)有效而对另一些无效?
各向异性:理想的嫌疑犯——如果一切都相似,就没有不相似
然后,有人提出了一个问题:> 疑问/好奇——为什么GTE-ModernColBERT-v1的token向量比colbertv2.0的各向异性强得多?> GTE-ModernColBERT-v1在FreshStack数据集上的平均成对余弦相似度约为0.9。Colbertv2.0约为0.2。当时,答案似乎是可能与训练设置有关,这也导致MUVERA失败。然而,结果证明这可能是MUVERA失败的关键线索。当我们思考用于检索的嵌入时,我们喜欢想象它们均匀散布在超球面上(即散落在空间中),这样空间中的邻近具有意义,我们可以将空间划分为单元格以仅搜索其中一部分,从而能够量化嵌入而不因将邻近嵌入合并而引入误差。
然而,对于大多数最新的ColBERT模型,它们坍缩成一个狭窄的锥体,大致指向相同的方向(如0.9的平均余弦相似度所示)。这意味着大多数token嵌入的能量只是单个共享轴(基本上是语料库均值),只有一小部分残差实际上编码了有用的、有区分性的信息,这些信息才对检索真正有用。
| 模型 | raw avgcos | centered avgcos | | --- | --- | --- | | colbertv2 | 0.2407 | 0.0005 | | ColBERT-Zero | 0.6197 | 0.0040 | | answerai-colbert-small | 0.8383 | 0.0046 | | GTE-v1 | 0.8965 | 0.0107 | | LateOn | 0.9458 | 0.0012 |
NFCorpus数据集上各模型文档token之间的平均平均余弦相似度。
这可以解释为什么MUVERA和SMVE在这些模型上表现不佳。不依赖质心(质心会“吃掉”共同方向),MUVERA用随机超平面(类似SimHash)划分空间,并将落入每个桶的token池化为固定维度编码,而SMVE应用随机旋转,保留每个方向上的最大投影,并将它们求和为一个稀疏草图。但随机划分只分离空间中实际可分离的点。当所有嵌入都位于同一个狭窄锥体内时,随机超平面几乎总是将整个锥体放在一侧,随机投影对每个嵌入返回相同的值。这意味着将这些方法应用于各向异性的ColBERT只会产生退化的结果:每个token映射到相同的代码,因此每个文档映射到几乎相同的FDE/稀疏向量,使得候选生成步骤基本上变成随机。
各向异性空间上MUVERA/SMVE失效的示意图
新ColBERT模型为何如此各向异性仍是未知数,这无疑是一个有趣的研究方向。在现有假设中,我们知道ModernBERT基础嵌入本身已有一定的各向异性(因为大多数现代ColBERT模型基于此骨架),但这并非唯一解释,因为ColBERT-small并非基于ModernBERT。另一个可能因素是,在ColBERT训练中,我们只直接反向传播到被MaxSim算子选中的token。虽然这有助于稳定训练,但也意味着大量token的训练信号非常间接,token只是被其他token的更新“拉动”。最后,似乎一般来说,嵌入模型倾向于变得各向异性。
一个简单的后处理解决方案是通过减去均值方向(可以是文档内均值或集合均值)来居中所有嵌入。这显然极大地降低了各向异性,通过使点云居中,随机投影更有可能沿着信息性轴划分。而且这不仅仅是理论上的:在计算MUVERA/SMVE表示之前简单地居中嵌入,使得LateOn(我们最新的SOTA ColBERT模型)的结果从完全不可用变为勉强可用,但仍远未达到目标。这是因为这仅仅部分解决了问题:我们移除了来自共享共同方向的大部分噪声,但点云的形状仍然不适合有效地投影到这些表示中。尽管潜藏的异向性已被抹除,但嵌入仍然无法通过随机操作有效分离。
为什么居中空间仍然难以投影
| 模型 | Center | PLAID | Method | rk=0 | rk=50 | rk=100 | rk=200 | rk=400 | rk=1000 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | LateOn | no | 55.28 | MUVERA | 2.89 (-52.4) | 9.46 (-45.8) | 12.53 (-42.8) | 15.87 (-39.4) | 20.29 (-35.0) | 27.52 (-27.8) | | | | | SMVE | 1.51 (-53.8) | 7.59 (-47.7) | 10.84 (-44.4) | 14.24 (-41.0) | 18.29 (-37.0) | 25.10 (-30.2) | | LateOn | yes | 55.28 | MUVERA | 32.66 (-22.6) | 46.22 (-9.1) | 48.68 (-6.6) | 50.01 (-5.3) | 50.85 (-4.4) | 52.09 (-3.2) | | | | | SMVE | 21.18 (-34.1) | 37.39 (-17.9) | 40.90 (-14.4) | 43.52 (-11.8) | 45.83 (-9.5) | 48.61 (-6.7) |
LateOn模型在未居中和居中嵌入下使用MUVERA和SMVE的结果。rk=k表示使用完整MaxSim对top-k候选进行重排序。
这并不意味着这是宿命,后处理方法只能走到这一步,我们受限于模型所学习的空间。这就是为什么长期以来一直有人提出正则化目标来尝试将向量分布到超球面上,并且至今仍被广泛使用,尤其是通过GOR目标(2017年引入)近期在GemmaEmbeddings和Jina Embeddings中被用于增强量化鲁棒性。GOR目标再简单不过:我们不希望两个嵌入相似,因此我们取所有嵌入之间的成对余弦相似度矩阵(Gram矩阵)并试图将所有非对角线项推至0。这实质上试图最小化任何相似性,创造一个各向同性空间。
因此,解决方案似乎很明显:在训练ColBERT模型时正则化空间,以防止它们次优地利用空间,这就是为什么我们开始在训练中加入GOR。然而,与稠密模型不同(在稠密模型中,将所有(负)批次向量推向空间的不同部分是有意义的),多向量设置引入了一些问题。一个负文档可能包含实际上应该与正文档的token相似的token。例如“猫喝牛奶”和“猫喝水”中的“猫”、“喝”的嵌入不应该截然不同,我们希望区别由“水”/“牛奶”token来体现。这在投影后也有意义:我们希望两个表示的大部分代码相似,因为这些序列相似,因此在投影空间中它们也应该接近。这可以通过大多数token相似(因此获得相同代码)来实现,仅最后一个嵌入的差异对应不同代码。此外,考虑到我们的问题是文档嵌入各向异性,我们是否也应该对查询进行正则化,还是让文档正则化来训练它们?在尝试各种不同的设置(使用所有可能的成对相似性矩阵,并尝试平衡不同权重以在不破坏模型主要性能的情况下修复问题,但效果不太成功)时,一个问题浮现出来……我们是否还要费这个心?
优化某物最简单的方法就是……优化它
到目前为止,我们讨论的都是基于一些观察的理论和假设。到现在为止,除了嵌入空间不合适且应该正则化之外,我们没有确凿的证据。正则化什么以及如何正则化仍是开放问题。那么,与其猜测,我们能否简单地优化模型使其在我们的目标表示空间中表现良好?主要问题在于我们不能简单地将对比损失应用于投影代码,然后希望梯度解决问题……因为表示的创建阻断了梯度。更准确地说,两个流程中的离散化步骤都打破了梯度。
在MUVERA中,这一步是SimHash划分:每个token通过其在几个随机超平面上的投影符号被路由,这些符号被拼接成一个one-hot分配到某个桶。但符号在每一边是平坦的(-1/+1),只在边界移动,因此在单元格内移动什么也不会改变;导数为零,正是那个which-bucket分配是不透明的(之后的池化是无害的和)。对于SMVE,在计算随机旋转及其关联的投影值后,我们只保留每个方向上最大的投影,其余归零以使其稀疏。哪些值存活取决于排序,因此小的变化不会体现,直到顺序改变,再次产生零梯度。在这两种情况下,梯度杀手是硬性的逐段常数选择。
如果你训练过量化感知模型,这可能触动某些记忆,因为这正是同样的问题。量化将连续值变换到离散的层级网格上,四舍五入到最近层级,形成阶梯:层级之间平坦,梯度几乎处处为零,除了边界。一种非常流行的量化感知训练(QAT)方法是使用直通估计器(STE)。其思想很简单:在前向传播中执行破坏梯度的操作,并照常计算损失值。技巧在于反向传播:我们假装硬选择操作在梯度上是恒等操作,让梯度像什么都没发生一样流动。
在我们的案例中,我们构建真实的MUVERA/SMVE代码,并使用对比损失对其进行评分,因此我们实际上直接优化了测试时将使用的表示。在反向传播时,我们视分桶/top-k操作为恒等操作,作用于它所选择的内容:每个token接收它所落入桶的梯度,SMVE将梯度通过存活的坐标传递,而丢弃的坐标梯度为零。选择周围的线性机制(投影、旋转、池化)保持其精确梯度。因此损失梯度直接流回嵌入,模型被训练使得其代码在投影后具有区分性,直接优化目标度量,而不是手工制作的代理目标。居中化和GOR是我们猜测一个良好形状的空间应该是什么样的,并希望投影配合;STE则让投影本身告诉模型要修复什么。
值得注意的是,这显然不是免费的:直通梯度是有偏的,因为我们假装存在的梯度并非真实的(零)导数,并且我们丢弃的项正是会将token推过超平面或翻转排序的项。这种近似可能引入噪声,但由于我们仅将其作为额外的正则化信号与标准MaxSim对比目标一起使用,我们仍然学习到一个真正良好的晚交互空间,同时将其推向能够干净投影的方向。
STE技巧的示意图
空谈无益,拿结果说话
| 模型 | Center | PLAID | Method | rk=0 | rk=50 | rk=100 | rk=200 | rk=400 | rk=1000 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | LateOn | no | 55.28 | MUVERA | 2.89 (-52.4) | 9.46 (-45.8) | 12.53 (-42.8) | 15.87 (-39.4) | 20.29 (-35.0) | 27.52 (-27.8) | | | | | SMVE | 1.51 (-53.8) | 7.59 (-47.7) | 10.84 (-44.4) | 14.24 (-41.0) | 18.29 (-37.0) | 25.10 (-30.2) | | LateOn | yes | 55.28 | MUVERA | 32.66 (-22.6) | 46.22 (-9.1) | 48.68 (-6.6) | 50.01 (-5.3) | 50.85 (-4.4) | 52.09 (-3.2) | | | | | SMVE | 21.18 (-34.1) | 37.39 (-17.9) | 40.90 (-14.4) | 43.52 (-11.8) | 45.83 (-9.5) | 48.61 (-6.7) | | MUVERA-reg | yes | 55.72 | MUVERA | 40.80 (-14.9) | 51.60 (-4.1) | 52.37 (-3.4) | 53.02 (-2.7) | 53.60 (-2.1) | 53.87 (-1.9) | | | | | SMVE | 37.18 (-18.5) | 48.97 (-6.8) | 50.45 (-5.3) | 51.51 (-4.2) | 52.40 (-3.3) | 53.50 (-2.2) | | SMVE-reg | yes | 54.92 | MUVERA | 40.22 (-14.7) | 50.94 (-4.0) | 51.90 (-3.0) | 52.67 (-2.3) | 53.02 (-1.9) | 53.35 (-1.6) | | | | | SMVE | 40.39 (-14.5) | 50.70 (-4.2) | 52.09 (-2.8) | 52.92 (-2.0) | 53.19 (-1.7) | 53.47 (-1.5) |
带正则化模型的结果,同时使用SMVE和MUVERA。rk=k表示使用完整MaxSim对top-k候选进行重排序。
正如我们发现均值居中化是一种非常强大且廉价的操作,我们所有的训练和评估都使用均值居中化的表示。训练设置非常简单:我们采用未正则化的无监督模型,执行相同的监督训练步骤,但额外添加来自STE的梯度作为正则化。损失为 (1-alpha) MaxSim对比损失 + alpha 投影表示对比损失。注意,这个监督阶段非常廉价(我们甚至没有运行完整的3个epoch),因此展示的是通过非常轻量级正则化即可获得的结果。
第一个非常清晰的结果是,这些非常简单的正则化达到了目标,显著提升了SMVE/MUVERA相对于未正则化(LateOn)模型的性能,同时不降低PLAID结果(意味着正确塑造的空间不会与MaxSim需求冲突)。基础结果(无任何重排序)本身就强得多,同时也表明在使用top-k重排序时,与完整PLAID检索的差距可以更小。请注意,我们并未优化MUVERA/SMVE的超参数以提升性能。有可能使用足够多的维度可以完全消除差距(甚至重排序更少的元素),但本研究的目的仅仅是展示模型可以被正则化,而不是研究这些方法的成本/性能权衡。
第二(可能最重要)点是,两种正则化都对两种方法有帮助:在训练中使用MUVERA表示有助于SMVE在评估中的表现,反之亦然。这是一个关键信息,表明训练并未只优化一个特定子空间,而是全面改善了压缩。确实,这是一个非常重要的验证,因为值得一提的是,在训练期间,随机元素是固定的(训练开始时采样一次)。我们尝试在每个步骤随机化它,但这似乎使训练不稳定,因为不断变化的空间信号使模型混乱。尝试每隔几步交替不同基进行训练可能是一个方向,但我们欣慰地发现模型并未过拟合到这些固定元素。尽管这两种方法差异很大,并且我们对两者使用了不同的种子,我们还是使用MUVERA的不同测试种子验证了结果,结果显示方差非常小,最重要的是,训练种子并非其中最好的,完全排除了空间特定学习的可能性。
| Method | rk | seed=1221* | seed=999 | seed=5555 | seed=31415 | mean | std | | --- | --- | --- | --- | --- | --- | --- | --- | | MUVERA | 0 | 40.80 | 41.61 | 40.42 | 40.97 | 40.95 | 0.43 | | MUVERA | 200 | 53.02 | 53.11 | 53.36 | 53.20 | 53.17 | 0.13 | | SMVE | 0 | 37.18 | 37.47 | 37.06 | 36.73 | 37.11 | 0.27 | | SMVE | 200 | 51.51 | 51.98 | 51.71 | 51.65 | 51.71 | 0.17 |
使用不同随机种子的正则化模型在MUVERA/SMVE投影下的结果。
我们可以看到方差不大,在考虑重排序时甚至更小。有趣的是,用于训练的种子(1221)甚至不是4个评估种子中最强的,强调方差更多来自方法本身,而非特定的过拟合。
除了特定的投影方向,模型也可能过拟合训练中使用的特定MUVERA超参数(R=20, k=5, d=16, FDE dim=10,240),使正则化在其他操作点无效。为了测试这一点,我们在评估时独立扫描每个MUVERA参数,同时保持其他参数固定。
MUVERA通过首先使用SimHash划分token嵌入,然后在每个分区内池化,将每个池化块投影到较低维空间,最后在多次独立重复后拼接结果,构建固定维度编码(FDE)。在此结构中,(R)是独立重复次数,(k)是用于定义划分的SimHash位数,(d)是内部随机投影后每个桶的投影维度。这些参数共同决定FDE大小:FDE dim = 2^k × d × R
在所有配置中,从激进压缩(FDE dim=1,024)到高容量(FDE dim=20,480),正则化模型始终优于基线。值得注意的是,在远离训练配置的地方改进最大:在FDE dim ~1K时,rk=0差距达到+7–13 NDCG@10点,而在训练维度10K处为+8点。这证实了正则化学习了一种通用的几何特性,而不是为特定的投影参数集优化。探索是否在更小的FDE(强制更强压缩)或更大的FDE(放松约束)下训练能进一步改善结果是一个有趣的方向,但与主要发现正交,留待未来工作。
| Config | FDE dim | Model | rk=0 | rk=200 | | --- | --- | --- | --- | --- | | R2_k5_d16 | 1024 | LateOn | 6.12 | 24.15 | | | | LateOn-regularized | 13.42 | 36.28 | | R5_k5_d16 | 2560 | LateOn | 15.38 | 38.34 | | | | LateOn-regularized | 27.03 | 48.03 | | R10_k5_d16 | 5120 | LateOn | 26.08 | 46.11 | | | | LateOn-regularized | 35.63 | 51.92 | | R20_k5_d16 | 10240 | LateOn | 32.66 | 50.01 | | | | LateOn-regularized | 40.80 | 53.02 | | R40_k5_d16 | 20480 | LateOn | 39.31 | 52.02 | | | | LateOn-regularized | 44.13 | 53.69 |
扫描 (R),独立FDE重复次数。增加 (R) 提供更多的随机token视图,并线性增加最终FDE大小。
MUVERA k_sim 扫描 (R=20, d=16)
| Config | FDE dim | Model | rk=0 | rk=200 | | --- | --- | --- | --- | --- | | R20_k3_d16 | 2560 | LateOn | 24.54 | 47.36 | | | | LateOn-regularized | 34.93 | 52.23 | | R20_k4_d16 | 5120 | LateOn | 29.83 | 49.04 | | | | LateOn-regularized | 38.67 | 52.53 | | R20_k5_d16 | 10240 | LateOn | 32.66 | 50.01 | | | | LateOn-regularized | 40.80 | 53.02 | | R20_k6_d16 | 20480 | LateOn | 35.32 | 50.75 | | | | LateOn-regularized | 42.99 | 53.24 |
扫描 (k),用于划分的SimHash位数。增加 (k) 创建更多桶,因为每次重复使用 (2^k) 个分区,因此FDE大小随 (k) 指数增长。
MUVERA d_proj 扫描 (R=20, k=5)
| Config | FDE dim | Model | rk=0 | rk=200 | | --- | --- | --- | --- | --- | | R20_k5_d2 | 1280 | LateOn | 9.64 | 32.81 | | | | LateOn-regularized | 21.52 | 45.54 | | R20_k5_d4 | 2560 | LateOn | 18.59 | 41.90 | | | | LateOn-regularized | 31.69 | 50.40 | | R20_k5_d8 | 5120 | LateOn | 26.89 | 47.18 | | | | LateOn-regularized | 37.48 | 52.39 | | R20_k5_d16 | 10240 | LateOn | 32.66 | 50.01 | | | | LateOn-regularized | 40.80 | 53.02 | | R20_k5_d32 | 20480 | LateOn | 35.81 | 51.44 | | | | LateOn-regularized | 41.69 | 53.20 |
扫描 (d),拼接前每个桶表示使用的内部投影维度。增加 (d) 保留每个桶更多信息,并线性增加FDE大小。
正则化到底做了什么?
除了给出一个与MUVERA和SMVE兼容的模型,STE训练还留下了第二个礼物:两个检查点(正则化前后),我们可以探测它们以了解空间几何发生了什么变化。我们在SciFact的所有文档和查询上运行了一系列测量,对均值居中化的表示计算每个指标。结果富有信息,并且直接与本文前半部分构建的叙事相悖。
I. 各向异性并非(唯一的)问题(至少不全是)
上述一切都指向各向异性是罪魁祸首。因此我们预期正则化模型会产生一个更各向同性的嵌入空间。但它没有。
| Model | Uncentered | Centered | | --- | --- | --- | | LateOn | 0.949 | 0.002 | | LateOn-regularized | 0.960 | 0.004 |
NFCorpus数据集上正则化前后文档token之间的平均平均余弦相似度比较。
正则化模型实际上比原始模型更各向异性,无论是在原始空间还是居中空间。STE正则化大幅提升了MUVERA/SMVE质量,但它并没有使空间更各向同性。如果说有什么不同,那就是它使其略微更各向异性。
事后看来这是有道理的,因为我们在居中表示上训练,模型从未收到任何减少主导均值方向的信号。但这意味着各向异性本身并不是破坏性的属性,或者至少不是唯一的(居中化在此承担了大部分重担)。它是一个有用的线索,将我们带到这里,但真正的机制在其他地方。 (注意:Iso-ModernColBERT模型有效地减少了ModernColBERT的各向异性,但在我们的实验中,当索引未居中嵌入时它似乎带来改进,但使用居中嵌入时并没有好多少,这证实了各向异性是一个问题,但并非唯一问题,并且居中化是这部分问题的一个公平的后处理修复方案。然而,有可能居中化实际上损害了结果(被MUVERA/SMVE带来的巨大收益所掩盖),让正则化“学习”居中化可能会产生更优的解决方案。)
II. 有效维度减少,而非增加
在寻找训练期间实际发生了什么变化时,我们测量了稳定秩(Stable Rank, SR),这是对一组向量有效跨越多少方向的一种平滑估计。我们在两个层次上计算:每个文档和整个语料库。
| Metric | LateOn | LateOn-regularized | Change | | --- | --- | --- | --- | | Per-doc stable rank | 4.88 | 3.85 | −21% | | Corpus stable rank | 15.4 | 11.4 | −26% | | Top-1 eigenvalue fraction (per-doc) | 21.3% | 27.0% | +27% | | Top-3 eigenvalue fraction (per-doc) | 43.0% | 50.7% | +18% |
文档和语料库级别稳定秩比较(带正则化模型)。
两个稳定秩都下降了。在文档层面,原本跨越约5个有效方向的token现在跨越约4个。在语料库层面,点云从约15个有效维度收缩到约11个。最大特征值占方差比例增加,意味着每个文档的token信息集中到更少的主轴上。
这与GOR式正则化所预期的完全相反。GOR将token推开以均匀填充空间并增加稳定秩。STE做了相反的事:它将每个文档的token坍缩到更少的维度中。而正是这一点使得SMVE和MUVERA的表现大幅提升。 (注意:稳定秩结果本身也很有趣。这意味着我们编码和存储了多个向量,而实际维度却低得多。)
为什么更少的维度有助于随机投影。SMVE中查询与文档之间的分数是固定数量随机投影方向上的求和。每个项捕获查询-文档交互的一个随机“一瞥”。当token云跨越许多有效维度时,这些一瞥被分散:每个捕获一个小的、有噪声的片段,并且总和作为真实MaxSim分数的估计量具有高方差。当云跨越更少维度时,相同数量的二瞥更密集地采样子空间。每个捕获更干净的片段,总和收敛到更紧的估计。
宽度扫描直接证实了这一点。我们以不同数量的随机投影(从128到1024)运行SMVE:
| Width | LateOn | LateOn-regularized | Ratio | | --- | --- | --- | --- | | 128 | 0.013 | 0.027 | 2.2× | | 256 | 0.057 | 0.100 | 1.8× | | 512 | 0.096 | 0.177 | 1.9× | | 1024 | 0.209 | 0.269 | 1.3× |
不同宽度下SMVE投影的各模型性能。
正则化模型在每个宽度下都胜出,但优势随宽度增加而缩小。有了足够多的随机投影,即使是更高维的空间也能被充分采样,因此正则化的重要性降低。这正是如果机制更好地覆盖一个低维子空间你所期望的模式。
III. 学习到的集中化 vs. 朴素压缩
如果更少的维度有帮助,一个自然的问题出现了:为什么不直接后处理地将嵌入投影到其主PCA方向上以降低维度?我们通过将LateOn的token投影到语料库前k个主成分上并测量SMVE质量来测试这一点:
| Corpus PCA-k | LateOn SMVE | % of original | | --- | --- | --- | | 4 | 0.007 | 7% | | 8 | 0.010 | 10% | | 16 | 0.014 | 15% | | 32 | 0.036 | 38% | | 64 | 0.067 | 70% |
使用PCA投影嵌入时LateOn(未正则化)的性能。
结果很明确:朴素的低秩投影是灾难性的。只保留4个PCA方向会破坏93%的SMVE质量;即使16个方向也损失85%。简单地将空间压缩到更少维度会同时抹去检索信号和噪声。
正则化模型实现了类似的有效维度减少,但其SMVE质量却提升了85%。区别在于:模型学会了将信息集中到哪些维度上。STE梯度告诉每个token它落入了哪个投影桶,因此模型可以重新排列其嵌入空间,将判别性信息放在那些在投影中存活的轴上,而不是沿着任意的高方差方向(这些方向在未正则化空间中恰好捕获了大部分能量)。
查询-文档对齐测量证实了这一点。我们测量了查询token能量落在文档token云的前几个主成分中的比例:
| Metric | LateOn | LateOn-regularized | | --- | --- | --- | | Query energy in top-4 doc PCs | 6.1% | 9.1% | | Query energy in top-16 doc PCs | 24.2% | 29.0% |
查询投影到文档前k个主成分中的能量百分比。
查询将更多能量集中在与文档相同的几个主成分中。当两者都生活在更共享的子空间中时,通过该子空间的随机投影同时捕获双方检索相关信号,使得每个SMVE/MUVERA项提供更多信息。
这就是为什么直接用STE优化目标比几何代理更有效:投影损失捕获了从几何到分数的完整链条。居中化和GOR是关于良好形状空间应该是什么样的有根据的猜想。STE则让投影本身告诉模型要修复什么。
要点与下一步
从这项工作中需要记住四点:
1. 新的ColBERT模型高度各向异性,这破坏了依赖随机投影来分离嵌入的ANN候选生成方法(如MUVERA和SMVE)。 2. 均值居中化是一个强大的基线,移除了主导的共同方向,但仅此不够,因为残余的几何结构仍然不能干净投影。 3. 基于STE的正则化修复了问题,其方式不是如预期那样将嵌入均匀分布在球面上,而是教模型将判别性信息集中到随机投影能够高效捕获的低维子空间中——这与基于各向同性的直觉恰恰相反。 4. 该正则化具有通用性:它在方法之间(MUVERA训练有助于SMVE,反之亦然)、随机种子之间以及远离训练设置的超参数配置之间迁移。
这些发现也与关于ColBERT嵌入空间结构的更广泛问题相关。正如我们在分层池化工作中所展示的,文档中每个token的信息大部分是冗余的。这里的稳定秩结果强化了这一图景,并表明这些空间的有效维度远低于名义嵌入维度。我们相信这项工作与最近学习ColBERT模型上的SAE以创建稀疏表示的工作直接相关。由于MUVERA/SMVE不是学习的,我们必须确保表示可以直接使用。理解这种正则化的效果并揭示嵌入空间中使它们可压缩(SMVE/MUVERA、池化、量化)的底层结构,并允许我们通过除MaxSim之外的其他类型索引来暴露它们,可能对于构建下一代模型和索引非常有用。
立即开始:
🤗 模型: LateOn-regularized | LateOn 🛠️ 工具: PyLate | FastPLAID
引用
LateOn正则化
@misc{chaffin2026lateonregularization, title={Party is over: regularizing ColBERT models to fix efficient ANN methods}, author={Chaffin, Antoine}, year={2026}, howpublished={\url{https://huggingface.co/blog/lightonai/lateon-regularization}}, }
DenseOn and LateOn
@misc{sourty2026denseonlateon, title={DenseOn with the LateOn: Open State-of-the-Art Single and Multi-Vector Models}, author={Sourty, Raphael and Chaffin, Antoine and Weller, Orion and Demoura, Paulo and Chatelain, Amelie}, year={2026}, howpublished={\url{https://huggingface.co/blog/lightonai/denseon-lateon}}, }