Giter Club home page Giter Club logo

granne's Introduction

granne*

Crates.io documentation license

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.

Features

  • Memory-mapped
  • Multithreaded index creation
  • Extensible indexes (add elements to an already built index)
  • Python bindings
  • Dense float or int8 elements (cosine distance)

Installation

Requirements

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.

Rust

# build
cargo build --release

# test
cargo test

# bench
cargo +nightly bench

Python

See Python Bindings.

Optional Requirements

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

granne's People

Contributors

plenkl avatar herrerik avatar os-gabe avatar subu-cliqz avatar vitalyd avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.