近似近邻库
n2的Python项目详细描述
n2-近似^ {STR 1 } $n<强> eSimult^ {STR 1 } $n<强> 8bOO/p>
importnumpyasnpfromn2importHnswIndexN,dim=10240,20samples=np.arange(N*dim).reshape(N,dim)index=HnswIndex(dim)forsampleinsamples:index.add_data(sample)index.build(m=5,n_threads=4)print(index.search_by_id(0,10))# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
介绍
N2是一个近似最近邻域算法库 C++(包括Python/GO绑定)。n2提供更快的搜索速度 在建模大型数据集时比其他实现更快。另外,氮气 支持多核CPU进行索引构建。
背景
有很大的近似最近邻域库,如 annoy和nmslib,但它们没有完全满足 处理Kakao的数据集。因此,我们决定建立一个图书馆 这提高了可用性,并在nmslib的基础上执行得更好。以及 最后,我们向世界释放氮气。
功能
- 高效的实施。n2是一个轻量级的库,即使使用大型数据集也能运行得更快。
- 支持多核CPU建立索引。
- 默认情况下,支持用于处理大型索引文件的mmap功能 很有效率。
- 支持python/go绑定。
参考文献
-
有效和稳健的近似最近邻搜索
《层次通航小世界图》于。A.马尔科夫,D.A.
Yashunin(可在ARXIV:^ {A9})
- nmslib:https://github.com/searchivarius/NMSLIB
- 烦恼:https://github.com/spotify/annoy
许可证
此软件是根据Apache 2 license授权的,引用如下。
版权所有2017 Kakao Corp.http://www.kakaocorp.com
根据apache许可证2.0版(以下简称“许可证”)授权;您可以 除非符合许可证,否则不要使用此项目。你可以 获取许可证副本 http://www.apache.org/licenses/LICENSE-2.0。
除非适用法律要求或书面同意,否则软件 根据许可证分发是按“原样”分发的, 无任何明示或默示的保证或条件。 有关管理权限的特定语言和 许可下的限制。