milvus基础

nlist和nprobe

  • nlist 是调用 create_index 时设置的参数,nprobe 则是调用 search 时设置的参数。
  • IVFLAT 和 SQ8 索引都是通过聚类算法把大量的向量划分成很多‘簇’(也可以叫‘桶’),
  • nlist 指的就是聚类时划分桶的总数。
  • 通过索引查询步骤
    1. 第一步先找到和目标向量最接近的若干个桶(nprobe:若干个桶的数量)
    2. 若干个桶里通过比较向量距离查找出最相似的 k 条向量。
  • nlist越大,也就是建立索引时,划分桶的数量越多,同时每个桶中的向量数量越少
    • 查询时,比较的向量越少,结果就是:性能和速度越好;准确率越低
    • nlist官方推荐为 4*sqrt(n),其中,n表示向量的个数
  • nprobe越大,则比较的桶和向量越多,结果就是:性能和速度相对越低,准确率越高
posted @ 2024-08-21 13:37  柯南小海盗  阅读(7)  评论(0编辑  收藏  举报