A library for efficient similarity search and clustering of dense vectors, scaling to billions of vectors on a single server.
Faiss is a library for efficient similarity search and clustering of dense vectors. It solves the problem of quickly finding similar vectors in large datasets, which is fundamental to applications like recommendation systems, image retrieval, and natural language processing. The library scales to billions of vectors and supports both CPU and GPU acceleration.
Machine learning engineers, data scientists, and researchers working with large-scale vector embeddings who need fast and scalable similarity search or clustering capabilities.
Developers choose Faiss for its performance—it offers some of the fastest known implementations for exact and approximate nearest neighbor search, especially on GPUs. Its flexibility in supporting various algorithms and trade-offs makes it suitable for a wide range of production and research scenarios.
A library for efficient similarity search and clustering of dense vectors.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Handles billions of vectors in main memory using compressed representations, enabling search on datasets that may not fit in RAM, as noted in the README.
Supports multiple search methods like HNSW and NSG, allowing exact or approximate trade-offs between speed, accuracy, and memory usage for diverse needs.
Provides fast GPU implementations for nearest neighbor search and k-means, with automatic memory copying between CPU and GPU, making it a drop-in replacement for CPU indexes.
Includes code for evaluation, parameter tuning, and benchmarking, helping developers optimize performance and quality based on specific datasets.
Requires BLAS libraries and optional CUDA/ROCm setup with cmake compilation, which can be more challenging than installing pure Python packages, as detailed in INSTALL.md.
Designed solely for dense vectors; does not natively handle sparse vectors or other data types, forcing preprocessing for non-standard formats.
Indexes are in-memory, so saving and loading require manual serialization, lacking built-in database features like automatic backup or distributed storage.
With numerous index types and configurations, selecting and optimizing algorithms can be complex and time-consuming, especially for newcomers without deep expertise.