{"categories":[{"label":"Scientific/Engineering","url":"https://skillfed.io/packages/category/scientific-engineering/3"}],"enrichment":{"capability":"Annoy searches for approximate nearest neighbors in high-dimensional vector spaces using a C++ library with Python bindings, and stores indexes as memory-mapped files that multiple processes can share.","skillfed_tags":["vector-search","similarity-matching","memory-mapped"],"use_cases":["Build a recommendation engine that finds similar users or items by querying pre-built vector indexes across multiple application servers","Index millions of embeddings from a machine learning model and serve nearest-neighbor queries in production without rebuilding indexes","Share a single large nearest-neighbor index across many parallel processes or Hadoop jobs without duplicating data in memory","Implement similarity search for music, images, or text embeddings where approximate results are acceptable and speed matters more than perfect accuracy","Reduce memory footprint for high-dimensional vector search by using disk-based indexes that are memory-mapped on demand"],"what_it_does":"Annoy is a nearest-neighbor search library built on C++ with Python bindings, designed to find points in space closest to a query point across many dimensions. It trades some accuracy for speed by building forests of random trees, allowing you to tune the tradeoff between search speed and precision at query time. The core innovation is that indexes are stored as static, memory-mapped files on disk\u2014meaning you build an index once, save it, and then any number of processes can load and query it simultaneously without rebuilding or copying data.\n\nThe library supports multiple distance metrics (Euclidean, Manhattan, cosine, Hamming, and dot product) and is optimized for memory efficiency, making it practical for large datasets that would otherwise exhaust RAM. It was originally built at Spotify for music recommendation systems working with millions of high-dimensional vectors. You create an index by adding vectors with integer IDs, build a forest of trees to structure the search space, save the index to disk, and then load it (via mmap) in any process to perform fast approximate nearest-neighbor queries.","worth_installing":"Yes, if you need approximate nearest-neighbor search and want to share indexes across processes. The library is production-stable, permissively licensed, and has no known vulnerabilities. Install friction is medium due to C++ compilation, and the package is aging (last release mid-2023) but not abandoned. Best suited for use cases where approximate results are acceptable, memory efficiency matters, and you can tolerate the build step."},"id":"annoy","links":{"html":"https://skillfed.io/packages/annoy","md":"https://skillfed.io/packages/annoy.md","pypi":"https://pypi.org/project/annoy/"},"maintenance":{"status":"aging"},"meta":{"latest_release":"2023-06-14","license_spdx":null,"license_treatment":"permissive","name":"annoy","python_support":"unspecified","summary":"Approximate Nearest Neighbors in C++/Python optimized for memory usage and loading/saving to disk."},"popularity":{"monthly_downloads":1232480,"position":4184,"tier":"top_5000"},"security":{"n_vulnerabilities":0},"version":"1.17.3"}
