Annoy
SpotifyAnnoy (Approximate Nearest Neighbors Oh Yeah) is a C++ library with Python bindings for approximate nearest neighbour search over random projection trees, built so that indexes are static files memory-mapped into a process. Many processes share one index without loading it each, which is what it was built for at Spotify.
Openness
5 high confidence- license
- Apache-2.0(OSI)
- source
- public
- core features withheld
- no
Apache-2.0 license body confirmed. The repository is public and unarchived and builds the whole product, and the README describes no paid tier, enterprise edition or license-gated build beside it, so source is public and the core ungated.
- https://raw.githubusercontent.com/spotify/annoy/main/LICENSE recorded 2026-09-30
LICENSE file is the Apache-2.0 text: "Apache License" and "Version 2.0, January 2004" and "TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION".
- https://raw.githubusercontent.com/spotify/annoy/main/README.rst recorded 2026-09-30
README describes "a C++ library with Python bindings to search for points in space that are close to a given query point" and shows no paid tier; searched the body for enterprise, paid tier, license key and commercial: none.
Adoption
3 high confidenceAnnoy's adoption reading comes directly from PyPI downloads of the package, since the library itself is the distributed artifact rather than a client for a separate service. That is a direct signal of use, though it counts only PyPI installs and not use through other package managers or vendored copies.
- https://pypistats.org/api/packages/annoy/recent recorded 2026-10-07
913,200 downloads in the trailing 30 days for annoy (pypistats last_month)
Capability
2 medium confidenceAnnoy provides one index family, random-projection-tree indexes stored as mmapped, read-only files with several distance metrics, and an index is immutable once it is built. Chroma covers much more of the same persist-index-retrieve path as a database in its own right, which is why it sits further along the same path.
- https://raw.githubusercontent.com/spotify/annoy/main/README.rst recorded 2026-09-30
README says Annoy "creates large read-only file-based data structures that are" mmapped so many processes share the data, and that "you can not add more items once the tree has been created".
- https://raw.githubusercontent.com/spotify/annoy/main/README.rst recorded 2026-09-30
README explains the index is built "by building up a tree. At every intermediate node in the tree, a random hyperplane is chosen" using random projections.
- https://raw.githubusercontent.com/spotify/annoy/main/README.rst recorded 2026-09-30
README lists distance metrics "Euclidean distance", "Manhattan distance", "Hamming distance" and cosine and dot product, and says Annoy can "use static files as indexes".
- https://raw.githubusercontent.com/spotify/annoy/main/README.rst recorded 2026-09-30
README says Annoy is "almost as fast as the fastest libraries" and lists only tree-based index building with n_trees, with no other index family; searched the body for HNSW, IVF, quantization, server and cluster: none.
Verified 2026-09-30, except some scores, still awaiting re-confirmation