Milvus nlist

1. nlist 是什么?

# 定义索引参数配置 index_params = { "metric_type": "L2", # 距离度量方式:L2、IP、COSINE "index_type": "IVF_FLAT", # 索引类型 "params": {"nlist": 128}, # nlist 越大召回率越高,速度越慢 } collection.create_index("embedding", index_params)

nlist 是 Milvus 中 IVF 系列索引(如 IVF_FLAT、IVF_PQ、IVF_SQ8)的一个重要参数,表示将所有向量分成多少个"桶"(簇、cell、list)。

生活类比: nlist 就像把图书馆的书分成多少个书架。书架越多,每个书架的书越少,查找更精细,但整理和查找所有书架会更慢。

2. nlist 的原理与影响

补充说明:每个向量只属于一个簇,不会有遗漏,也不会重复归属。

nprobe 是什么?

nprobe 是 IVF 索引检索时的另一个重要参数,表示每次检索时要遍历多少个簇。nprobe 决定了"查得有多广"。

生活类比: nprobe 就像你在图书馆找书时,决定要查几个书架。查得多,找到目标的概率高,但花的时间也多。

nlist

128
召回率: 70%
检索速度: 60%
nlist 越大,召回率越高但速度越慢。实际取值需根据数据量和业务需求调整。

nprobe

10
召回率: 40%
检索速度: 90%
nprobe 越大,召回率越高但速度越慢。实际取值需结合 nlist 和数据量调整。

4. 适用场景

5. 小结