3 个不稳定版本
0.5.2 | 2021 年 6 月 6 日 |
---|---|
0.5.0 | 2020 年 2 月 20 日 |
0.0.0 | 2019 年 12 月 6 日 |
301 在 机器学习 中
每月下载量 23 次
195KB
4K SLoC
granne*
granne (graph-based retrieval of approximate nearest neighbors) 是一个基于 分层可导航小世界 (HNSW) 图 的近似最近邻搜索的 Rust 库,并在 Cliqz Search 中使用。它侧重于减少内存使用,以便能够 索引数十亿个向量。
特性
- 内存映射
- 多线程索引创建
- 可扩展索引(向已构建索引中添加元素)
- Python 绑定
- 密集的
float
或int8
元素(余弦距离)
安装
要求
您需要安装 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-dev
和 libopenblas-dev
都应该可以工作,其中后者要快得多。
可以通过在编译时传递 blas
功能来启用 BLAS
,例如:
cargo build --release --features "blas"
在 Mac OS 上,似乎存在一些问题(可能是这个问题)与默认的 BLAS
库。一种解决方案是安装例如 openblas
并将其链接到该库。
**granne 是瑞典语,意思是 邻居
依赖项
~4.5MB
~87K SLoC