本文内容
把 RAG 向量压缩到 2-bit:数据无关量化能上生产了吗?
简短的回答:可以。2-bit TurboQuant 存储每个向量的量化代码时,只需 float32 字节数的十六分之一。但总索引不会自动缩小 16 倍,因为范数、ID、图结构、元数据和可选的全精度向量仍然占空间。TurboVec 报告其 1000 万文档示例约占 4 GB,而不是约 31 GB。Qdrant 也已从 1.18 版开始提供 TurboQuant。
TurboQuant 已被 ICLR 2026 接收。TurboVec 则在 2026 年 8 月 18 日发布了 1.0 版和稳定的磁盘格式,但维护仍高度集中。把速度和 recall 基准视为依赖硬件、由项目作者报告的结果,在替换线上向量库前用自己的语料验证。
在设计自托管或气隙隔离的 RAG 栈?
规划一次检索架构评审为什么 RAG 内存会成为瓶颈
检索增强生成为每个分块存一个 embedding,低延迟搜索通常把向量数据放在内存里。一个 1536 维 float32 向量使用 6,144 字节,因此 1000 万个向量在索引开销前约占 61.4 GB。若每维 2 bit,原始代码每个向量占 384 字节,1000 万个约占 3.84 GB。这才是精确的 16 倍代码压缩。计入其他结构后,端到端索引压缩比会更低。
内存正是检索成本聚集之处。它决定索引是装进一个节点还是需要一个集群,是否能与模型共用主机,以及本地部署是否可行。压缩原始向量代码可以改变硬件方案,但只有测量完整常驻内存才能得出真实账单。
什么是数据无关量化?
数据无关量化用一套固定配方压缩向量,这套配方不从你的数据集里学任何东西。没有在样本上训练的码本,没有校准遍历,也没有随数据漂移而需要拟合、保存或重拟合的数据集专属参数。
这与经典乘积量化不同。FAISS IVF-PQ 等实现会在向量训练样本上运行 k-means 来学习码本。它效果不错,但你需要一份有代表性的训练集;当分布明显变化时,还要判断是否重新训练和构建索引。不同托管向量数据库使用的量化方式不同,不能一概视为 PQ。数据无关方法去掉的是 PQ 的码本训练环节。
TurboQuant 如何免训练地压缩
TurboQuant 来自 ICLR 2026 论文 "TurboQuant: Online Vector Quantization with Near-optimal Distortion Rate",作者是 Google 与 NYU 的 Amir Zandieh、Majid Daliri、Majid Hadian 和 Vahab Mirrokni,Google Research 在一篇公开文章里做了介绍。核心是一个几何技巧,用了两次。
- 旋转。对每个向量施加一次随机正交旋转。旋转保持距离和内积不变,所以它不改变搜索结果。它改变的是坐标分布:经过随机旋转后,高维向量的每个坐标都服从一个已知的、集中的分布,这个分布只取决于维度,而不取决于你的数据。
- 逐坐标量化。因为这个分布事先已知,你可以从理论出发一次性预计算出最优的标量量化器,并对每个向量的每个坐标复用同一个通用码本。在高维下,旋转后的坐标近似独立,所以逐个处理是近似最优的,而不是一种取巧。
论文加了第二阶段,用一个 1-bit 量化的 Johnson-Lindenstrauss 变换来量化残差,得到内积的无偏估计。作者证明其失真接近信息论下界,在各个比特宽度上都只差一个约为 2.7 的小常数因子。在最近邻搜索中,该方法在 recall 上胜过乘积量化,同时把索引时间降到几乎为零,因为根本没有东西要训练。
能穿越全部理论留下来的实际好处是:没有训练样本、没有校准、没有要持久化或重训练的码本。你旋转并量化,而且可以在向量到达的那一刻就做。
TurboQuant 到底赢在哪?
该方法在 Qdrant 中被独立实现,Qdrant 发布了一篇对比团队已在用的各类量化器的详细评测。这个对比在商业上最关键,因为它是在固定存储预算下测量的。
| 存储档位 | 比特宽度 | 压缩比 | 相对既有方案的结果 |
|---|---|---|---|
| 标量量化的一半 | 4-bit | 8x | 在一半存储下与标量量化相当;在 10 个数据集里的 3 个上胜出,其中一个高出多达 4.6 个百分点。 |
| 二值量化的预算 | 2-bit | 16x | 在每个受测数据集上都比 2-bit 二值量化高出 9 到 24 个百分点。 |
| 极限预算 | 1-bit | 32x | 在每个受测数据集上都比普通 1-bit 二值量化高出 9 到 21 个百分点。 |
规律很一致。在团队通常要接受较大 recall 损失的激进预算下,一个免训练、基于旋转的量化器把 recall 保持得远好于二值量化,而在 4-bit 上,它用一半空间就与数据调优的标量量化器打得难解难分。Qdrant 还叠加了一些工程增强:逐向量长度重归一化、逐坐标各向异性补偿以及 SIMD 加速。这些增补略微依赖数据,当有人把整条流水线称作严格数据无关时,这一点值得点明。
这已经不只是研究预览。Qdrant 1.18 在云服务和标准 Docker 镜像中提供 TurboQuant,并支持 4、2、1.5 和 1-bit 配置。官方文档建议先在自己的数据上测试,因为量化会影响质量;修改量化设置也需要重新建立索引。
TurboVec 是什么,它承诺了什么?
TurboVec 是一个带 Python 绑定、MIT 许可、直接构建在 TurboQuant 之上的 Rust 开源向量索引。它把量化器封装成一个可检索的索引,你可以把它嵌进 Python 检索栈。它的主要承诺:
| 承诺 | 报告的细节 | 你该自行验证什么 |
|---|---|---|
| 16 倍代码压缩 | 1536 维向量从 6,144 字节 float32 降到 384 字节 2-bit 代码。该仓库另行报告其 1000 万文档示例约占 4 GB,而非 31 GB。 | 不要把 16 倍直接套到整个索引。测量代码、范数、ID、元数据、索引结构和保留容量。 |
| ARM 吞吐 | 在 Google Axion 8 vCPU 上,当前仓库报告 4-bit 平均比 FAISS FastScan 快 3.5 倍,2-bit 快 26%。 | 在你的目标 CPU 上做基准,ARM 与 x86 表现不同。 |
| x86 吞吐 | 在 Intel Xeon Platinum 8481C 8 vCPU 上,当前仓库报告 4-bit 平均快 3.4 倍,2-bit 快 20%。 | 在你的实例类型与真实查询并发下确认。 |
| 经校准的 recall | 可选 TQ+ 校准在三个 OpenAI 测试单元上让 recall@1 高出 FAISS 0.9 到 2.9 个点,在另一个低 0.7 个点;GloVe 的结果随 bit 数和 k 而变化。 | TQ+ 需要先用约 1,024 个样本校准。也要测试完全数据无关的普通 TurboQuant。 |
| 在线摄入 | 向量在你添加的那一刻就被索引;没有单独的训练步骤要调度或维护。 | 在你的写入速率下确认摄入吞吐和内存行为。 |
| 搜索时按 ID 过滤 | 传入 ID 白名单;没有允许槽位的块会被跳过,因此租户与权限过滤仍然便宜。 | 验证当白名单很小且稀疏时,过滤后的 recall 是否仍成立。 |
| 框架即插即用 | 可替换 LangChain、LlamaIndex、Haystack 和 Agno 的向量库。 | 检查它对你的应用所依赖的元数据、删除和混合检索的 API 覆盖。 |
打分内核使用手写 SIMD:ARM 上使用 NEON SDOT 或 SMMLA,现代 x86 上使用 AVX-512 VNNI 与 vpermb,并提供 AVX2 和标量回退。这使它在没有 GPU 时也能给出有竞争力的 CPU 数字。它可以完全自托管,但是否把数据发送到外部仍取决于你选择的 embedding 模型和周边服务。
数据无关压缩在哪有帮助,在哪有害
量化是对一个有损信号的有损压缩。embedding 本就是对语义的近似,量化它就是对近似再做近似。这对检索没问题,因为检索只需要正确的邻居排在前面,但它为一次决策设定了诚实的预期。
| 选项 | 内存 | 运维负担 | 最适合 |
|---|---|---|---|
| float32 平坦索引 | 最大,每维约 4 字节 | 极简,精确搜索 | 小语料、对质量敏感的检索、用来度量的基线 |
| TurboQuant 2-bit(Qdrant 或 TurboVec) | 原始代码小 16 倍 | 不需要 PQ 训练;校准与重建索引行为取决于实现 | 大语料、受内存限制的节点与自托管部署 |
| 训练式乘积量化(FAISS IVF-PQ、托管数据库) | 可配置,常有很好的每字节 recall | 需要训练样本,随漂移退化,大变动时重拟合 | 拥有良好训练样本且已有托管平台的稳定语料 |
| 托管向量服务 | 取决于服务商 | 工程投入最低,数据离开你的边界 | 没有数据驻留约束、想要零基础设施工作的团队 |
有两个注意点决定了大多数真实部署。第一,激进量化会损失一些 recall,所以生产级 RAG 通常会取回超过所需的候选,并对头部集合做 rerank,要么用放在较慢存储上的全精度向量,要么用一个 cross-encoder。要为这一步留预算。第二,压缩比是固定的,但你的实际占用还包括索引结构、标识符、元数据,以及任何为 rerank 保留的全精度副本。度量总量,而不只是向量字节。
这真的会让你的 RAG 更便宜吗?
压缩比在它去掉某项你在付钱的东西之前,都还不是节省。把这次改动对着完整的检索账单来核算:
月度收益 = 省下的内存或节点 + 更低的实例档位 + 省下的托管数据库费用 - 增加的 rerank 计算 - 工程与运维成本
缩小十六倍的原始代码只有在帮助完整索引越过某个阈值时才创造价值:一个现在装进单节点而非集群的索引,一份装进内存而非溢出到磁盘的语料,一个可以并置到你本就在运行的 GPU 主机上的检索服务,或一份你可以自建而非按向量付托管费的负载。如果你的语料已经装得下、搜索也不受内存限制,收益就更小,而一个成熟、有支持的向量库可能是更稳妥的选择。关于更宏观的自建对租用决策,请过一遍我们的本地模型与 API 盈亏平衡分析;如果你还在选检索策略本身,先比较RAG、微调与长上下文。
气隙隔离与欧盟数据驻留的角度
对受监管团队而言,自托管是有意义的部署选择。TurboVec 与 Qdrant 都可以在自己的基础设施上运行,普通 TurboQuant 不需要数据集校准;TurboVec 的可选 TQ+ 校准也可以在本地完成。搭配本地 embedding 模型,检索路径可以留在你的网络边界内。
这本身并不等于 GDPR 合规。embedding 若与可识别个人有关,仍可能属于个人数据。EDPB 第 28/2024 号意见要求结合具体情况判断匿名性。自托管能减少处理者和跨边界传输,但合法依据、目的限制、保留期、安全控制与数据主体权利仍然适用。关于周边架构,参见我们关于AI 应用的欧盟数据驻留以及在 SharePoint、Confluence 和 Drive 上执行 RAG 权限的指南。
替换向量库前的 10 天评估
- 冻结一个基线。在有代表性的切片上建一个 float32 平坦索引,并在一个带标注的查询集上记录精确 recall。这是每个压缩选项被度量的那个数字。
- 复现占用。按真实维度和数量加载你真实的 embedding,测量常驻内存,包含索引开销和标识符,而不只是向量字节。
- 跑三条赛道。在同一硬件上对比你当前的库、2-bit 与 4-bit 的 TurboVec,以及一种训练式乘积量化配置。
- 连同 rerank 测 recall。报告你计划的超采样加 rerank 步骤前后的 recall@k,因为那才是生产真正提供的东西。
- 对搜索做压测。在你的真实并发下、在你的目标 CPU 上、施加过滤,测量 p50 与 p95 查询延迟和吞吐。
- 测试摄入与增长。加入一个大批次、删除、再加入;确认在没有重训练或重建索引步骤的情况下,内存、延迟和 recall 保持稳定。
- 审计依赖。读代码,检查许可、测试和维护状况。TurboVec 1.0 的 v7 磁盘格式向前兼容;v5/v6 索引需要转换,更早版本需要重建。确认升级与回退方案。
- 对经济性下判断。把测得的占用换算成实例档位或节点数,减去增加的 rerank 成本和运维一个非标准索引所需的工程时间,再比较每次成功查询的成本。
采用前该问的问题
- 在我们的语料和查询集上、经过 rerank 后,2-bit 和 4-bit 的实测 recall@k 是多少?
- 包含索引结构、ID 以及任何为 rerank 保留的全精度副本在内,真实的常驻内存是多少?
- 该索引是否支持我们应用所需的删除、更新、元数据过滤和混合检索?
- 当白名单很小时,用于租户隔离和权限的过滤搜索表现如何?
- 在我们的生产 CPU 上(而非基准机器上)的延迟和吞吐如何?
- 这个库的发布成熟度、测试覆盖、许可和维护状况如何,我们能 fork 它吗?
- 我们能否在不重建检索服务的情况下回退到现有向量库?
来源与结论边界
TurboQuant 的算法与失真结论来自 ICLR 2026 论文与 Google Research 文章。固定存储预算下的量化对比和 Qdrant 1.18 状态来自 Qdrant 的评测。TurboVec 的版本、压缩、基准和功能说法来自其公开仓库。速度与 recall 数字属于各项目及其测试系统,Wavect 未复现。事实核对于 2026 年 9 月 2 日。
常见问题
数据无关量化是什么意思?
TurboVec 怎么把 1000 万文档装进 4 GB?
量化 embedding 会损害检索质量吗?
TurboVec 能上生产了吗?
TurboQuant 与 FAISS 的乘积量化有何不同?
我能为 GDPR 或气隙隔离完全离线运行它吗?
最终思考
数据无关量化在 RAG 内存的工作方式上是一次真正的转变。随机旋转让每个坐标变得可预测,通用码本完成其余部分,也去掉了乘积量化的训练步骤。在激进存储预算下的 recall 结果值得认真对待。
TurboVec 1.0 与 Qdrant 1.18 已把研究变成可部署的软件。2-bit 原始代码确实比 float32 小 16 倍,但整个索引的压缩比必须实测。先在自己的语料上审计、试点和做基准,再承载生产流量。应购买的是更低的成功查询成本,而不是最大的压缩标题。
想在你自己的语料上要一个可用于决策的检索基准?
规划一次 RAG 评估试点