14 个稳定版本

2.2.2 2024年5月18日
2.1.6 2023年12月8日
2.1.5 2023年11月22日
1.14.8 2022年9月3日
1.11.6 2020年5月27日

#549 in 科学

41 每月下载量
用于 ngt

Apache-2.0

2MB
13K SLoC

C++ 12K SLoC // 0.0% comments • Rust 包仓库 Python 514 SLoC // 0.2% comments • Rust 包仓库 Rust 57 SLoC • Rust 包仓库 Shell 16 SLoC • Rust 包仓库

ngt-rs

crate doc

Rust 对 NGT 的封装,该库提供了在高度维度的向量数据空间(几十到几千维)中对大量数据进行高速近似最近邻搜索的功能。向量数据可以是 f32u8f16

此 crate 提供以下索引

  • NgtIndex: 基于图和树的索引[^1]
  • QgIndex: 基于量化图的索引[^2]
  • QbgIndex: 基于量化 blob 图的索引

通过 quantized Cargo 功能可以访问这两种量化索引。请注意,它们依赖于 BLASLAPACK,因此必须本地安装。此外,通过使用 qg_optim Cargo 功能,可以 提高 QgIndex 的性能。

NgtIndex 默认实现是 ANNG。可以通过 optim 模块进行优化[^3] 或转换为 ONNG。

默认情况下,ngt-rs 将动态构建,这需要使用 CMake 构建NGT。这意味着您需要将构建工件 libngt.so 可用于您的最终二进制文件(参见CI中的示例)。然而,静态 功能将静态构建和链接NGT。请注意,OpenMP 也将被静态链接。如果使用 量化 功能,那么 BLASLAPACK 库也将被静态链接。

NGT的共享内存大数据集功能分别通过Cargo功能shared_memlarge_data提供。

[^1]: 图和树方法说明

[^2]: 基于量化的图方法说明

[^3]: Python中的NGT索引优化示例

依赖项