cmuparlay / ParlayANN

A library of algorithms for approximate nearest neighbor search in high dimensions, along with a set of useful tools for designing such algorithms.
MIT License
118 stars 23 forks source link

ParlayANN

ParlayANN is a library of approximate nearest neighbor search algorithms, along with a set of useful tools for designing such algorithms. It is written in C++ and uses parallel primitives from ParlayLib. Currently it includes implementations of the ANNS algorithms DiskANN, HNSW, HCNNG, and pyNNDescent.

To install, clone the repo and then initiate the ParlayLib submodule:

git submodule init
git submodule update

See the following documentation for help getting started:

This repository was built for our paper Scaling Graph-Based ANNS Algorithms to Billion-Size Datasets: A Comparative Analsyis. If you use this repository for your own work, please cite us:

@inproceedings{ANNScaling,
  author = {Manohar, Magdalen Dobson and Shen, Zheqi and Blelloch, Guy and Dhulipala, Laxman and Gu, Yan and Simhadri, Harsha Vardhan and Sun, Yihan},
  title = {ParlayANN: Scalable and Deterministic Parallel Graph-Based Approximate Nearest Neighbor Search Algorithms},
  year = {2024},
  isbn = {9798400704352},
  publisher = {Association for Computing Machinery},
  address = {New York, NY, USA},
  url = {https://doi.org/10.1145/3627535.3638475},
  doi = {10.1145/3627535.3638475},
  booktitle = {Proceedings of the 29th ACM SIGPLAN Annual Symposium on Principles and Practice of Parallel Programming},
  pages = {270–285},
  numpages = {16},
  keywords = {nearest neighbor search, vector search, parallel algorithms},
  location = {Edinburgh, United Kingdom},
  series = {PPoPP '24}
}