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