diff --git a/CHANGELOG.md b/CHANGELOG.md index 993de16bb0..6499fb105b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,284 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +## [1.14.2] - 2026-05-21 + +Added +- b7618fadc7fdf9b677277fbe96864c1902a6d8dc Add SuperKMeans: faster k-means via ADSampling+PDX progressive pruning (#5168) +- 66c9d082651659fb6e78d67c547b035d3c2c8228 Add SuperKMeans foundations: math primitives, PDX layout, SIMD kernels +- dc7afcfdf0d4bf7cc694f4974db77e471422d4cb Support SVSVamana as IVF coarse quantizer via index_factory (#5175) +- 7a8e4ddaca3d25363a79942e9fcd26de78436607 CI: cross-compile for riscv64 with RVV dynamic dispatch (#5184) +- 03202795b6451f2c6942262c998de3b980e96157 Introduce RVV (#5156) +- 417c53e0ce23e8c3f2843bc727c9493e35b1d5d0 Add NoneSIMDLevel context manager for cross-level reference checks (#5158) +- 46def46902231ed57552ddbcfd751e17720c6d32 Enable SVS IVF Index in FAISS (#4801) +- 585ba7954afb4da180a897bf195acd7516a44632 Add pip install support via scikit-build-core + cibuildwheel (#4862) +- 799bf3aaeca910113fd2f1b0287568f07eb002fa Introduce early stop facilities for IVF, attempt 2 (#5160) +- 66cea524339ee7cd1b3954e3b5a677edb2adad74 Add Metal GPU backend for Apple Silicon (IndexFlat) (#5144) +- 17fd3332c77c2801da4b467de67b5cadf045b328 Add database-parallel flat search for few-query workloads (#5000) +- c7f07bbc0ad0e9c0b68c6c7a3696850f42500906 Add C++ per-SIMD-level tests for distance utility functions (#5154) +- 0242758a3d073be0f5b0117b524a1fbdfcf02860 Add bit-exact RQ encode cross-level test (#5155) +- 2f68a3730777f88da34d562bc90f637bb39c1cb3 Add per-SIMD-level tests for hamming.h utils + fix crosshamming bug (#5153) +- a7116ed4ec2ab4f0889d305592f579d5b2fb5745 Add TurboQuant (CPU) (#5049) +- 11e5d3916054b23bf60253763abf5e9033fca39e Add optional persistent locks to IndexHNSW for incremental adds (#5031) +- e82aa28b838d1cad66044c3888b75eb832a39fb4 Add OMP exception capture helpers and migrate IndexIVF (#5111) +- 6299bff1f60e5423fa8cfe8e8d3926f8d87bdafb Add QT_0bit to ScalarQuantizer for centroid-only IVF distance (#5079) +- 3030fe0635b743ccfddf3684752438269a5ab0c5 Add filtered search for cuVS indexes (#4858) +- f83ea51eaa60987315fcd2deca153924abd7995d Support IVFRaBitQSearchParameters in RaBitQFastScan scanner (#5081) +- 82a823513d8a7a7e497de11e7da0cba2aae7721d Add iterator callbacks for distance computation and heap admission (#5082) +- b068fd985a7460c04ec6c4f909900409392520d0 Support IO_FLAG_MMAP_IFC on Darwin (#5058) +- 113bf6ceac4e9d1bfeaf29279b29a8293759f83b Expose fast_scan_code_size from non-IVF FastScan indices (#5077) +- 786d993dbfb8b74b2a0d4d9543b2b08310acabbe Expose a fast scan code size from fast scan indices (#5064) +- 95f1e45221ede8caf1b0139a3c8864d473e0e47d OMP build diagnostics (#4842) +- c4ac852e5b5aa2ba4bde8a977633c367aa85d5db Add a balanced assignment function (#5050) +- 8402a6b764c024ca78fb87d768cb81de3f60c925 Add unit tests for HNSW deserialization validation (#5033) +- 1dc5e1fb60405eda268a7d55b1d5a14feef962ba V2 enable specifying a subset of SIMD levels that are implemented at dispatching time. (#4959) +- e6f5c0c9a9f70f63c00d3ac5651edce6aebd734d Add SIMD dynamic dispatch migration guide (#4973) +- 8177a3bca62af1042d955277cafe9db73d5a0c1d Add nvidia-smi diagnostic call (#4960) +- 67fc664fe0ac1774bd4dcf2ab1aaa488cc7d0545 Add CappedInvertedLists for per-list size limiting (#4880) +- e57a8939c91244009c7ef5745d59f33139dc46d2 introduce `SingleQueryResultCollectHandler` (#4926) +- 748c0311e423844f25d46a95d27d1621c520a4c7 HNSW: add prune_headroom to avoid O(n^2) pruning/locking, headroom test (#4847) +- 1e4d2271a6b27c70c4d824cc47067d36998d9daf Introduce an early stop threshold for Kmeans (#4894) +- 4a0fba1fe2c5e5c8fb3405e614ef9b11524b1064 Add FastScanCodeScanner dispatch boundary with per-SIMD TUs (#4897) +- 0fcba2284c266f12ead208ef61559c81e2d7ac72 Add sentinels to index format enums. (#4907) +- 40480fb303fe06a7126e78c71965041911b687c5 Support limits on index deserialization loops — useful for tests (#4902) +- 1e4544a37e62f89bce0baf3253d214d37fba5192 Add defaulted SIMDLevel template parameter to handler and scaler types (#4867) +- abdd37bd964b87be5283334ca49ff603a8e46f4c Add Pixi installation option to docs (#5214) + +Changed +- 9d5491a117b1628dd911d942353156db63553fcf Templatize SIMDResultHandler on SL, mark handle() final (#5223) +- b63f236a5252580e1f24158ca7bc6f58517983f2 Upgrade GitHub Actions CI from CUDA 12.6 to CUDA 13.2 (#5207) +- a9f5baa58c3bacf208d9f02362ea9db47ffb9f21 Move RISC-V fast_scan forwarders to dedicated impl-riscv.cpp (#5216) +- 8932716646db11b5f03f1d6e64d2b96ad6cd202b Validate SVS storage_kind via shared helper at all deserialization read sites (#5204) +- bc490b56b0896a56d8fc68df42b00798ab5d7eee Make IVFPQSearchCagraConfig dtype fields settable from Python (#5191) +- ffd3727d4815a819b3c229adc1ec4fb0e584156c Update pattern for index factory string with SVSVamana (#5201) +- f37041d0732bed52e186263466e0cc02fd2b6fe2 Extract Metal shaders to standalone .metal file with kernel wrapper class (#5167) +- d98364eb490f0f53b9bece0046b2933f1ec7e646 perf: reserve() to avoid rehashing/reallocation (#5193) +- 4eee3d7859d4872dc30172092e3ff2a7b919df99 Add tolerance and assertion log to test_OIVFPQ (#5188) +- 2322afd2d8489bcaae4cb50d105786121335b1a7 faiss: parallelize post-BLAS reduction loop and end_multiple() in result handlers (#5185) +- 967eda65dec2515ccd18c5abe464b485f8a883d0 Replace FAISS_ASSERT with FAISS_THROW_FMT for unsupported SVSStorageKind (#5182) +- 715725df362a04d7f1424942583c309ee79c14c6 Enable verbose mode for TestPyPI publish step (#5181) +- 5e123115f109ae17062c0a5b120a21e7723bbc43 Filter wheel artifacts before publishing to PyPI (#5179) +- 28b2b66cf279ff2bdb7b8a7fd387c7ea328cb642 Inline PQ code distance kernels into scanner TUs (#5159) +- c41405d5253cfd45673728f5544acad07de1eb32 Enforce minimum training set size for ScalarQuantizer, check nullptr (#5141) +- 44c1972aec4e5d19720263c64dcc5592b06edbdc Enable ccache in GitHub Actions cmake builds (#5157) +- e09de2d070ea13ad4fdc65b5c1df97d5455732de Harden compute_query_factors: add preconditions, handle aliasing, remove dead checks +- 6a9936c60de22ef41138e8b6a8f19df5f180c4ea Hoist per-iteration vector allocations in IndexIVFRaBitQFastScan::compute_LUT +- c3460c980be78afac11f6dc1f88b170fd7e70693 Convert binary index Hamming callers to dynamic dispatch (#5071) +- ecac6511a271e5441d942054c619dbd34d71e83f Convert hamming.cpp public API to dynamic dispatch (#5070) +- 8d1b964c11a943f72c6d6f8d7e4e250fd15b5697 Enable dynamic dispatch build on Windows (#5127) +- a25bcb1e22e06d4626941bcc0d7b1365bd8b428b Rely on cuVS for default values (#5140) +- 06228410c6a60c4ca127b00a16e4007d5f0d5353 Panorama Optimizations (#5041) +- f4338ade1bfae983ff03164f8ef53921b193f46c Parameterize existing tests with @for_all_simd_levels (#5134) +- 9d567497ecae53cebafa7c81dc4a75b7d1aff8cd Wire 512-bit QBS kernels into fast scan DD dispatch (#5075) +- bdf877f90c955581d74d559a5b85719cee78ba0f facebook-unused-include-check in IndexNNDescent.cpp (#5132) +- 632427fd0d9d11990f9520d09794203151308253 fbcode/faiss/invlists (#5048) +- e23c66175d7d5469aee00c9939ccb1ecf7bb4ac5 Replace dispatch_HammingComputer with with_HammingComputer (#5126) +- ed7e1f2435b6c7d76d049473758ef50001547812 Hoist SIMD dispatch outside loops in 4 call sites (#5074) +- 582246b6bd7ad71bf60d6ddf5b4b1066de24ffd3 Remove use of __AMDGCN_WAVEFRONT_SIZE macro with it being deprecated in ROCm 7 (#4619) +- 2dff119f138167b915d03fa8df23068802f38e51 Add braces around single-line control flow statements +- cc0c08754851a6d95870f259c91271fd4560416d Hoist SIMD dispatch out of approx_topk hot loops (#5073) +- 18f93fd82f1de86245b4566c53553316671112e5 Replace SSE3 intrinsics in Index2Layer with portable scalar code (#5076) +- 42765abc0061a00e0afc5f32e53c5d798a3ded61 Optimize RaBitQ FastScan LUT construction for high-dimensional data (#5110) +- ec5e70c6555c2f95f131d33c731f72f13065d3af Optimize multibit sign-bit unpacking in RaBitQ FastScan handlers (#5097) +- 3f127ee3bad4922b1ba0cf2f17f1368d99a241ec Thread qb/centered search params through FastScan LUT and handler (#5095) +- 3c19c52ca0380bbbd032ba15cd9ff8143e4b7b8e Use std:: qualified math functions to avoid float-to-double promotion (#5088) +- 48d2b0c946de235f6f5cc2a6fb072f90544a2aee Replace typedef with using declarations (#5086) +- e12debcb6123eee4dd49eafd143ac20952ad75b1 Remove extra semicolons after inline member function definitions (#5085) +- 5679d3ad42533e6f367fdd746b60e3b16fd692c7 HNSW Cagra base-level entrypoint sampling parallel (#5068) +- c4efc422192b6e43a7f5b2014f5cdd53e8bd8e84 Remove bare simdlib type aliases from simdlib_dispatch.h (#5069) +- 4a63c9e415078a79a7e95d52eb8c974d3ddefdaa Convert partitioning to dynamic dispatch (#5062) +- f226be432c261df5f24c163434e3b45d3abf4193 Roll out @for_all_simd_levels to key test files (#5061) +- afd69493777f8a95c3b2c810f35a24aef8105c8c fbcode/faiss/impl/HNSW.cpp (#5059) +- 658c4340c0a6ff548c291d26d7182e09e703344a Replace bare assert() with FAISS_THROW_IF_NOT in core index files (#5052) +- 364749e88624ae2c93c099e1a798c48a47c1ab2d Re-enable ROCm runner for AMD GPU CI (#4854) +- faeac8636c4c6c15c47fa60fc7f2c18db775b3b7 Update outdated C++17 and Python 2 references (#5045) +- 77e602870bd860043db843ccbf458c2ef1c534b2 Use HTTPS for GitHub links in README (#5043) +- 91843bdbd3eaf1b4e409b1d61763cb2e35170a12 Use explicit ISA flags instead of -march/-mtune=sapphirerapids (#5034) +- acac823db4cfff3fdd4e6a033543e0649a9f9f27 Merge .gitignore updates from faiss-gpu-cu132 into main (#4996) +- 8d8881ee3f6a5a9f8de827742ca38f9db89b78ec Make distance_compute_blas_threshold dimension-aware (#5022) +- 553c78b25685d0aa38a2844ab35fdd9ed6801e57 HNSW SIMD dispatch (#5015) +- 499b4885b8aaf439013a820b6f0f14e57ad4ff1a close the loop on ivf rabitq fast scan filter integration (#5026) +- aef066ac0ebc914a7de2d6ab1770df15a1b10c69 SVS 0.3.0 (#4999) +- cc34603106c16d30edbdd9cb1fcd35ce8f2fbc5a reuse unpack buffer in multibit IVFRaBitQFastScan refinement (#5003) +- d81584d548191ff002c304f5d5c8e3f519e6e4e2 Update Python type stubs: fix class hierarchy and add missing base classes (#5004) +- d1c432fb5fd7d1bf96a73299e95fa6476b2825e3 Convert rabitq_simd.h to runtime SIMD dispatch (#4912) +- 6bca9613b7822ee7392957bf19cc53c237133bd4 Convert distances_fused/ to runtime SIMD dispatch (#4911) +- 04d0d56d0e24ad8da8283a210f8f0527ae2ac91c facebook-unused-include-check in distances_simd.cpp (#5013) +- 7eb05f01fab7bce7750f84f4ce63fb17354cdd43 facebook-unused-include-check in partition.cpp (#5012) +- 7e04fa26212bbfba8749f837fc5e6be1360613b4 Update Python type stubs (__init__.pyi) to match current API (#4998) +- db0e798d5a93a97589d7705ae44f0f7b222bea90 Use omp_get_max_threads() for OpenMP thread count (#4991) +- 9af8384f14edb7c47c8ac6869c6dd45884f72369 Bump openblas from 0.3.30 to 0.3.32 in conda recipes (#4994) +- c048917dcd686fcdc7dd386c6d2b345767085bac Enable quieting FAISS warning "inverted lists not stored" (#4964) +- b2ddb465bf8fe6a3cf470a67d3f8d70df8cc86c9 Loosen SVS findpackage version requirement (#4969) +- d8c3d26130552d70b32c7d61acb9a315f66b045a Upgrade to C++20 for CUVS (#4881) +- 94f2b51fdbf9d72956e84131a12dc6d911e7c362 Rename train() with queries to train_with_queries (#4955) +- 02d609caff186bbbf04a2b541ffa1fd7a7a967fc Upgrade cuVS Version to 26.02 (#4945) +- 55a47c927cd93f22c2b60953bc9e1138e31f1ec4 Upgrade cuVS Version to 26.02, switch various BUCK files over to 26.02 (#4788) +- 0d147a78bc60574d6ae03d09e9e04c9b32d5b6c5 Make READVECTOR byte limit configurable (#4928) +- 9962fbec6ee8cd0ea1d8a05c9e8d435652d6a096 HNSW: narrow critical section during add to avoid lock contention (#4915) +- b1feeb79f88ea11e2c7cbebb2a9fed7e9aa67bc2 Convert approx_topk and residual_quantizer_encode_steps to SIMDLevel dynamic dispatch (#4923) +- 58a57e6bca746821b8a018a35bd6d7057565de03 Re-enable backwards compatibility tests for rabitq now that 1.14.1 released (#4924) +- 5dcef1858d960b22226a47d1b9ee326033e73b63 Refactor binary HNSW stats to use OpenMP reduction instead of destructor sync (#4910) +- d8c1a9785f21c84e7517226f6d7f84bfbfd26a36 move distances implementation into SIMD specific compile units (#4906) +- ea11f0ef9c04d346a65e9096e13d6d5cb6ba8aab Switch all search paths to FastScanCodeScanner and remove make_knn_handler (#4904) +- 57190f91cddffc8ac168dd5ac88044976d4be864 Wire RaBitQ search through FastScanCodeScanner dispatch (#4903) +- 79e8acb07228e2b706ce784358a9bfc42672761f Parallelize compute_residuals in IndexIVFPQ (#4654) +- eddea2a6078c362f19deb39fd16ccff875121a9e Extract RaBitQ result handler to impl/fast_scan/ (#4895) +- 734751a16f6babc42a850b1c78b7cdb09bc9ddbb Extract PQ4 kernels to includable headers in impl/pq_4bit/ (#4868) +- bb298a2323c1df5fd4ee4cdf8ddae23d6614e45c convert simdlib in distances_simd.cpp (#4884) +- 8d8268c8aeea11cb0f25f37789882d4800ac89f1 Templatize simdlib types on SIMDLevel (#4866) +- c74809a7c6f0830d1b6090494979533252465269 Improve exception safety for the 'own_fields'/allocation pattern (#4864) +- c6cf004ecefebfc71822b72be617ef96839ae004 use `level` but not `0` in neighbor_range(i, level, &begin, &end) (line 198) (#5005) + +Fixed +- cb69d7c5665241d1e84f476105ffb6fd6c7c192c Fix Dq=None crash and np.empty nondeterminism in search_preassigned wrappers (#5221) +- 5c92c5c1ee744545a77f6be9f14d4fdccaad7869 Fix flaky test_hnsw smoke test by increasing efSearch (#5222) +- 8d3cc92536e340e210f05c8265b8523e1efd1168 Fix clone_index null return for IndexRowwiseMinMax (#5220) +- ff1d54397780abc22dd90e958bef11c77ea88a1b Fix python_unnecessary_generator_set_comprehension issues in faiss/tests/test_fastscan_filter.py (#5215) +- e2359156e08c96bdc9a6ddb2ed28e97963f8f3c4 Fix FastScan DD regression by threading SIMD level through kernel functions (#5210) +- 172324aea695fca9f5d59c7a6a7098f28e314e52 Fix IDSelectorBitmap conversion to cuVS bitset (#5211) +- 6bd749e39bd17d45acfdb6f92d5027fc64ffeced Fix IDSelector leak via SearchParameters.sel setter (#5208) +- 6376bc35e3db976d55a8fcec039dd1ffb444aca9 Fix CI: (cuVS) conda shards cache lock, (ARM) bump openblas, (SVS) fix LeanVec double-destruction (#5209) +- 4b5a73577ee90c8466139f5448ef2b5db033808b Fix python_unnecessary_generator_set_comprehension issues in faiss/.../bench_fw/optimize.py (#5205) +- 6789bf5eb7ff1ffac95ca24b4473af8ba8024ac5 Validate IndexIDMap id_map and inner-index ntotal consistency to prevent search-time null deref (#5203) +- f7508155124af8de6ca427b9842feb770d0075f2 Pin MKL to <2026 to avoid soname mismatch with pytorch (#5192) +- bb2ce7137d32901898b81fb519abee00c2ce841e Fix 7 broken tests (#5197) +- f323c0fa11a3e17b4417d81fb75159304b5a550f Fix backward compat test (#5195) +- 23cd94cd51062f014cb48a1b1a00884311ad786e Reduce BinaryCagra test parameters to prevent CI timeouts (#5194) +- 85fc627c1e7559557e1d0c427eb506e124944524 Validate ProductQuantizer M*ksub during deserialization to prevent oversized allocations (#5187) +- 6cef1bb08c47ff7fc772e8d70a931b014eab771c Fix cuVS and ROCm CI conda environment failures (#5180) +- 4a471eebf9e41059ad4f677172bdda6a0af504a2 Pin conda <25.7 to fix Windows build (#5176) +- a9c0d4187b508565599677e4421143a676d3625c Work around GCC 12 miscompilation of AVX2 histogram (#5124) +- 40a8cc003460855a810b2063191eaac0382bb85e Fix lints associated with early stop facilities for IVF (#5172) +- 1e69d5ab20223212e23df9630a5240b60d075f04 Fix peak-memory spike when loading IVF invlists via IO_FLAG_MMAP_IFC (#5122) +- 9942229393c6a161cff4061634805d2e5c24adf6 Fix add_sa_codes silently accepting non-int64 ids, corrupting stored labels (#5171) +- c5ddbc710427d6b323f0ee0bdfa406f77c42d63e c_api: fix IndexShards own_indices getter/setter name mismatch (#5165) +- 8380e2543db6ae43feba7fd210207bd916eca953 Fix avx512 unit test (#5161) +- 71448c07d309a5058703a81e1dda6059c4a9f947 Fix issue with svs tests (#5162) +- 6c70444d0843d6de7e1e8376c0cc4526cae1025a Validate code_size during deserialization to prevent oversized allocations (#5151) +- 9dbb81ca9d674b031090c4ac31cf001a65fdd78f Set own_fields after reading Index2Layer sub-quantizer during deserialization (#5147) +- 01b22b4cc94fe4121de30f04b54a1f451a1e6188 Fix memory leak warning for unordered_multimap in IndexIVFFlatDedup Python binding (#1667) (#5145) +- 130fc2481a0fa768848387cd3f724395157cebe1 Fix flaky test (#5150) +- dfce6e948e153b783d8bd0785c1c30432e84a166 Fix OMP exception safety in IndexHNSW search (#5133) +- c6273349f948dc2df83be83c8f49c12ca63842e8 Fix sa_decode offset bug and integer overflow in IndexRefine (#5143) +- 1b4b995b97c97e503c051e7b3087b2937aed5633 Fix implicit integer precision loss from 64-bit to 32-bit (#5091) +- b0568942efcb980f91fb286e1fdebfa0925f1150 Fix miscellaneous lint warnings (#5093) +- ed11f283d63915c014d1e176033a1bd0f1fd72ff Fix broken fbcode//faiss/tests:test_contrib - test_checkpoint (test_contrib.TestBigBatchSearch) (#5139) +- 277c53d299ac7e059d2791d2cb15956819287586 Fix PCA training bug and memory safety issues in VectorTransform.cpp (#5138) +- 83125407637fa69358de00ffcf7681947109d92a Fix integer type truncation in IDSelectorBatch bloom filter mask (#5136) +- 9cbc8da28efb865d9f8fed2f20ccf80ca2db0d20 Fix integer overflow and unbounded loop in Clustering.cpp (#5130) +- 3c4056d822129f2e211d9aa8fc1ee1436fed82a9 Fix race condition in HNSW::add_with_locks (#5129) +- 6e64c5d6873e9ba7a66918fe6f743997178b665b Bump GCC pin in faiss-gpu conda recipe to fix AVX2 SIMD miscompilation (#5125) +- 58f6ebb7fa84a995a3c11c7b4e8d3a9a0adaa489 Add per-read byte limit to SVS ReaderStreambuf to prevent OOM from corrupt index data (#5118) +- 817ecf9cd444dbd7461d3a09a0035b16448d2c6f Validate inverted list entry sizes against deserialization byte limit (#5117) +- e6be16241a10e1143dff263150315c220cc2a100 Validate VectorTransform dimension consistency during deserialization (#5115) +- 6707eacfaffc012bdb2ac95eae37b4baceef11f0 Add is_trained check to IndexIVF search and range_search to prevent querying untrained indexes (#5114) +- 349df7035bd2ddfa30f148c2e6225e90be91cdfa Validate IndexHNSW2Level storage type during deserialization and search (#5113) +- edd6f3b54c38e3ca063368f5079d2662b33098a1 Reject null quantizer during IVF index deserialization (#5112) +- 27078c52809b8ad43fbc73b6857a0865fe9c59c0 Fix OMP exception safety in IndexNNDescent and IndexNSG search (#5106) +- 99db159afd3f5e85f55dd959ef4cdb62e15086ad Fix OMP exception safety in IndexFlatCodes search (#5105) +- 40ad64694d4096b606a72a72622647a9421e8789 Fix cuVS build (#5107) +- 57bf47410f58616d1a104523327d474cdc264fb1 Fix int/size_t signedness mismatches in HNSW add (#5116) +- f9f116d303e93abd5bf79bc89d4227505e086448 Validate k_factor during deserialization to prevent search-time OOM (#5104) +- 2d8232c981f4148719bedbe9d0dcc2cd98f5fa3a Set code_size on IVFRaBitQFastScanScanner (#5099) +- b923091c0d87c68d2ff5e7076c5c1b1cf6489aed fix: GPU CAGRA copyFrom host-memory lifetime dependency and add regression test (#4968) +- 796977a1abc1ebfc42ce27fda655593089bcc70e Fix IndexBinaryMultiHash::reset() not clearing hash maps and avoid unnecessary copies (#5100) +- b86066a9989ea7223826e06d25170b9e03c67b66 fix: cagra bug (#4963) +- 91f6636b2a4d08c13c06e99dd0a1cb0bc77ceaf9 Add value-initialization to uninitialized member variables (#5089) +- 61ed7dc917b2db31edef74e9f825f1d04efbe80e Fix orphaned OpenMP directives in IndexRowwiseMinMax training functions (#5096) +- 740d3a396575114156cb2cd5e36ba98669a9998d Fix FastScan for indices without own inverted lists + performance optimizations in RaBitQ handler (#5080) +- 7cc63422d701ee9178ae0f7c8afa8aa6b9533a83 Suppress unused static constexpr variable warnings (#5087) +- aa3ce376ced6741b170ceef26bebbbf1f139cbec Fix race condition, memory management, debug output, and hashtable lookup in sorting.cpp (#5078) +- 86d33710702b668c1413d3bafe7be6048718f138 Validate FastScan M2 consistency during deserialization (#5056) +- 67f066f7a02f76d3178baccf4c31b4839ff0fee8 Validate SVS storage_kind during deserialization (#5055) +- e899476ceb8e21d1739851e2d7d6c0c70cac43e5 Default-initialize SVSStorageKind in IndexSVSVamana (#5054) +- c1e48a2ce12a008cd741f4d340af8026807cd020 Add search-path bounds checking to IndexIVF::search1 (#5040) +- 97d257433a59d7150a52491439f80314f2474cfb Fix correctness bugs in NNDescent Nhood copy/move operations and gen_random bounds (#5072) +- 06ef481afa0910b07b33eee47d52c542e06a988a Fix uncaught exceptions in IndexIVF::range_search_preassigned OpenMP region (#5053) +- 255250985a74e81a9a81822959588339dfae0cd0 Fix bugs in NSG search_on_graph and sync_prune (#5063) +- 7047dc5346abcfcf0a71b58f29aa9c138093af68 Fix priority_queue constructor inheritance for Apple Clang on macOS (#5065) +- e0a1aec811bb78af64c140fe47720cf9a80431cc Assorted Dynamic Dispatch cleanup fixes (#5060) +- 25296bad4f726aacff414a1f467f8a5f6eb0e306 Fix type mismatch bug and remove dead code in IndexRowwiseMinMax::sa_decode_impl (#5051) +- 7b2705c2698354ca75732970ba2e3526dc8330c7 Debug manifold crash with NaN (#5025) +- 9d3f97e620a24543f5e4d6e921473de0d63f2cd9 Fix duplicate words and grammar typos across codebase (#5044) +- 84262f09d4d0bc83c7147ddb53a97b402c2e0539 Fix d_out check bug and add descriptive error messages to VectorTransform assertions (#5047) +- ef28c6beb081d265cb6bdace8a3e85606bfd8a56 Fix uncaught exceptions in IndexIVF::search_preassigned OpenMP region (#5037) +- 8008ca2a70d7806694be80e365ff4b242982b699 Fix deadly signal in to_svs_metric() for unsupported metrics (#5032) +- 4b8da6820ead7ddd07f7d54e55bb4eb8bb2b8417 Fix IndexSVSVamana null-deref in deserialize_impl (#5029) +- ab3da522a4da1cd370052e36106f9743428d06b7 Cap ZnSphereCodecRec decode cache size (#5028) +- d68050d269c0aeb1bf7fe0ef5f5f662dba006477 Add missing input validation to IndexFlat::range_search and compute_distance_subset (#5038) +- c6fa50a4510760be0075e9cd0383b2290dec5057 Validate IndexIDMap id_map size during deserialization (#5024) +- 408786bec9d016f2b9893373a2ad40b82868eeb4 Validate AdditiveQuantizer dimension consistency during deserialization (#5023) +- 0ce4dfb2069019f9390fbfbf50be3052443325d5 Fix AVX512_SPR build failure for 512-bit SIMD types (#5030) +- a308adae08ae7b589e2f11da1ec08fa0d46b93c1 Harden ScalarQuantizer deserialization validation (#5020) +- ab46dcbeaed4817617f214604bdffc40026b5922 Validate qbs at deserialization time in FastScan index formats (#5019) +- 668da4a38684b95083e1ce737483d3ca64279c24 Validate IndexBinaryHash b <= code_size*8 during deserialization (#5011) +- 87bc9b08722d3a5ec01a91f5b16236fc56caf3bc Validate IndexFastScan quantizer state during deserialization (#5009) +- 4c391564a60e9e4441d5aeb3744347d855530e79 Validate codebooks size at deserialization time in read_AdditiveQuantizer (#5008) +- 8c1f3f48d48147777a0a2adaf3ceb661e0c43a7d read-heap-buffer-overflow (size 32) in float faiss::fvec_norm_L2sqr<>() +- 226ccf3e84d4439070262ff72dadab7de1d0e5f7 Fix OSX arm64 nightly: bump libopenblas from 0.3.30 to 0.3.32 (#5006) +- aeb170c15a105d640118bd32c37e9de81c7432be large-malloc (15023964028 bytes) in __sanitizer::RunMallocHooks() (#5018) +- 8550f2304af244a4a3ccbd8edb0f2d00aea11320 Validate VectorTransform dimensions during deserialization (#5007) +- 833d4aaf7b719f30a022271bab7b0d0917edfbff out-of-memory in __gnu_cxx::new_allocator<>::allocate() (#5014) +- d716be39ed1092d6e5545809b944b1742283920e Fix avx512_result_handlers build on aarch64 (#4965) +- 18c85e17e1ed5605c814d284e2704bca612f0e70 Add deserialization vector limit enforcement for ResidualCoarseQuantizer (#4997) +- b74f3cd8d9ba57a0549e91154057b8554c0fdd21 Validate IndexBinaryMultiHash b and nhash*b bounds during deserialization (#4984) +- b9f49601d109ae4c88adfec1ff84b5f40c00a2f3 Add invlists null check to IndexBinaryIVF::search (#4980) +- ba1981ca4ce1c6139e80a6d00ad6c26e44443dec Add input validation to IndexBinaryHNSW search preconditions (#4979) +- d26c15d954a1d0f372a4da59ee30622d314a666d Validate binary index consistency during deserialization (#4978) +- 2c28ef5382a21ba623afe56e3fdade97ae93b50c Validate RaBitQ qb during deserialization (#4983) +- 5a4d62146c606796b24711003bf18d87402f2400 deadly-signal (vector::_M_default_append) in __clang_call_terminate (#4986) +- 0759009bd7ddf290170c930c70a722badd05aa7d Fix compiler warnings for pip wheel builds (macOS + Windows) (#4989) +- 8a80b3dd6e2bcd1f0c6bef98aa396ac6d5a53e0d signal in faiss::ArrayInvertedListsPanorama::ArrayInvertedListsPanorama() (#4987) +- 12675affbcf1976c77a75d16813135f92584debc out-of-memory in __gnu_cxx::new_allocator<>::allocate() (#4985) +- 0a8e516058cb76e5e026858dc3ded478aa815683 Fix HNSW Panorama Perf Bug (#4974) +- 6dbf2713db8673d8007514d6f1d6375c72d5c99f Validate VectorTransform data during deserialization (#4981) +- 3f7938924d611b38adfdb00b7da27f24531decb7 Fix MSVC link failure: remove __restrict from fvec_madd specializations (#4972) +- d47b281578d98c25e3187201e6f138ba91f50e97 deadly-signal (vector::_M_default_append) in __clang_call_terminate (#4982) +- f851c54cd9fb89bda2680bbdeb28298d10c8178e large-malloc (6241124352 bytes) in __sanitizer::RunMallocHooks() (#4977) +- bd5ed00c384d5513917c51e348694d899e01718f Validate inverted lists pointer in IndexIVF operations (#4951) +- 398857b1ff7248579ab8a63ee5d570d0bfcce71e Handle empty index in IndexHNSWCagra base_level_only search (#4950) +- d647b596e01e1df4b79d5c513410b33463619aa8 Validate graph index data during deserialization (#4949) +- e5114c2368073d00316a866baa33e6595df3c396 fix: resolve compiler warnings in binary and miscellaneous Index files (#4940) +- 44f57ba4c91d2e4933f99f2c102df3ef5a3994cf fix: resolve compiler warnings in top-level FAISS source files (#4943) +- b3a2914982f5affcc61f280bfe3860b97c686f1f fix: resolve compiler warnings in test files (#4944) +- 88efcb981a22fabd9a6dbe6cd583c51362864420 fix: resolve compiler warnings in core base classes and headers (#4933) +- 7acc420929c40abc44899417b6e49e2eb28bb06e fix: resolve compiler warnings in inverted lists and cppcontrib (#4939) +- 64a2122ef1c8142287f277ec9e00cd2f8132d80a fix: resolve compiler warnings in IO, result handlers, and misc impl (#4936) +- a05f13ff6a395ad6916b6772ef4baa0d8ba72d26 fix: resolve compiler warnings in PQ, PreTransform, and Refine Index files (#4941) +- 7645426ac338b61856210a9d8a5eee9d653d47e4 fix: resolve compiler warnings in IVF Index implementations (#4942) +- f5142bfc5d8a8deed0268336c95352bab71dd781 large-malloc (7046432072 bytes) in __sanitizer::RunMallocHooks() (#4967) +- 4db01e3431b88b7363c55406b0babd6e8812977f fix: resolve compiler warnings in graph-based index implementations (#4956) +- ccc3cd619a8e2bc6ee970e61b1f4f7417724aadc Validate code vector sizes during index deserialization (#4948) +- ec30fb387c79a99454805d07f47311e77fd90bfc Use BitstringReader in IndexBinaryHash to avoid OOB reads (#4961) +- fa8ddd99a323ac289a96fd37b38e8c40f34004ad Fix flaky test for Panaorama/regular IVFFlat equivalence (#4954) +- 1e6729d53e5080e8290d1b7993969c3267f4c393 Validate quantizer data sizes during index deserialization (#4947) +- 62a19690988c0765e95d6707bb563a2233a9d2aa fix: resolve compiler warnings in distance and hamming utilities (#4937) +- 645a742b51813f11b033f9ebda909f0e60771dd5 Re add cuvs to cmakelists.txt (#4953) +- 5287db053721511ffa15a563d22665ea4ad02ae4 fix: resolve compiler warnings in graph-based index implementations (#4934) +- a48e45af3a7405a502711a1c63aeef5ba9b35ad1 fix: resolve compiler warnings in quantizer implementations (#4935) +- 32ca42f873053080435e57e306c3db123b3ea901 fix: resolve compiler warnings in SIMD, sorting, and misc utilities (#4938) +- 52d9fc705391db885138e86df42dbaf97d7f0a55 Add overflow check in READVECTOR macro (#4946) +- 0f7e65e53de6dd4a0273a3791fa70075b9de77f4 Enforce memory limit in read_ProductQuantizer (#4930) +- 9ea026cc93f349eeca25b1246af1e97745df84f7 Validate codes vector size in BlockInvertedLists deserialization (#4920) +- a4385dfd079f3de6046f6d68d56322600efdbaad Validate n_per_block and block_size in BlockInvertedLists deserialization (#4919) +- cdb725466736f1667d2f2a9426594e639097a967 Validate id_map size matches ntotal in IndexBinaryIDMap deserialization (#4917) +- 05ca04e469a6458f9abe25073f034987cb9844e4 Validate per-entry ilsz in read_binary_multi_hash_map (#4916) +- b023178c5dfc8980dd7dee40ef228198b13ef65a Fix MSVC OpenMP build: use idx_t instead of size_t in parallel for loop (#4922) +- 5b83ec68569b82ece3ca182f45b6951c761f8aff Fix OpenMP critical section contention in IndexBinaryHNSW search (#4909) +- e96ba2d13cb827a19cc3c6fe4996e8f963a07d79 fix: decouple coarse quantizer from cuvs index reset (#4885) +- 9d6b2e7b186cdc889c91866aff2ca2b5907ffb4d Additional input validation for index deserialization (#4899) +- 796bdf94a8878ebef1725fcea40f9dab06d1c5e5 Additional binary index input validation (#4898) +- d0434be649f556fbbefb7317899805a48f077553 Fix cloning for IVFFlatPanorama (#4887) +- 3e4c103d77a7b2cd1759f359fe073385920571f5 Validate dynamic_casts during index load (#4883) +- 47e53b4468a87fe4c33609b0dfd1902328e3ea6f Fix backward compatibility to use latest version (#4855) + +Deprecated +- 812010fe19e1cac03e5f0bf529ddae9cb0ea4f1b Remove flaky test (#5169) +- 74dceee9038339bb57e232cfd655df3cdde3891c Remove RaBitQStats debug counters from all RaBitQ handlers (#5102) +- 000eec283a89342c411820de35bf9b118f39602c Delete old pq4_accumulate_loop files (replaced by dispatching.h) (#4905) + + ## [1.14.1] - 2026-03-04 Added @@ -922,7 +1200,8 @@ by conda install -c pytorch faiss-gpu cudatoolkit=10.0. - C bindings. - Extended tutorial to GPU indices. -[Unreleased]: https://github.com/facebookresearch/faiss/compare/v1.14.1...HEAD +[Unreleased]: https://github.com/facebookresearch/faiss/compare/v1.14.2...HEAD +[1.14.2]: https://github.com/facebookresearch/faiss/compare/v1.14.1...v1.14.2 [1.14.1]: https://github.com/facebookresearch/faiss/compare/v1.14.0...v1.14.1 [1.14.0]: https://github.com/facebookresearch/faiss/compare/v1.13.2...v1.14.0 [1.13.2]: https://github.com/facebookresearch/faiss/compare/v1.13.1...v1.13.2 diff --git a/CMakeLists.txt b/CMakeLists.txt index 0eed58166a..fb59328513 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,7 +51,7 @@ if(FAISS_ENABLE_CUVS) endif() project(faiss - VERSION 1.14.1 + VERSION 1.14.2 DESCRIPTION "A library for efficient similarity search and clustering of dense vectors." HOMEPAGE_URL "https://github.com/facebookresearch/faiss" LANGUAGES ${FAISS_LANGUAGES}) diff --git a/INSTALL.md b/INSTALL.md index 230c0c0aa2..4c3f7028fa 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -12,13 +12,13 @@ To install the latest stable release: ``` shell # CPU-only version -$ conda install -c pytorch -c conda-forge faiss-cpu=1.14.1 +$ conda install -c pytorch -c conda-forge faiss-cpu=1.14.2 # GPU(+CPU) version -$ conda install -c pytorch -c nvidia -c conda-forge faiss-gpu=1.14.1 +$ conda install -c pytorch -c nvidia -c conda-forge faiss-gpu=1.14.2 # GPU(+CPU) version with NVIDIA cuVS -$ conda install -c pytorch -c nvidia -c rapidsai -c conda-forge libnvjitlink faiss-gpu-cuvs=1.14.1 +$ conda install -c pytorch -c nvidia -c rapidsai -c conda-forge libnvjitlink faiss-gpu-cuvs=1.14.2 # GPU(+CPU) version using AMD ROCm not yet available ``` @@ -34,15 +34,15 @@ If you prefer [Pixi](https://pixi.sh/latest/), you can use the same channels and ``` shell # CPU-only version $ pixi init -c pytorch -c conda-forge -$ pixi add faiss-cpu=1.14.1 +$ pixi add faiss-cpu=1.14.2 # GPU(+CPU) version $ pixi init -c pytorch -c nvidia -c conda-forge -$ pixi add faiss-gpu=1.14.1 +$ pixi add faiss-gpu=1.14.2 # GPU(+CPU) version with NVIDIA cuVS $ pixi init -c pytorch -c nvidia -c rapidsai -c conda-forge -$ pixi add libnvjitlink faiss-gpu-cuvs=1.14.1 +$ pixi add libnvjitlink faiss-gpu-cuvs=1.14.2 ``` Pixi resolves packages from the listed Conda channels, so the same channel requirements described above still apply. @@ -54,7 +54,7 @@ Nightly pre-release packages can be installed as follows: $ conda install -c pytorch/label/nightly -c conda-forge faiss-cpu # GPU(+CPU) version -$ conda install -c pytorch/label/nightly -c nvidia -c conda-forge faiss-gpu=1.14.1 +$ conda install -c pytorch/label/nightly -c nvidia -c conda-forge faiss-gpu=1.14.2 # GPU(+CPU) version with NVIDIA cuVS (package built with CUDA 13.2) conda install -c pytorch -c rapidsai -c rapidsai-nightly -c conda-forge -c nvidia pytorch/label/nightly::faiss-gpu-cuvs 'cuda-version=13.2' diff --git a/faiss/Index.h b/faiss/Index.h index ff80750841..379a0bd013 100644 --- a/faiss/Index.h +++ b/faiss/Index.h @@ -17,7 +17,7 @@ #define FAISS_VERSION_MAJOR 1 #define FAISS_VERSION_MINOR 14 -#define FAISS_VERSION_PATCH 1 +#define FAISS_VERSION_PATCH 2 // Macro to combine the version components into a single string #ifndef FAISS_STRINGIFY diff --git a/faiss/python/setup.py b/faiss/python/setup.py index a3b61f671c..c563c64415 100644 --- a/faiss/python/setup.py +++ b/faiss/python/setup.py @@ -114,7 +114,7 @@ """ setup( name="faiss", - version="1.14.1", + version="1.14.2", description="A library for efficient similarity search and clustering of dense vectors", long_description=long_description, long_description_content_type="text/plain",