Skip to content

fujinochan/hnswdb

 
 

Repository files navigation

HNSW DB

Embeddable integration of Hierarchical Navigable Small World(HNSW) Graph for ANN search. This project is forked from this repository. We aim to integrate HNSW and key-value datastore such as LevelDB for better memory usage and persistency reasons.

Tips

A good default for M and M0 parameters is 12 and 24 respectively. According to the paper, M0 should always be double M, but you can change both of them freely.

Example

To see how this might be used with euclidean space, see tests/simple.rs.

Algorithm

This is based on the paper "Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs" by Yu. A. Malkov and D. A. Yashunin. This paper builds on the original paper for NSW. There are multiple papers written by the authors on NSW, which preceeded HNSW.

Credit

This is in no way a direct copy or reimplementation of the original implementation. This was made purely based on the paper without reference to the original headers. The paper is very well written and easy to understand, with some minor exceptions. Thank you to the authors for your valuble contribution.

About

HNSW ANN from the paper "Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs"

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Rust 96.8%
  • Python 3.2%