Crates.io | granne |
lib.rs | granne |
version | 0.5.2 |
source | src |
created_at | 2019-12-06 10:10:18.774762 |
updated_at | 2021-06-06 13:04:32.221136 |
description | Graph-based Retrieval of Approximate Nearest Neighbors |
homepage | |
repository | https://github.com/granne/granne |
max_upload_size | |
id | 186836 |
size | 209,036 |
granne (graph-based retrieval of approximate nearest neighbors) is a Rust library for approximate nearest neighbor search based on Hierarchical Navigable Small World (HNSW) graphs and is used in Cliqz Search. It focuses on reducing memory usage in order to allow indexing billions of vectors.
float
or int8
elements (cosine distance)You will need to have Rust
installed. This can be done by calling:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Or by visiting https://rustup.rs/ and following the instructions there.
# build
cargo build --release
# test
cargo test
# bench
cargo +nightly bench
See Python Bindings.
granne can use BLAS
(https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms) to improve speed of some computations. On Debian/Ubuntu both libblas-dev
and libopenblas-dev
should work, with the latter being significantly faster.
BLAS
can be enabled by passing the blas
feature during compilation, e.g.
cargo build --release --features "blas"
On Mac OS there seems to be some issue (maybe
this one)
with the default BLAS
library. A workaround is to install e.g. openblas
and link to that instead.
*granne is Swedish and means neighbor