近似近邻库

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]

安装

要安装:

sudo pip install n2

有关详细信息,请参阅the installation以获取有关如何从源代码生成n2的说明。

介绍

N2是一个近似最近邻域算法库 C++(包括Python/GO绑定)。n2提供更快的搜索速度 在建模大型数据集时比其他实现更快。另外,氮气 支持多核CPU进行索引构建。

背景

有很大的近似最近邻域库,如 annoynmslib,但它们没有完全满足 处理Kakao的数据集。因此,我们决定建立一个图书馆 这提高了可用性,并在nmslib的基础上执行得更好。以及 最后,我们向世界释放氮气。

功能

  • 高效的实施。n2是一个轻量级的库,即使使用大型数据集也能运行得更快。
  • 支持多核CPU建立索引。
  • 默认情况下,支持用于处理大型索引文件的mmap功能 很有效率。
  • 支持python/go绑定。

性能

如果你想了解详细的基准解释。更多实验见the benchmark

索引构建时间

image0

搜索速度

image1

内存使用

image2

绑定

以下指南解释了如何将n2与基本示例和api一起使用。

参考文献

许可证

此软件是根据Apache 2 license授权的,引用如下。

版权所有2017 Kakao Corp.http://www.kakaocorp.com

根据apache许可证2.0版(以下简称“许可证”)授权;您可以 除非符合许可证,否则不要使用此项目。你可以 获取许可证副本 http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则软件 根据许可证分发是按“原样”分发的, 无任何明示或默示的保证或条件。 有关管理权限的特定语言和 许可下的限制。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何用java表示这个数学函数的算法   Java/Stream帮助:仅使用streams将嵌套的映射列表转换为映射   使用Selenium连接到数据库时发生java未知主机异常   java如何了解jvm内存使用:“堆内存”和“堆外内存”   java Oracle BI报告导入模板   java如何使用Spring将xml转换为bean?   java线程。join()以保证执行顺序   java从THINGSPEAK到ANDROID应用程序获取JSON数据   使用Java的stanford库中的异常   java正确使用来自其他类文件的方法   如果集合中的元素类型为接口类型,如何填充集合?(爪哇)   记录java。util。记录器创建的文件超过了应有的数量   类Java对象uniq值   尝试调用无法应用于()的方法时出现java错误