An open-source library for approximate nearest neighbor search in high-dimensional spaces, often used as a backend for vector databases and search engines.
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.
n_trees
) and nodes to inspect during searching (search_k
) can be tuned for trade-offs between speed and accuracy.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.#include "annoylib.h"
.Annoy is open-source software and is free to use under the Apache-2.0 license.