milvus基礎

柯南小海盗發表於2024-08-21

nlist和nprobe

  • nlist 是呼叫 create_index 時設定的引數,nprobe 則是呼叫 search 時設定的引數。
  • IVFLAT 和 SQ8 索引都是透過聚類演算法把大量的向量劃分成很多‘簇’(也可以叫‘桶’),
  • nlist 指的就是聚類時劃分桶的總數。
  • 透過索引查詢步驟
    1. 第一步先找到和目標向量最接近的若干個桶(nprobe:若干個桶的數量)
    2. 若干個桶裡透過比較向量距離查詢出最相似的 k 條向量。
  • nlist越大,也就是建立索引時,劃分桶的數量越多,同時每個桶中的向量數量越少
    • 查詢時,比較的向量越少,結果就是:效能和速度越好;準確率越低
    • nlist官方推薦為 4*sqrt(n),其中,n表示向量的個數
  • nprobe越大,則比較的桶和向量越多,結果就是:效能和速度相對越低,準確率越高

相關文章