nlist:索引被切成几份?
Milvus 构建 IVF 系列索引时,会先对向量进行聚类。nlist 就是聚类中心数量,也意味着索引被分成多少个小桶。nlist 越大,簇越细,索引文件越大但召回潜力更高。
nlist 控制“建索引阶段”将向量空间分成多少个簇(桶),越大精度越高但索引体积与搜索耗时都会上升;nprobe 则是在“查询阶段”决定要探查多少个簇,越大越可能找到更相似的结果,也越慢。下方交互式图示帮你直观感受两者的影响。
Milvus 构建 IVF 系列索引时,会先对向量进行聚类。nlist 就是聚类中心数量,也意味着索引被分成多少个小桶。nlist 越大,簇越细,索引文件越大但召回潜力更高。
查询向量进来后,并不会遍历所有 nlist,而是只挑选最近的若干簇进行精细比较。nprobe 就是实际检查的簇数。值越大,召回更多候选,但也会多一次内存读取 + 距离计算。