求近似最近邻的库 Annoy

我与影子孤独终老i 提交于 2019-12-04 05:00:00

Annoy 是 Spotify 开源的高维空间求近似最近邻的库,在 Spotify 使用它进行音乐推荐。最邻近搜索(Nearest Neighbor Search, NNS)又称为“最近点搜索”(Closest point search),是一个在尺度空间中寻找最近点的优化问题。

Annoy 能够使用静态文件作为索引,意味着可以跨进程共享索引。它还创建了大量的基于只读文件的数据结构,这些数据结构被嵌入内存中,以便许多进程可以共享相同的数据。Annoy 的另一个好处是它试图最小化内存占用,因此索引非常小。

特性:

  • 欧几里德距离, 曼哈顿距离, 余弦距离, 汉明距离或 点(内)积距离
  • 余弦距离等价于归一化向量的欧氏距离=sqrt(2-2*cos(u,v)
  • 如果你的维度不多(比如<100),效果会更好,即使达到 1000 个维度,它也表现得非常出色
  • 内存使用量小
  • 允许你在多个进程之间共享内存
  • 索引创建与查找是分开的(特别是在创建树后,就无法添加更多项目)
  • 原生 Python 支持
  • 在磁盘上生成索引,以便为不适合内存的大型数据集建立索引

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!