17个版本 (7个破坏性更新)

0.8.0 2024年5月18日
0.7.1 2023年12月9日
0.7.0 2023年11月22日
0.4.5 2022年9月4日
0.2.0 2020年5月27日

#90 in 科学

Download history 14/week @ 2024-04-28 139/week @ 2024-05-12 64/week @ 2024-05-19 19/week @ 2024-05-26 2/week @ 2024-06-02 4/week @ 2024-06-09 1/week @ 2024-06-16 13/week @ 2024-06-30 29/week @ 2024-07-28 29/week @ 2024-08-11

每月58次下载

Apache-2.0

2.5MB
16K SLoC

C++ 12K SLoC // 0.0% comments Rust 3K SLoC // 0.0% comments Python 513 SLoC // 0.2% comments Shell 15 SLoC

ngt-rs

crate doc

Rust版本的NGT库,它提供了对高维向量数据空间(几到几千维)中大量数据进行高速近似近邻搜索的功能。向量数据可以是f32u8f16

此crate提供了以下索引

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

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

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

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

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

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

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

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

依赖项