SPANN:论文阅读

373 阅读1分钟

Introduction

DiskANN方案使用原始向量建立索引,但是查询时仅调用量化后的向量,这样可以让搜索时保持大方向上与原始搜索方向一致,减小内存使用。
SPANN仅将倒排列表的质心存在内存中,而倒排索引列表放在磁盘中。

方案

使用多平衡聚类算法对数据进行聚类

[30] Hongfu Liu, Ziming Huang, Qi Chen, Mingqin Li, Yun Fu, and Lintao Zhang. Fast clustering with flexible balance constraints. In Proceedings of the IEEE International Conference on Big Data (Big Data), pages 743–750. IEEE, 2018.

使用SPTGA建立索引

在SPANN中,对边际点做了优化,将其归属至多个相邻质心。即让区域可重叠,以尽量避免下图这样的情况发生。

image.png

同时,使用RNG策略对边选择进行优化。

  1. skip the cluster ij for vector x if Dist(cij,x)>Dist(ci(j1),cij)Dist(c_{ij}, x) > Dist(c_{i(j−1)}, c_{ij})
    即如果查询向量x与c1的距离比其他相邻质心之间的距离都要大,则直接舍弃

  2. 一个是非质心节点 assign post list 的个数,也就是如果其他质心与 x 的距离比离 x 最近的质心的距离要大过一定比例,那么就直接放弃。

image.png

搜索过程中一致

image.png

References

Articles
[2111.08566] SPANN: Highly-efficient Billion-scale Approximate Nearest Neighbor Search
Blogs
(●´3`●)やれやれだぜ