• Home
  • Categories
  • Tags
  • Pricing
  • Submit
  1. Home
  2. Sdks & Libraries
  3. Annoy

Annoy

An open-source library for approximate nearest neighbor search in high-dimensional spaces, often used as a backend for vector databases and search engines.

🌐Visit Website

About this tool

Annoy

Annoy (Approximate Nearest Neighbors Oh Yeah) is an open-source C++ library with Python bindings for performing approximate nearest neighbor search in high-dimensional spaces. It is optimized for memory usage and supports efficient loading and saving of indexes to disk, enabling large-scale vector search.

Features

  • Multiple Distance Metrics: Supports Euclidean, Manhattan, Cosine, Hamming, and Dot (Inner) Product distances.
  • Efficient Memory Usage: Indexes are designed to be small and can be memory-mapped, allowing multiple processes to share the same data.
  • Index Persistence: Can create large, read-only file-based data structures that are mmapped into memory, enabling fast loading and sharing.
  • Decoupled Index Creation and Loading: Indexes can be built once, saved as files, and loaded quickly by many processes.
  • On-Disk Index Building: Can build indexes directly on disk, making it possible to handle datasets larger than RAM.
  • Cross-Language Bindings: Native C++ library with Python bindings. Additional community bindings for Go, Lua, Java, Scala, Ruby, Rust, .NET, JVM, and Dart (read-only for some languages).
  • Threaded Index Building: Supports building indexes using multiple CPU cores.
  • Customizable Parameters: Number of trees (n_trees) and nodes to inspect during searching (search_k) can be tuned for trade-offs between speed and accuracy.
  • Static Indexes: Once built, indexes are read-only (no adding of items after build), promoting immutability and efficiency.
  • Prefaulting Support: Optionally pre-reads the entire file into memory for faster subsequent searches.
  • Python API:
    • AnnoyIndex(f, metric): Create index for vectors of dimension f with specified metric.
    • add_item(i, v): Add item with integer id i and vector v.
    • build(n_trees, n_jobs=-1): Build index with specified number of trees and jobs.
    • save(fn), load(fn), unload(): Save/load/unload index from disk.
    • get_nns_by_item(i, n, ...), get_nns_by_vector(v, n, ...): Retrieve nearest neighbors.
    • get_item_vector(i), get_distance(i, j), get_n_items(), get_n_trees(): Various utility functions.
    • on_disk_build(fn): Build index directly on disk.
    • set_seed(seed): Set random seed for reproducible builds.
  • C++ API: Similar to Python, via #include "annoylib.h".
  • Cross-Platform Support: Works on Linux, OS X, Windows.
  • Community and Ecosystem: Widely used in production (e.g., by Spotify for music recommendations), with a large and active community.
  • Open Source: Licensed under Apache-2.0.

Pricing

Annoy is open-source software and is free to use under the Apache-2.0 license.

Resources

  • GitHub Repository
  • PyPI Package
  • Documentation (README)
Surveys

Loading more......

Information

Websitegithub.com
PublishedMay 13, 2025

Categories

1 Item
Sdks & Libraries

Tags

4 Items
#open-source
#ANN
#high-dimensional
#vector search

Similar Products

6 result(s)
MRPT

MRPT (Multi-Resolution Proximity Trees) is an open-source library for fast approximate nearest neighbor search in high-dimensional vector spaces, applicable to vector database backends.

Voyager

Voyager is a Spotify open-source vector search library and service for efficient nearest neighbor search on large-scale vector datasets.

vsag

vsag is an Alibaba open-source library implementing efficient vector search algorithms, including approximate nearest neighbor search for high-dimensional vectors.

HNSWLIB

HNSWLIB is a C++ library with Python bindings for fast approximate nearest neighbor search using Hierarchical Navigable Small World (HNSW) graphs, commonly used in vector database backends.

NMSLIB

NMSLIB is an efficient similarity search library and toolkit for high-dimensional vector spaces, supporting a variety of indexing algorithms for vector database use cases.

ScaNN

A library by Google Research for efficient vector similarity search, suitable for large-scale nearest neighbor applications in AI.

Built with
Ever Works
Ever Works

Connect with us

Stay Updated

Get the latest updates and exclusive content delivered to your inbox.

Product

  • Categories
  • Tags
  • Pricing
  • Help

Clients

  • Sign In
  • Register
  • Forgot password?

Company

  • About Us
  • Admin
  • Sitemap

Resources

  • Blog
  • Submit
  • API Documentation
All product names, logos, and brands are the property of their respective owners. All company, product, and service names used in this repository, related repositories, and associated websites are for identification purposes only. The use of these names, logos, and brands does not imply endorsement, affiliation, or sponsorship. This directory may include content generated by artificial intelligence.
Copyright © 2025 Acme. All rights reserved.·Terms of Service·Privacy Policy·Cookies