https://github.com/facebookresearch/faiss Skip to content Sign up * Why GitHub? + Features + Mobile + Actions + Codespaces + Packages + Security + Code review + Issues + Integrations + GitHub Sponsors + Customer stories * Team * Enterprise * Explore + Explore GitHub + Learn and contribute + Topics + Collections + Trending + Learning Lab + Open source guides + Connect with others + The ReadME Project + Events + Community forum + GitHub Education + GitHub Stars program * Marketplace * Pricing + Plans + Compare plans + Contact Sales + Education [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this organization All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} facebookresearch / faiss Public * Notifications * Star 15.4k * Fork 2.4k * A library for efficient similarity search and clustering of dense vectors. faiss.ai MIT License 15.4k stars 2.4k forks Star Notifications * Code * Issues 216 * Pull requests 9 * Discussions * Actions * Projects 4 * Wiki * Security * Insights More * Code * Issues * Pull requests * Discussions * Actions * Projects * Wiki * Security * Insights main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show Loading {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default Loading View all tags 13 branches 16 tags Code Loading Latest commit @mdouze @facebook-github-bot mdouze and facebook-github-bot Fix OPQ dimension parsing (#2147) ... d68ff42 Dec 11, 2021 Fix OPQ dimension parsing (#2147) Summary: Pull Request resolved: #2147 There was a bug in the OPQ string parsing. This diff adds a test and fixes the error. Reviewed By: aijanai Differential Revision: D33020167 fbshipit-source-id: 32e43653849b258a3b6d0cfdc44a6c637433f2c8 d68ff42 Git stats * 584 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .circleci Update CUDA driver on CircleCI. (#2146) Dec 10, 2021 .github Change default branch references from master to main. (#2029) Sep 1, 2021 benchs Support LSQ on GPU (#1978) Sep 9, 2021 c_api IndexFlatCodes: a single parent for all flat codecs (#2132) Dec 7, 2021 cmake Move from TravisCI to CircleCI (#1315) Aug 15, 2020 conda Fix packaging (#2121) Dec 7, 2021 contrib IndexFlatCodes: a single parent for all flat codecs (#2132) Dec 7, 2021 demos Add NNDescent to faiss (#1654) Feb 26, 2021 faiss Fix OPQ dimension parsing (#2147) Dec 11, 2021 misc Enable clang-format + autofix. Feb 25, 2021 tests Fix OPQ dimension parsing (#2147) Dec 11, 2021 tutorial Enable clang-format + autofix. Feb 25, 2021 .clang-format Re-factor factory string parsing (#2134) Dec 7, 2021 .dockerignore Add Dockerfile (#55) Mar 23, 2017 .gitignore Refactor makefiles and add configure script (#466) Jun 2, 2018 CHANGELOG.md Non-uniform quantization of vector norms (#2037) Oct 11, 2021 CMakeLists.txt Add separate targets for libfaiss/libfaiss_avx2. (#1772) Mar 26, 2021 CODE_OF_CONDUCT.md OSS Automated Fix: Addition of Code of Conduct Mar 22, 2019 CONTRIBUTING.md Change default branch references from master to main. (#2029) Sep 1, 2021 Dockerfile Configure install paths in Dockerfile. (#772) Apr 7, 2019 Doxyfile GitHub actions hooks for GitHub pages docs website. (#1599) Dec 29, 2020 INSTALL.md Change default branch references from master to main. (#2029) Sep 1, 2021 LICENSE Facebook sync (May 2019) + relicense (#838) May 28, 2019 README.md Add CHANGELOG.md. (#1688) Feb 16, 2021 View code [ ] Faiss News Introduction Building How Faiss works Full documentation of Faiss Authors Reference Join the Faiss community License README.md Faiss Faiss is a library for efficient similarity search and clustering of dense vectors. It contains algorithms that search in sets of vectors of any size, up to ones that possibly do not fit in RAM. It also contains supporting code for evaluation and parameter tuning. Faiss is written in C++ with complete wrappers for Python/numpy. Some of the most useful algorithms are implemented on the GPU. It is developed by Facebook AI Research. News See CHANGELOG.md for detailed information about latest features. Introduction Faiss contains several methods for similarity search. It assumes that the instances are represented as vectors and are identified by an integer, and that the vectors can be compared with L2 (Euclidean) distances or dot products. Vectors that are similar to a query vector are those that have the lowest L2 distance or the highest dot product with the query vector. It also supports cosine similarity, since this is a dot product on normalized vectors. Most of the methods, like those based on binary vectors and compact quantization codes, solely use a compressed representation of the vectors and do not require to keep the original vectors. This generally comes at the cost of a less precise search but these methods can scale to billions of vectors in main memory on a single server. The GPU implementation can accept input from either CPU or GPU memory. On a server with GPUs, the GPU indexes can be used a drop-in replacement for the CPU indexes (e.g., replace IndexFlatL2 with GpuIndexFlatL2) and copies to/from GPU memory are handled automatically. Results will be faster however if both input and output remain resident on the GPU. Both single and multi-GPU usage is supported. Building The library is mostly implemented in C++, with optional GPU support provided via CUDA, and an optional Python interface. The CPU version requires a BLAS library. It compiles with a Makefile and can be packaged in a docker image. See INSTALL.md for details. How Faiss works Faiss is built around an index type that stores a set of vectors, and provides a function to search in them with L2 and/or dot product vector comparison. Some index types are simple baselines, such as exact search. Most of the available indexing structures correspond to various trade-offs with respect to * search time * search quality * memory used per index vector * training time * need for external data for unsupervised training The optional GPU implementation provides what is likely (as of March 2017) the fastest exact and approximate (compressed-domain) nearest neighbor search implementation for high-dimensional vectors, fastest Lloyd's k-means, and fastest small k-selection algorithm known. The implementation is detailed here. Full documentation of Faiss The following are entry points for documentation: * the full documentation, including a tutorial, a FAQ and a troubleshooting section can be found on the wiki page * the doxygen documentation gives per-class information * to reproduce results from our research papers, Polysemous codes and Billion-scale similarity search with GPUs, refer to the benchmarks README. For Link and code: Fast indexing with graphs and compact regression codes, see the link_and_code README Authors The main authors of Faiss are: * Herve Jegou initiated the Faiss project and wrote its first implementation * Matthijs Douze implemented most of the CPU Faiss * Jeff Johnson implemented all of the GPU Faiss * Lucas Hosseini implemented the binary indexes Reference Reference to cite when you use Faiss in a research paper: @article{JDH17, title={Billion-scale similarity search with GPUs}, author={Johnson, Jeff and Douze, Matthijs and J{\'e}gou, Herv{\'e}}, journal={arXiv preprint arXiv:1702.08734}, year={2017} } Join the Faiss community For public discussion of Faiss or for questions, there is a Facebook group at https://www.facebook.com/groups/faissusers/ We monitor the issues page of the repository. You can report bugs, ask questions, etc. License Faiss is MIT-licensed. About A library for efficient similarity search and clustering of dense vectors. faiss.ai Resources Readme License MIT License Code of conduct Code of conduct Releases 12 Faiss 1.7.1 Latest May 28, 2021 + 11 releases Packages 0 No packages published Used by 504 * @shreyavivekbhosale * @faiazrahman * @milylal * @lmc8133 * @ChengIC * @agoodge * @gtangg12 * @RakshithChandrashekar + 496 Contributors 84 * @mdouze * @beauby * @facebook-github-bot * @wickedfoo * @KinglittleQ * @h-vetinari * @Enet4 * @ava57r * @vorj * @ailzhang * @glutamatt + 73 contributors Languages * C++ 54.1% * Cuda 22.5% * Python 19.2% * C 2.4% * CMake 1.0% * Shell 0.8% * (c) 2021 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.