首页/AI/RAG 与向量库速查/Milvus 索引类型选择

Milvus 索引类型选择

Milvus 2.x 常用索引:FLAT 精确、IVF 系列按聚类加速、HNSW 图索引、DISKANN 面向磁盘的大规模场景;索引选择与度量、内存预算、召回目标一起决定。

RAG 与向量库速查AI更新于 2026-10-13

Milvus 索引怎么选

Milvus 常用索引分几类:精确索引用于小数据量与效果基线,倒排聚类索引用少量召回损失换明显加速,图索引在低延迟高召回场景表现最好,磁盘型索引面向内存受限的超大规模。索引类型与度量方式、内存预算、召回目标三者一起决定,不能只看速度。

常见索引对比

索引特点适用
FLAT精确、无训练小数据量与效果基线
IVF_FLAT / IVF_SQ8聚类加速、可量化压缩百万级、内存可控
HNSW图索引、低延迟高召回在线问答主力场景
DISKANN磁盘索引、内存占用低亿级、内存受限

建 HNSW 索引并加载

建 HNSW 索引并加载
index_params = client.prepare_index_params()
index_params.add_index(field_name="vector", index_type="HNSW",
                       metric_type="COSINE",
                       params={"M": 16, "efConstruction": 200})
client.create_index("kb", index_params)
client.load_collection("kb")          # 检索前需加载

选型步骤

  • 先用精确索引建立效果基线,记录召回率与延迟
  • 数据量到百万级且有内存余量时,换图索引并对比召回损失
  • 内存吃紧时考虑量化压缩或磁盘型索引,接受一定精度下降
  • 索引参数与集合维度、度量方式一起固定,改参数需要重建索引
  • 建完索引必须加载集合,否则检索直接报错

检索参数与影响

参数作用调整方向
metric_type相似度度量必须与向量模型用法一致
ef(查询时)图索引的候选队列长度召回不足时逐步调大
nprobe倒排索引扫描的聚类数召回与延迟的权衡点
量化位数压缩精度内存越紧精度损失越大
先用精确索引建立效果基线,再换近似索引对比召回与延迟;切换索引类型需要重建,不能只改参数。

运维注意事项

  • 索引构建期间集合可能不可检索,重建要安排在低峰窗口
  • 内存按向量条数、维度与索引类型综合估算,并留出构建时的额外开销
  • 数据持续写入会让新段使用未建索引的粗排,检索效果会短暂波动
  • 同一集合内不同向量字段可以有不同索引,但维度必须与向量列声明一致
  • 升级集群版本前先在测试环境验证索引兼容性,再动生产数据

易错点

  • 建了索引忘记加载集合,检索报集合未加载
  • 选索引只看速度不看召回,上线后答案质量下降却难归因
  • 度量方式与向量模型不匹配,相似度排序失去意义
  • 索引参数照搬示例值,未按数据规模与内存预算做验证

数据来源与参考

  • Milvus 官方文档(Index Explained / HNSW / DISKANN)
  • Milvus 官方文档(create_index)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