Zilliz 前天 19:53
Milvus Week | 1bit极度量化+高召回,RaBitQ才是最好的向量量化算法
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了Milvus向量数据库通过RaBitQ技术实现低成本、高性能数据价值挖掘的实践。RaBitQ通过1-bit量化,在保证高召回率的同时,将查询吞吐量提升至原来的3倍。文章详细阐述了RaBitQ的核心原理、在Milvus中的工程实践以及实测结果,并强调了该技术在降低存储与计算资源消耗方面的优势。RaBitQ技术为应对数据激增与成本压力提供了关键支持,为AI应用发展提供了更高效的解决方案。

💡RaBitQ的核心在于利用高维数据的“测度集中”现象,通过角度信息编码替代精确坐标存储。这种方法使得在保证相对结构信息的同时,舍弃大量原始数值精度成为可能,从而实现准确的最近邻搜索。

📐RaBitQ的实现分为两步:向量归一化和超立方体投影。归一化以参考点为基准处理数据,保留方向特征;超立方体投影将归一化后的向量映射到高维超立方体的最近顶点,每个维度仅需1位存储。

⚙️为了在生产环境中使用RaBitQ,Milvus在Knowhere引擎中进行了工程实践,包括辅助数据的存储与计算策略、基于现代CPU指令集的距离计算加速以及多级标量量化(SQ1–SQ8)支持。Zilliz Cloud平台还加入了Cardinal引擎专有优化,进一步提升了向量检索的灵活性和效率。

📈实测结果表明,经过精调的IVF_RABITQ索引在性能上带来了显著提升。与基线索引IVF_FLAT相比,IVF_RABITQ在吞吐量上有显著优势,在使用SQ8查询和SQ8 refinement时,吞吐量是IVF_FLAT的3倍以上,召回率也接近持平。

原创 刘力、陈将 2025-05-14 21:05 上海

向量量化如何带来低成本的数据价值挖掘


本文为Milvus Week系列之二,该系列旨在分享Zilliz、Milvus在系统性能、索引算法和云原生架构上的创新与实践,以下是DAY2内容划重点:


前言

首先,说两个常识:

1、非结构化数据处理、存储、价值挖掘成本高于传统结构化数据。

2、一旦数据的计算与存储成本上升到一个超过实际业务价值的临界点,数据就从宝藏,变成了电子垃圾,价值无法被挖掘。

关于如何降本,Milvus提供了以下几种办法:高效索引降低计算开销、冷热数据降低内存开销、向量数据湖复用企业已有基础设施等等。

除此之外,向量量化技术也是我们做成本控制时的重要手段

一般来说,非结构化数据会在切片后被转化为一组高维向量。其中,高维向量本身,又通常由数百个浮点数组成(如 768 维 FP32 向量占用约 3 KB),据此线性推算如果用 HNSW索引(一种流行的 ANN 算法)来处理 10 亿个 768 维 FP32 向量,将需要超过 3TB 内存

但对于向量检索而言,使用全精度的 FP32本质上是一种冗余。

相应的,在工程实现上,我们可以通过量化技术,将原始向量进行压缩,去除冗余信息。其中,压缩最极致的形式是 1-bit 量化,也叫二值量化(Binary Quantization),它将每个维度的浮点值压缩为 1 个比特,整体内存占用是 FP32精度的 1/32 ,同时降低内存带宽需求,大幅提升整体吞吐量。

但传统二值量化的问题是:召回率通常较低,难以满足生产需求。

近期,Milvus 通过集成 RaBitQ 技术实现了突破——在保持高召回率的同时,同时实现 1-bit 量化,查询吞吐量(QPS)提升至原来的 3 倍

一句话概括RabitQ的革命性,Not only RBQ, but also Revolutionary binary quantazition,既实现了一比特的极度量化,又能保证高 recall接下来,我们将深入解析我们在 Milvus 及 Zilliz Cloud(全托管 Milvus 服务)中实现 RaBitQ 的工程实践。

01 

