MRVQ一份码覆盖维度与码率,比三套QINCo2最多省22倍

MRVQ: One Resident Index for Dimension- and Rate-Elastic Vector Search

Sean Culatana, Shang-En Huang, Kang Li

cs.AI, cs.IR

2026-10-03

MRVQ在冻结向量上事后拟合16级残差量化,一份最大码截断阶段即降码率、截断坐标即降维度。FiQA与NFCorpus上内存12.06–16.88 MiB,比三套分训QINCo2少17.8–22.0倍,FiQA的nDCG@10低0.026–0.107。

这篇在解决什么

稠密检索进了 RAG 和 agent 系统,常驻内存的大头是文档向量和索引。一条 768 到 1024 维的 fp32 向量,建索引前就占 3–4 KB。维度用 Matryoshka 表示,套娃式 embedding,截一段前缀坐标就能当更短向量,用质量换查询计算和带宽。码率把文档压成更短的码,用质量换存储。

每个码率单独训量化器,质量最好,检索层却要同时留下多份码流和模型。FiQA 上 768 维时,4、8、16 字节三档文档码合计 28n 字节,加上三套参数,常驻 228.9 MiB。MRVQ 收成一份最大码,同一笔账 12.88 MiB,少 17.8 倍。码本身从 28n 到 16n,渐近只省 1.75 倍。

方法

MRVQ 贴在冻结的 embedding 上做事后残差量化,编码器不动。多级码本逐级吃掉误差。L=16 级,每级 K=256 个码字,一级索引用 1 字节,解前 b 级就是 b 字节码。一份 16 字节最大码沿两条轴截:丢掉后面的残差级,码率落到 8 或 4 字节;丢掉后面的坐标,维度落到该模型前缀。六档候选是 128、256、384、512、768、1024,各家只取自己的子集。选定维度和码率直接解码,不必重编码,不再存第二份文档码。

码本对所有要服务的前缀一起拟合。重构误差在这些前缀上均匀加权,16 级等权。短前缀会直接拿去检索。只拟合全长的话,截断后那段误差不在损失里,短维度先掉点。查询保持浮点,只量化文档,按 PQ、OPQ、RaBitQ 的非对称距离打分。PQ 是分段小码本的乘积量化,RaBitQ 是随机旋转加低比特的近似最近邻。

内存只记 4LKD+16n 字节的参数和码。分码率对照是每个码率一套 QINCo2 加一条码流。QINCo2 是按码率单独训练的神经量化器。共享模型对照压到最瘦,含窄维度和 fp16。码流渐近只省 1.75 倍,评测规模上的大倍数来自参数不按码率复制。

PCA-scalar 另走一条路:旋转之后按方差分配标量比特,各维独立量化,一次特征分解,不做迭代码本训练,不进这张内存账。AdANNS 只管维度自适应检索,MatQuant 套的是模型权重精度。

结果

数据用 BEIR 的 FiQA(57,638 篇,648 条查询)和 NFCorpus(3,633 篇,323 条查询)。四家 embedding:MPNet、Nomic、BGE 为 768 维,Mxbai 为 1024 维。码率 4、8、16 字节每向量,只有对应 fp32 的 1/192 到 1/1024。指标是 nDCG@10,看前 10 条相关文档排得有多靠前。学习型基线的拟合预算对齐,配对自助法重采样 5000 次,RaBitQ 那组 10000 次。

比过的方案里,MRVQ 在两套语料、四种家族上都是最低内存,12.06 到 16.88 MiB。同宽度合并成一行,比例相对 MRVQ。

设置MRVQ三套 QINCo2共享模型 QINCo2
FiQA,768 维12.88 MiB228.9 MiB(17.8×)25.17 MiB(1.95×)
FiQA,1024 维16.88 MiB354.6 MiB(21.0×)31.85 MiB(1.89×)
NFCorpus,768 维12.06 MiB227.4 MiB(18.9×)24.34 MiB(2.02×)
NFCorpus,1024 维16.06 MiB353.2 MiB(22.0×)31.03 MiB(1.93×)

同等码长,分码率 QINCo2 在 FiQA 每个家族、每个码率都高于 MRVQ,差 0.026 到 0.107 nDCG@10。共享模型约 1.9 倍内存,质量没测。对上固定码长量化器,同样字节 MRVQ 更高:逐前缀 OPQ 约高 0.06 到 0.07,PQ 约高 0.10 到 0.12,AdANNS-OPQ 每个格子都赢,差值没给。NFCorpus 上四家的低内存结论同样成立。

倍数随语料变大而缩小。对三套模型,评测点附近约 18 倍,n 变大后趋近 1.75 倍。对共享模型,n 到 730 万条时优势低于 1.1 倍。

PCA-scalar 对比 RaBitQ 与 Extended-RaBitQ。名义 1、2、4 bit 每维,对方另加 8、20、20 字节,账面对 PCA-scalar 偏紧。两组网格上 nDCG@10 之差为 +0.0076、+0.0029、+0.0010 与 -0.0009、+0.0012、+0.0006。绝对差小于 0.008,仅 Mxbai 一个 1-bit 格子 RaBitQ 高 0.0039。质量同一档。三份留出 BEIR、18 格、8 线程上,PCA 训练比 OPQ 拟合中位快 420 倍、均值 686 倍,范围 47 到 1967 倍,0.17 到 6.95 秒对 72 到 416 秒。

负面结果事先定了门槛。NFCorpus 上 16 级 QINCo2 验证 MSE 收敛,检索塌掉,nDCG@10 不到 MRVQ 一半。BGE 三个种子全塌,最好 0.035;Nomic 塌了三分之一。活下来的 Nomic 种子不单调:16 级 0.294,8 级 0.320。失败没有剔除。残差能量这个无参数预测器方向对,没过线:秩相关 0.825,门槛 0.85;不空的界只占 72% 的格子,门槛 90%。

为什么重要

低内存角是 MRVQ,高质角是分码率 QINCo2,两边都没同时赢。菜单要开、内存绑死时,一份码是测过的最低常驻。18 到 22 倍出现在参数压过码流的小语料,设备端和按租户切分属于这里。数百万向量之后滑向 1.75 倍的码流差。

同等字节它仍高于 PQ、OPQ 和 AdANNS-OPQ。省掉的是多份量化器状态。PCA-scalar 管的是重建:质量与 RaBitQ 同一档,拟合比 OPQ 中位快 420 倍,和内存结论分开用。

局限与存疑

范围是两个中小 BEIR 语料、四个 embedding 家族,出处是 NeurIPS 2026 的 MLForSys 研讨会。测的是字节账和 nDCG@10,没有端到端延迟和 recall 对吞吐的曲线,构建能耗也没测。内存下降不能当成变快。截短坐标理应减少距离计算,查询延迟没有数字。

语料再大,对共享模型的优势按公式收窄。字节账不含优化器、不含运行缓冲、不是实测 RSS,上线进程里倍数会更小。

共享模型只多约 1.9 倍内存,nDCG 没测,所以 17.8 到 22 倍对应的是三套模型都常驻。0.026 到 0.107 只来自 FiQA;NFCorpus 上 16 级 QINCo2 有种子崩溃,那些格子里 MRVQ 仍能检索。前缀均匀加权,正文没给只拟合全维度的消融。

术语

原文与代码

社区讨论

相关论文

全部论文解读