7.5
深览指数
科技Bestblogs·Zilliz··AI 生成

Milvus HNSW 量化索引选型指南:从 SQ、PQ、PRQ 到 Refine 实测

本文基于 Cohere 1M 数据集实测对比 Milvus 中 HNSW 及其量化变种 (SQ、PQ、PRQ) 的性能与资源开销。核心结论是:未启用 refinement 的 SQ8 在召回、吞吐、内存三者间最均衡,可作为选型起点;refinement 虽能有效恢复召回,但会显著增加内存,接近甚至超过原版 HNSW。文章还区分了 ef 和 refine_k 的不同瓶颈解决能力,并给出了分场景的量化索引调参路径。适合正在做向量数据库存储优化或 Milvus 性能调优的工程师阅读。原文 ↗

核心观点
  • SQ8(未启用 refinement)是量化压缩最均衡的起点;refinement 是召回率恢复工具,但需管理其额外的内存成本。
  1. 01在 Cohere 1M 数据集中,未启用 refinement 的 SQ8 索引 Recall@100 为 0.9761,峰值 QPS 为 793.1,内存增量约为 HNSW FP32 的 31.3%。
  2. 02启用 refine_type=FP32 后,SQ8 的 Recall@100 提升至 0.9881,但内存增量上升至约 3.97 GB,接近或超过 HNSW FP32。
  3. 03在 m=96, nbits=8 的配置下,PQ 和 PRQ 的 Recall@100 分别仅为 0.6083 和 0.7869,但内存开销极低(446 MB 和 516 MB),适合作为粗召回阶段。
  4. 04ef 主要解决图搜索宽度的不足;refine_k 主要修正量化误差导致的排序偏差,两者不能互相替代。
  5. 05当 PQ/PRQ 的召回率进入平台期后,继续提高 ef 的收益有限,应转向增大编码预算或启用 refinement。
  6. 06文章基于 Milvus 2.6.17 版本和 Cohere 1M 数据集进行实验,测试环境为固定硬件配置。
反方 / 局限
  • 文章的基准测试结果严重依赖于 Cohere 1M 数据集和特定硬件环境,结论不保证适用于其他数据分布(如高维稀疏数据)或不同硬件配置。
  • 文章明确指出,最终选型决策应基于真实工作负载和硬件重跑基准测试,而非完全依赖本文给出的数值。
4 分钟 · 5 卡片 · 11 资料
读原文 →

概念锚点

前置背景

平行视角

未来推演

延伸追问