为什么说RaBitQ才是最好的向量量化算法 

在解读RaBitQ之前,我们需要先理解一句话:高维数据的随机性会带来高度的确定性。

这背后是一个基础的高维几何概念:高维向量空间遵循测度集中”(Concentration of Measure)现象。而基于测度集中,我们会发现一些神奇的现象,举例来说:

也就是说,我们既没有读取任何数据,也没有进行任何计算,就会发现高维向量空间中,维度越高, x[0] 的不确定性越低:其可能的取值范围从 [−1,1] 缩小到了 

这使得我们可以舍弃大量原始的数值精度,同时仍然保留足够的相对结构信息,以实现准确的最近邻搜索。

对于在单位球面上均匀分布的随机单位向量而言:在三维空间中,单个维度的取值呈均匀分布;但在 1000 维空间中,每个维度的取值会高度集中于零。(来源:https://dev.to/gaoj0017/quantization-in-the-counterintuitive-high-dimensional-space-4feg)

基于这一高维性质,RaBitQ 的核心思想是采用角度信息编码替代精确坐标存储。具体实现分为两步:

    向量归一化以参考点(如数据集质心)为基准对数据向量进行归一化处理,保留方向特征

    超立方体投影将归一化后的向量映射到高维超立方体的最近顶点,每个维度仅需 1 位存储

这种方法也自然扩展为 IVF_RaBitQ:在该架构下,归一化是相对于最近的聚类中心进行的,从而提升了局部区域的编码精度。

可以通过在超立方体上寻找与原向量最接近的近似向量来对其进行压缩,因为这样每个维度仅需 1 bit 进行存储。(来源:https://dev.to/gaoj0017/quantization-in-the-counterintuitive-high-dimensional-space-4feg)

为了确保即使在高度压缩的表示下仍能保持搜索的可靠性,RaBitQ 还引入了一个具有理论基础的无偏距离估计器,用于估算查询向量与已量化向量之间的距离,从而在实现最小化重构误差的同时保障了召回率(recall)。

除此之外,RaBitQ还具备以下核心优势:

以上优化组合,使得RaBitQ 相比于市面上其他向量数据库的实现的二值量化(Binary Quantization)的压缩算法(比如Qdrant 、weaviate的 Binary Quantization),能够以极低的精度牺牲为条件,实现高吞吐、低延迟的向量搜索。

02 

Milvus 工程实践:如何落地 RaBitQ?

虽然 RaBitQ 的核心原理相对简单,也附有参考实现

(见 https://github.com/gaoj0017/RaBitQ)

但要把它真正落地到像 Milvus 这样面向生产的分布式向量数据库里,依然会碰到不少工程细节需要权衡和优化。我们已经在 Knowhere(Milvus 底层的高性能向量检索引擎)中完成了 RaBitQ 的落地实现,并把一个性能更优的版本贡献给了 FAISS 社区。以下是几个关键设计点:

通过这些针对性优化,Milvus 版的 RaBitQ 在跨平台兼容性、存储-性能平衡以及大规模高并发查询处理能力上,都达到了生产级向量数据库的要求,提供了一套成熟、高效、可扩展的解决方案。

03 

实测突破:RaBitQ 如何实现3 倍 QPS 提升?

从 Milvus 2.6 开始,我们将推出全新的 IVF_RABITQ 索引类型,融合了 RaBitQ、IVF 倒排索引、随机旋转变换(Random Rotation)以及后处理优化机制(refinement),在高效压缩和高精度检索之间取得更优平衡。

    from pymilvus import MilvusClient

    index_params = MilvusClient.prepare_index_params()

    index_params.add_index(

        field_name="your_vector_field_name"# Name of the vector field to be indexed

        index_type="

    IVF_RABITQ

    ", # Will be introduced in Milvus 2.6

        index_name="vector_index"# Name of the index to create

        metric_type="IP"# IVF_RABITQ supports IP and COSINE

        params={

            "nlist": 1024, # IVF param, specifies the number of clusters

        } # Index building params

    )

    我们基于开源基准工具 vdb-bench 在 AWS EC2 

    m6id.2xlarge

     实例上,对 Milvus Standalone 版进行了对比测试。该实例配备 

    Intel Xeon 8375C

    Ice Lake

     架构,支持 AVX-512 的 

    VPOPCNTDQ

     指令)、8 线程、32 GB RAM。在 100 万向量、768 维场景下,使用 vdb-bench 的搜索性能测试(

    Search Performance Test (1M dataset, 768 dim)

    )进行评估。

    Milvus

     默认将数据分成每段 1 GB 大小;对于本次测试,768 × 100 万条 FP32 向量(约 3 GB 原始数据)会被分配到多个 segment 中执行,确保基准结果具有良好的可重现性与扩展性。

    配置参数细节

    以下是关于 IVF、RaBitQ 以及精调过程(refinement)过程的一些底层配置参数说明:

    测试结果

    结果显示,经过精调的IVF_RABITQ 带来了显著的性能提升。与基线索引 IVF_FLAT 相比(该索引在 95.2% 召回率下达到 236 QPS),IVF_RABITQ 在吞吐量上有显著优势——在使用 FP32 查询时可达 648 QPS,而在配合 SQ8 量化查询时更是达到 898 QPS。

    不过,这种性能提升也带来了召回率的牺牲。当 IVF_RABITQ 未启用 refinement 时,召回率稳定在约 76%,对于要求高精度的应用可能无法满足。但即便如此,在使用 1-bit 向量压缩的情况下实现这一召回率,仍然是非常难得的。

    提升精度,refinement 是关键。当配置为 SQ8 查询 + SQ8 refinement 时,IVF_RABITQ 实现了高性能与高召回的双赢:召回率高达 94.7%,几乎与 IVF_FLAT 持平,同时吞吐量达到 864 QPS,是 IVF_FLAT 的 3 倍以上。即使与另一种常用量化索引 IVF_SQ8 相比,IVF_RABITQ + SQ8 refinement 在相似召回率下也实现了超过一半的吞吐量,且成本增加微乎其微。

    简而言之,如果希望在“可接受的召回率”下最大化吞吐量,IVF_RABITQ 是一个非常优秀的选择;而在搭配 refinement 后,效果更佳,不仅大幅提升了性能与准确率,同时所占内存相比 IVF_FLAT 更小,非常适合对速度和精度都有要求的场景。

    04 

    结论

    RaBitQ 技术的引入为 Milvus 向量数据库在性能与成本的平衡上树立了新的标杆。通过充分利用高维空间的几何特性与硬件加速能力,RaBitQ 在保证召回率的前提下,实现了查询吞吐量(QPS)的 3 倍提升,同时显著降低了存储与计算资源消耗。

    此外,通过结合 IVF 架构与多级精调策略,这一技术不仅为大规模向量检索场景提供了高效的解决方案,也为企业应对数据激增与成本压力提供了关键支持。Milvus 在 Knowhere 引擎与 Zilliz Cloud 平台中的工程实践,进一步验证了 RaBitQ 在生产环境中的可靠性与扩展性。

    随着 AI 应用的爆发式增长,向量数据库的底层技术革新将愈发关键。Milvus 团队将持续深耕向量压缩与检索优化,助力开发者以更低成本、更高效率解锁数据价值,推动智能时代的技术边界不断拓展。

    作者介绍

    刘力

    Zilliz 研发总监兼 Milvus 技术负责人 

    推荐阅读

    Milvus Week | 向量搜索遇上过滤筛选,如何选择最优索引组合?

    低内存、高性能,磁盘索引可以这样玩

    点击“阅读原文”即可体验zillz cloud

    阅读原文

    跳转微信打开

    Fish AI Reader

    Fish AI Reader

    AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

    FishAI

    FishAI

    鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

    联系邮箱 441953276@qq.com

    相关标签

    RaBitQ Milvus 向量数据库 向量量化 数据挖掘
    相关文章