3 个不稳定版本

0.5.2 2021 年 6 月 6 日
0.5.0 2020 年 2 月 20 日
0.0.0 2019 年 12 月 6 日

301机器学习

每月下载量 23

MIT 许可证

195KB
4K SLoC

granne*

Crates.io documentation license

granne (graph-based retrieval of approximate nearest neighbors) 是一个基于 分层可导航小世界 (HNSW) 图 的近似最近邻搜索的 Rust 库,并在 Cliqz Search 中使用。它侧重于减少内存使用,以便能够 索引数十亿个向量

特性

  • 内存映射
  • 多线程索引创建
  • 可扩展索引(向已构建索引中添加元素)
  • Python 绑定
  • 密集的 floatint8 元素(余弦距离)

安装

要求

您需要安装 Rust。可以通过调用以下命令来完成:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

或者访问 https://rustup.rs/ 并按照那里的说明进行操作。

Rust

# build
cargo build --release

# test
cargo test

# bench
cargo +nightly bench

Python

请参阅 Python 绑定

可选要求

granne 可以使用 BLAS (https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms) 来提高某些计算的效率。在 Debian/Ubuntu 上,libblas-devlibopenblas-dev 都应该可以工作,其中后者要快得多。

可以通过在编译时传递 blas 功能来启用 BLAS,例如:

cargo build --release --features "blas"

在 Mac OS 上,似乎存在一些问题(可能是这个问题)与默认的 BLAS 库。一种解决方案是安装例如 openblas 并将其链接到该库。


**granne 是瑞典语,意思是 邻居

依赖项

~4.5MB
~87K SLoC