EFANNA
EFANNA is an extremely fast approximate nearest neighbor search algorithm based on kNN graphs and randomized KD-trees. The provided implementation offers a high-performance ANN index suitable as a building block in custom vector search and retrieval infrastructure.
About this tool
EFANNA
Category: SDKs & Libraries
Tags: ann, high-performance, vector-indexing
Source: https://github.com/ZJULearning/efanna
Overview
EFANNA is a C++ library for extremely fast approximate nearest neighbor (ANN) search on large-scale data. It implements the EFANNA algorithm described in the paper “EFANNA: Extremely Fast Approximate Nearest Neighbor Search Algorithm Based on kNN Graph” and provides both ANN search and approximate kNN graph construction.
Features
-
Approximate nearest neighbor search
- High-performance ANN search on large-scale vector datasets.
- Designed as a building block for custom vector search and retrieval infrastructure.
-
kNN graph construction
- Efficient construction of approximate k-nearest neighbor graphs.
- Can be used as a base structure for various graph-based search algorithms.
-
Flexible initialization structures
- Supports multiple hierarchical structures for search initialization, including:
- Randomized KD-trees.
- Random projection trees.
- Hierarchical clustering trees.
- Multi-table hashing (via the provided hashing samples).
- Supports multiple hierarchical structures for search initialization, including:
-
Algorithm framework
- Implements the EFANNA framework as described in the associated research paper.
- Separated modules under
algorithm,general, andsamplesdirectories for experimentation and extension.
-
Language and ecosystem
- C++ implementation (
efanna.hpp, Makefiles provided). - Example code and usage patterns under
samples/. - Additional MATLAB-related utilities in the
matlab/directory.
- C++ implementation (
-
Documentation and examples
docs/folder for algorithm and usage documentation (as provided in the repository).- Sample programs demonstrating index construction and query workflows.
-
Performance focus
- Designed specifically for speed on ANN search and kNN graph construction tasks.
- Benchmark references and figures for ANN search performance on standard datasets (e.g., SIFT) included in the repository.
Pricing
EFANNA is an open-source library hosted on GitHub. No pricing or paid plans are specified in the provided content.
License
- A
LICENSEfile is present in the repository. - Consult the repository’s
LICENSEfile for the exact license terms and conditions.
Loading more......
Information
Categories
Tags
Similar Products
6 result(s)jvector is a high-performance Java-based library and engine for vector search and approximate nearest neighbor indexing.
PilotANN is a memory-bounded GPU-accelerated framework for large-scale vector search, designed to improve performance and efficiency of approximate nearest neighbor (ANN) search workloads, making it relevant as a high-performance engine/component in vector database and vector search systems.
Product-Quantization is a GitHub repository implementing the inverted multi-index structure for product-quantization-based approximate nearest neighbor search, providing building blocks for scalable vector search engines.
Reconfigurable Inverted Index (Rii) is a research project and open-source library for approximate nearest neighbor and similarity search over high-dimensional vectors. It focuses on flexible, reconfigurable inverted index structures that support efficient vector search, making it directly relevant as a vector-search engine component for AI and multimedia retrieval applications.
NVIDIA CAGRA is a GPU-accelerated graph-based library for approximate nearest neighbor searches, optimized for high-performance vector search leveraging modern GPU parallelism. It is suitable for scenarios requiring rapid, large-scale vector retrieval.
DiskANN is a graph-based approximate nearest neighbor search (ANNS) system optimized for fast and accurate billion-point nearest neighbor search on a single node, leveraging SSD storage. It is highly relevant for large-scale vector database applications requiring efficient vector search at scale.