scann:可伸缩最近邻居

2020-07-07 06:25:40

SCANN(Scalable Neighbor Neighbors)是一种在尺度上进行高效向量相似搜索的方法。此代码版本实现了[1],它包括搜索空间剪枝和最大内积搜索的量化,还支持其他距离函数,如欧几里德距离。该实现是为支持AVX2的x86处理器设计的。scann在ann-Benchmark s.com上实现了一流的性能,如下面的Glove-100角度数据集所示:

scann可以配置为适合不同大小和分布的数据集,它有TensorFlow和Python API。该库在处理大数据集时表现出很强的性能[1]。该代码是出于研究目的而发布的。有关算法的学术描述的更多细节,请参见[1]。

@文章{标题={用各向异性矢量量化加速大规模推理},作者={郭瑞琪和孙飞,菲利普和林格伦,埃里克和耿爽,泉和司查,大卫和陈大卫,费利克斯和库马尔,三吉},期刊={arxiv预印本arxiv:1908.10396},年份={2020年}}。

有关与Ubuntu 16.04或更高版本上的Python3.5、3.6和3.7兼容的预构建二进制文件,请参阅上面的内容。这些二进制文件可以使用pip install<;whl name>;安装。这些二进制文件需要GLIBCXX 3.4.26或更高版本,GCC 9附带这些软件。请使用您的操作系统说明安装GCC 9。

要从源代码构建scann,首先需要安装C++17的构建工具bazel、clang 8和libstdc++头文件(随GCC 9提供)。此外,scann需要在该版本的Python上安装最新版本的Python(3.5.x或更高版本)和TensorFlow 2.1.0。满足这些前提条件后,在存储库的root目录中运行以下命令:

成功完成这些命令后,.whl文件应出现在存储库的根目录中。这个.whl可以通过pip安装。