Annoy是Spotify 开源的高维空间求近似最近邻的库,在Spotify使用它进行音乐推荐。最邻近搜索(NearestNeighborSearch,NNS)又称为“最近点搜索”(Closestpointsearch),是一个在尺度空间中寻找最近点的优化问题。
Annoy能够使用静态文件作为索引,意味着可以跨进程共享索引。它还创建了大量的基于只读文件的数据结构,这些数据结构被嵌入内存中,以便许多进程可以共享相同的数据。Annoy的另一个好处是它试图最小化内存占用,因此索引非常小。
特性:
欧几里德距离, 曼哈顿距离, 余弦距离, 汉明距离或 点(内)积距离余弦距离等价于归一化向量的欧氏距离=sqrt(2-2*cos(u,v)如果你的维度不多(比如<100),效果会更好,即使达到1000个维度,它也表现得非常出色内存使用量小允许你在多个进程之间共享内存索引创建与查找是分开的(特别是在创建树后,就无法添加更多项目)原生Python支持在磁盘上生成索引,以便为不适合内存的大型数据集建立索引
评论