Releases: facebookresearch/faiss
Releases · facebookresearch/faiss
V1.8.0
Added
- Added a new conda package faiss-gpu-raft alongside faiss-cpu and faiss-gpu
- Integrated IVF-Flat and IVF-PQ implementations in faiss-gpu-raft from RAFT by Nvidia [thanks @cjnolet and @tarang-jain]
- Added a context parameter to InvertedLists and InvertedListsIterator
- Added Faiss on Rocksdb demo to showing how inverted lists can be persisted in a key-value store
- Introduced Offline IVF framework powered by Faiss big batch search
- Added SIMD NEON Optimization for QT_FP16 in Scalar Quantizer. [thanks @naveentatikonda]
- Generalized ResultHandler and supported range search for HNSW and FastScan
- Introduced avx512 optimization mode and FAISS_OPT_LEVEL env variable [thanks @alexanderguzhva]
- Added search parameters for IndexRefine::search() and IndexRefineFlat::search()
- Supported large two-level clustering
- Added support for Python 3.11 and 3.12
- Added support for CUDA 12
Changed
- Used the benchmark to find Pareto optimal indices. Intentionally limited to IVF(Flat|HNSW),PQ|SQ indices
- Splitted off RQ encoding steps to another file
- Supported better NaN handling
- HNSW speedup + Distance 4 points [thanks @alexanderguzhva]
Fixed
- Fixed DeviceVector reallocations in Faiss GPU
- Used efSearch from params if provided in HNSW search
- Fixed warp synchronous behavior in Faiss GPU CUDA 12
Full Changelog: v1.7.4...v1.8.0
v1.7.4
Added
- Added big batch IVF search for conducting efficient search with big batches of queries
- Checkpointing in big batch search support
- Precomputed centroids support
- Support for iterable inverted lists for eg. key value stores
- 64-bit indexing arithmetic support in FAISS GPU
- IndexIVFShards now handle IVF indexes with a common quantizer
- Jaccard distance support
- CodePacker for non-contiguous code layouts
- Approximate evaluation of top-k distances for ResidualQuantizer and IndexBinaryFlat
- Added support for 12-bit PQ / IVFPQ fine quantizer decoders for standalone vector codecs (faiss/cppcontrib)
- Conda packages for osx-arm64 (Apple M1) and linux-aarch64 (ARM64) architectures
- Support for Python 3.10
Removed
- CUDA 10 is no longer supported in precompiled packages
- Removed Python 3.7 support for precompiled packages
- Removed constraint for using fine quantizer with no greater than 8 bits for IVFPQ, for example, now it is possible to use IVF256,PQ10x12 for a CPU index
Changed
- Various performance optimizations for PQ / IVFPQ for AVX2 and ARM for training (fused distance+nearest kernel), search (faster kernels for distance_to_code() and scan_list_*()) and vector encoding
- A magnitude faster CPU code for LSQ/PLSQ training and vector encoding (reworked code)
- Performance improvements for Hamming Code computations for AVX2 and ARM (reworked code)
- Improved auto-vectorization support for IP and L2 distance computations (better handling of pragmas)
- Improved ResidualQuantizer vector encoding (pooling memory allocations, avoid r/w to a temporary buffer)
Fixed
- HSNW bug fixed which improves the recall rate! Special thanks to zh Wang @hhy3 for this.
- Faiss GPU IVF large query batch fix
- Faiss + Torch fixes, re-enable k = 2048
- Fix the number of distance computations to match max_codes parameter
- Fix decoding of large fast_scan blocks
v1.7.3
Added
- Sparse k-means routines and moved the generic kmeans to contrib
- FlatDistanceComputer for all FlatCodes indexes
- Support for fast accumulation of 4-bit LSQ and RQ
- Product additive quantization support
- Support per-query search parameters for many indexes + filtering by ids
- write_VectorTransform and read_vectorTransform were added to the public API (by @AbdelrahmanElmeniawy)
- Support for IDMap2 in index_factory by adding "IDMap2" to prefix or suffix of the input String (by @AbdelrahmanElmeniawy)
- Support for merging all IndexFlatCodes descendants (by @AbdelrahmanElmeniawy)
- Remove and merge features for IndexFastScan (by @AbdelrahmanElmeniawy)
- Performance improvements: 1) specialized the AVX2 pieces of code speeding up certain hotspots, 2) specialized kernels for vector codecs (this can be found in faiss/cppcontrib)
Fixed
- Fixed memory leak in OnDiskInvertedLists::do_mmap when the file is not closed (by @AbdelrahmanElmeniawy)
- LSH correctly throws error for metric types other than METRIC_L2 (by @AbdelrahmanElmeniawy)
Faiss 1.7.2
ADDED
- Support LSQ on GPU (by @KinglittleQ)
- Support for exact 1D kmeans (by @KinglittleQ)
- LUT-based search for additive quantizers
- Autogenerated Python docstrings from Doxygen comments
CHANGED
- Cleanup of index_factory parsing
Faiss 1.7.1
Prepare for release v1.7.1. (#1915) Summary: Pull Request resolved: https://github.com/facebookresearch/faiss/pull/1915 Reviewed By: mdouze Differential Revision: D28749880 Pulled By: beauby fbshipit-source-id: 4dcb0a5eac8f84d26570a0fb6f3e357bc2f1151c
Faiss 1.7.0
Bump version to 1.7.0. (#1652) Summary: Pull Request resolved: https://github.com/facebookresearch/faiss/pull/1652 Reviewed By: mdouze Differential Revision: D26077948 Pulled By: beauby fbshipit-source-id: 599ee61edd2425250948577cb55d145d9179ab25
Faiss 1.6.5
Fix version string in conda builds. Summary: Currently, conda version strings are built from the latest git tag, which starts with the letter `v`. This confuses conda, which orders v1.6.5 before 1.6.3. Reviewed By: LowikC Differential Revision: D25151276 fbshipit-source-id: 7abfb547fee3468b26fedb6637a15e725755daf3
Faiss 1.6.4
Features
- Arbitrary dimensions per sub-quantizer now allowed for
GpuIndexIVFPQ
. - Brute-force kNN on GPU (
bfKnn
) now acceptsint32
indices. - Faiss CPU now supports Windows. Conda packages are available from the nightly channel.
Faiss 1.6.3
Sync 20200323. (#1157) * Sync 20200323. * Bump version. * Remove warning filter.
Faiss 1.5.3
Bugfixes:
- slow scanning of inverted lists (#836).
Features:
- add basic support for 6 new metrics in CPU
IndexFlat
andIndexHNSW
(#848); - add support for
IndexIDMap
/IndexIDMap2
with binary indexes (#780).
Misc:
- throw python exception for OOM (#758);
- make
DistanceComputer
available for all random access indexes; - gradually moving from
long
toint64_t
for portability.