[1.16.0] - 2026-11-09
Added
- fc1095a e-means: add benchmarks reproducing the paper (#5845)
- 2079677 e-means: add max_points_per_centroid (#5855)
- 8e5843c Add regression test for flat search in a nested OpenMP region (#5754)
- b80093c Add DINO resident and SSD streaming e-means demos (#5815)
- 97fdfb0 Add optional IVF assignment for centroid-sharded e-means (#5817)
- f6a82dc Add centroid-sharded e-means training (#5823)
- 0136502 Add native INT8 CuTe assignment to e-means (#5816)
- 15b14b2 Add FP8 CuTe assignment to e-means (#5820)
- 13a33bf Add CuTe assignment backend to e-means (#5818)
- 7a038e7 Add INT8 Triton assignment to e-means (#5821)
- 87b5339 Add FP8 Triton assignment to e-means (#5819)
- c8ab4f5 Add Triton assignment backend to e-means (#5822)
- f61f80a Add reduced-precision assignment to e-means (#5814)
- 8ac2fdc Add distributed E-means training (#5813)
- 3795ee6 Add reference e-means implementations (#5812)
- 951067d Print native crash diagnostics in Linux CMake CI (#5828)
- 7648f5f InvertedListScanner::distances_to_codes, with a block kernel for 8-bit PQ (#5807)
- a6505c5 Expose caller-owned Dataset APIs for CAGRA (#5739)
- 4caf504 Add MetalIndexBinaryFlat with GPU Hamming search and exact top-k selection (#5759)
- 71c7f48 Add remove_ids to IndexShards and IndexReplicas, and add_with_ids to IndexReplicas (#5773)
- 6964ecd Make the multi-GPU Python helpers work on the Metal backend (#5747)
- b156cce feat(rvv): add bit-exact RVV decode_vector for raw-codec quantizers (#5689)
- 8ff93a8 Serialization, clone and index_factory support for IndexPiPNN (#5758)
- 840aa1f Add HNSW level-0 links from a sample to remove search sinks (#5705)
- 89e5eb5 Add IndexPiPNN, a PiPNN graph index with beam search (#5734)
- 3effdb2 PiPNN build assembly (#5729)
- 07979b1 Randomized Ball Carving partition (#5714)
- 7069478 Numeric kernels
- 7a05795 HashPrune reservoir and sketch kernel (#5708)
- b0074a3 Add fp16 support to
SuperKMeans(#5692) - e7c44eb Add AVX-512 fp16 conversion kernels (#5694)
- ea29bac RaBitQ: add batch-four estimates and 9-bit SIMD scoring (#5647)
- 76c0e01 Add GPU-accelerated IVFPQ search to the Metal backend (#5449)
- 0db2f30 rabitq neon kernels (#5532)
- 430a41e Native fp16 k-means training for Faiss IVF (#5671)
- 6c8378e Add RVV implementation for decode_bf16_simd (#5641)
- e24a371 feat(rvv): add vector arithmetic kernels (#5655)
- 94a4331 Add reranked types to IndexSQFastScan and fix flat RaBitQ filtering (#5661)
- dcf8ebb Support IDSelector in flat fast-scan search (#5660)
- 1768a5a Add RVV SIMD specialization for product quantizer distance-table computation (#5543)
- f323c18 Add RVV encoding for QT_8bit_direct (#5640)
- 5e74b1b feat: implement RVV optimized scalar quantizer codecs and distance computation (#5535)
- b0d9e80 Add fast scan variants of SQ indexes - IndexSQFastScan and IndexIVFSQFastScan (#5341)
- 4864f4d SVS: Add ParameterSpace.set_index_parameter support for Vamana (#5644)
- 0f23e6a Add RVV SIMD specialization for scalar quantizer distance compute (#5539)
Changed
- f34c0b8 Move the macOS arm64 CI jobs from macos-14 to macos-15 (#5875)
- 741138a E-means: quality batch at d <= 16 and no revival at d <= 2 by default (#5854)
- 731286f e-means: faiss-style verbose output that reports epochs and asks for a citation (#5841)
- 277b3c7 e-means: rename niter to nepochs (#5848)
- a15797a Compute the coarse distances in search_preassigned when they are not given (#5748)
- b955264 Replace the e-means README with a user guide (#5842)
- e4500c2 Use BF16 defaults and share quantized rows across E-means sharding (#5844)
- 0a6f936 Emeans ssd speedups (#5839)
- 9246aa7 Rename e-means operating_point to batch_law, allow batch_size without alpha0, and default niter to 5 (#5833)
- 22a0cb7 Separate Emeans implementations (#5840)
- 1d40eeb Speed up the x86 8-bit scalar quantizer inner-product distance (#5829)
- efd79c9 Upgrade CPU CMake CI to PyTorch 2.15 (#5827)
- 0b0250d SQ fp16 and bf16: four accumulators per code at d >= 384, any d at AVX-512 (#5806)
- a3217cb Give each SIMD level its own copy of the 65 shared functions (#5810)
- 2a6e785 Define the AVX-512 SQ specializations once for AVX512 and AVX512_SPR (#5808)
- c2d27c6 Search only the sample vectors at sinks after each round of HNSW level-0 links (#5804)
- 9d5b442 Codify the Faiss SIMD guard rules and check them with a test (#5793)
- 0d3c380 Move SIMD code to dedicated translation units and align guards (#5792)
- 03aa1bd Give fvec_L2sqr_ny_y_transposed_D internal linkage in the AVX2 and AVX512 files (#5788)
- 167f443 Prefetch graph rows and vectors in PiPNN search (#5805)
- ea99cbc SVS 0.5.0 (#5785)
- 0c2cad8 Run the Windows conda CI steps in bash (#5795)
- 35a4ec2 Use 3 sample vectors per node by default for HNSW level-0 links (#5789)
- 1ec0011 Hamming: vector popcount for the default computer at AVX512 and AVX512_VPOPCNT (#5787)
- fc65960 Use a SIMD masked sum for the fp32 RaBitQ 1-bit estimate (#5782)
- d37bede Train ProductQuantizer subquantizers in parallel (#5783)
- 386c96b Default alpha to 1.2 for all metrics (#5786)
- 0a32a42 Scale the HNSW and PiPNN search check period by the thread count (#5784)
- c919a60 Dispatch RaBitQ scans once per inverted list (#5597)
- 6907ed1 Prune inner-product graphs on cosines when norms vary (#5774)
- e353ed7 8-bit PQ code distance: 4-sum scalar kernel instead of gathers on AMD Zen 3/4/5 (#5751)
- 9e16309 Build PiPNN graphs over distinct codes (#5768)
- 7834aba Size IVF fast-scan slice LUTs on the calling thread (#5721)
- 2732125 Dispatch more dimensions to the SIMD fvec_L2sqr_ny_transposed kernels (#5757)
- ee6927d ivflib::search_with_distance_to_code: search through InvertedListScanner::distance_to_code (#5755)
- 56c96d5 Move Faiss C++ tests to Python (#5743)
- a55e0b2 Upgrade cuVS to 26.10 (#5633)
- 494330f Speed up the NEON 8-bit scalar quantizer L2 distance (#5733)
- 1a9ddc6 Use monotonic dynamic scheduling so libomp 12 does not take its static-steal path (#5723)
- 3fc6bcd On ROCm, stage pageable host copies in pinned memory (#5712)
- cec5702 DD: give fvec_L2sqr_ny_nearest_y_transposed_D internal linkage (#5720)
- db6aa06 Hoist per-list allocations out of the IVF fast-scan search loops (#5717)
- 3907966 Select OpenBLAS OMP build in conda for AArch64 + Linux (#5669)
- 44afa77 Stop allocating per (query, probe) on OpenMP workers in IVF RaBitQ fast-scan (#5716)
- 6692d7a Stop copying QueryFactorsData per block in RaBitQHeapHandler
- 3a98062 faiss/conda: extend LSQ NEON-flaky test skip to all arm64 (#5713)
- 2839c39 Make the GPU IVF search return the same neighbours on every run (#5682)
- a2f7943 Optimize 4-bit PQ fastscan accumulation on Arm CPUs (#5709)
- 83ae8b0 Move the RVV distance kernels into free-standing headers (#5697)
- 1dab0c1 Quarantine unstable cuVS Python GPU tests (#5699)
- ae4466d Avoid widening fp16 data for k-means++ initialization (#5693)
- ea9151d RaBitQ: broadcast one sign word per 32 dims in the AVX2 RBQ9 kernel (#5696)
- 4102312 Defer IVF list scan setup until needed (#5595)
- fdb9535 Make search stats collection configurable (#5670)
- 7f6bf10 Halve IndexSQFastScan rerank memory with a split-nibble layout (#5662)
- b1c1496 migrate from bit-manipulation builtins in fbcode/faiss (#5667)
- 2496f63 Avoid search stats contention during concurrent search (#5663)
- 3f4838e Batch the IVF ScalarQuantizer scan four codes at a time (#5456)
- 1dbb3d2 Update backward compatibility test to v1.15.1 (#5646)
Fixed
- 29782a0 Fix verbose e-means tests after the
nepochsrename (#5869) - 8babd49 Fix assignment after progressive-dimension Kmeans training (#5861)
- b7c44bc Initialize SVS Vamana graph parameters in the default constructor. (#5834)
- 9acf8b0 Guard fp16 threshold in mock builds [unused-const-variable] (#5835)
- 0c269ac Validate codebook size in read_ResidualQuantizer_old and bounds-check IndexBinaryIVF::reconstruct_from_offset (#5764)
- 7ac4a6c Fix database-parallel kNN when the parallel region gets fewer threads (#5824)
- 98a23e4 Fix OMP exception safety in ProductQuantizer (#5771)
- d87b58b fbcode/faiss/tests/test_fast_scan_distance_to_code.cpp (#5772)
- 48f2129 Drop constants [unused-const-variable] (#5794)
- 2f890e8 Fix train_NonUniform skipping training row 0 and racing on a shared buffer (#5791)
- d4a6548 Faiss OSS nightly autofix (#5790)
- 5712d82 Fix cuVS IVF-Flat workspace sizing after CPU-to-GPU cloning (#5763)
- bce5e24 Re-enable the cuVS CAGRA Python tests that hung on cuVS 26.06 (#5770)
- 450dd79 Fix AArch64's conda multi output recipe (#5727)
- 55afdff cmake: install utils/popcount.h (#5744)
- d4a4e3e Fix build for CPUTYPE=znver4 (#5752)
- 56797f9 Match scalar tie-break in AVX2/AVX512 Lloyd-Max encode (#5715)
- 5b4aa46 fbcode/faiss/gpu/utils (#5737)
- a643100 Faiss OSS nightly autofix (#5731)
- 4f63b42 Keep AVX512-TU copies of the AVX2 QBS loop out of the AVX2 path (#5724)
- c966dab Faiss OSS nightly autofix (#5728)
- 5d635f3 DD: give PQCodeDistanceScalar a SIMD level so the AVX2 path cannot run AVX512 code (#5719)
- f46050e Deflake test_io TestIVFPQRead.test_reader (#5718)
- 8b884ec Fix IndexFastScan::reset() leaving stale ntotal2 (crash on search) (#5614)
- d380b7d Fix IndexFlatCodes::reset on mmap-loaded codes (#5707)
- 6c51305 Avoid double-advancing HNSW visited tables (#5596)
- 76978ee Fix selector handling for IVF iterator scans (#5592)
- 38460ee Fix Faiss fp16 parity tests across architectures (#5695)
- 88a28bc Faiss OSS nightly autofix (#5686)
- ec94295 Bound the fast scan LUT scale by the accumulated sum (#5658)
- 3f08095 fix: release SuperKMeans sample buffer after rotation (#5648)
- 02cacc5 Fix TSAN races in side
hsnw_statsandrabitq_stats(#5657) - bf8be4a fix(ci): use GCC 14 riscv64 cross-compiler for RVV tuple/zvfhmin intrinsics (#5653)
- 98af2cf Fix osx-arm64 conda build: drop redundant openblas pin, allow single-platform release dispatch (#5652)
- 3778f58 Fix IDSelector handling in unbounded HNSW search (#5508)
Deprecated
- 8f176c3 Remove the replicas parameter (#5809)
- de495c9 Remove redundant contrib, torch, Manifold and telemetry tests (#5801)
- ce25a10 Remove redundant Panorama, general index, factory and SWIG tests (#5802)
- ca60fb5 Remove redundant clustering, binary index and SIMD distance tests (#5800)
- 4915580 Remove redundant serialization, mmap and deserialization tests (#5798)
- 2f8c1d2 Remove redundant SVS, HNSW, NSG and PiPNN tests (#5799)
- f2130c2 Remove redundant IVF and search parameter tests (#5803)
- 1c84f08 Remove redundant PQ, AQ and SQ fast-scan tests (#5797)
- 2010413 Remove redundant PQ, AQ, SQ and RaBitQ tests (#5796)
- 42aac2f Remove the cuVS 26.02 compatibility paths from the cuVS GPU code (#5750)