| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-08-03 | 11.3 kB | |
| v1.15.0 source code.tar.gz | 2026-08-03 | 1.8 MB | |
| v1.15.0 source code.zip | 2026-08-03 | 2.5 MB | |
| Totals: 3 Items | 4.3 MB | 3 | |
[1.15.0] - 2026-07-31
Full changelog
Added
- [4332ce] Enable byte-LUT gather path for QT_8bit_eden distance computation (#5498)
- [41133f] Add EDEN quantizer indexes (#5278)
- [3110fd] Add MetalIndexIVFPQ with product quantization and residual encoding support (#5288)
- [6c2b68] Adding cuVS IVF-SQ backend (#5306)
- [4d778b] Add multi-GPU CAGRA → HNSW build with trainAllNeighbors and multi-GPU optimize (#5282)
- [42dc28] Implement memory-mapped I/O for Flat and static Vamana SVS indices (#5271)
- [d22107] feat(riscv): Add RISC-V RVV rabitq kernels (#5369)
- [df5101] feat(riscv): Add RISC-V RVV vector distance kernels (#5354)
- [3b52da] Add AVX2 and AVX512 byte-domain kernels for QT_8bit_direct_signed (#5409)
- [88b6c4] Implement IVFRaBitQ FastScan conversion constructor (#5422)
- [d24cc8] Implement GPU IVF add_preassigned via add_core (implement [#3908]) (#5372)
- [582657] Read/Write support for IndexHNSW base class (#5305)
- [a3350f] faiss: support METRIC_L1 and extra metrics in IndexFlat range_search (#5391)
- [432e8b] Extend DistanceComputer batching to PQ, SQ, and PreTransform (#5309)
- [7d4bb3] Extract super_kmeans_assign_iteration as a shared public SuperKMeans kernel (#5443)
- [aff858] c_api: expose ScalarQuantizer codec and complete FaissQuantizerType enum (#5477)
- [13aa39] Clone index support for HadamardRotation (#5475)
- [3e313e] SIMDConfig::has_dynamic_dispatch() (#5460)
- [a6f977] Add faiss-gpu-cuvs pip wheel packaging (#5250)
- [622732] pyfaiss_gpu_cuvs_2602: cuVS faiss Python for aarch64/GH200 (26.02, CUDA 12.4)
- [522644] Stand up parallel cuVS 26.02 IVF-PQ targets (rmm/raft/cuvs) at CUDA 12.8 (#5414)
- [edebab] Include Python type stubs (init.pyi, py.typed) in conda packages (#5394)
- [9579d8] Add type stubs for SVS index classes + IndexIVFFlatPanorama.batch_size (#5489)
- [fd7be0] Add QT_0bit and QT_2bit_tq..QT_5bit_tq to ScalarQuantizer pyi stub (#5323)
- [ccecc8] Add ClusteringInitMethod enum constants to init.pyi stub (#5324)
- [55990e] Port test_rabitq_utils from C++ to Python (#5442)
Changed
- [023639] Optimize RaBitQ fastscan query setup + 80% qps (#5396)
- [b1d61c] Fuse RaBitQ AND-dot and popcount scan (#5412)
- [81031a] RaBitQ fastscan avx512 lut quant (#5397)
- [b7f2b0] RaBitQ SIMD-optimized bit-plane operation (#5392)
- [0a2770] Reuse RaBitQ IVF scanner distance computer (#5390)
- [a3d59f] faiss DD: use 256-bit fast-scan QBS kernel on AMD Zen 4 (split AVX-512) (#5488)
- [c374dd] Panorama HNSW Optimizations (~x1.2) (#5190)
- [cb9a72] Reuse the HNSW visited table across searches instead of reallocating per call (#5448)
- [4d1657] Raise HNSW visited-table hash-set threshold from 500k to 10M (#5446)
- [a4b4c0] Optimize exhaustive_L2sqr_blas_cmax with AVX-512 intrinsics. (#4569)
- [4a2f7e] Optimize the DistanceComputerByte::compute_code_distance with AVX512F, AVX512BW, AVX512VL instructions (#5067)
- [9a74c6] Speed up Top1 and Reservoir add_results with AVX2/AVX512 (#5297)
- [4030fa] Speed up polysemous training with AVX-512.
- [ea1076] Parallelize inverted-list append loop in IndexIVFPQ::add_core_o (#5382)
- [cf0457] ProductQuantizer::search_sdc: hoist per-subquantizer row pointers out of database-vector loop (#5338)
- [caf88f] Improve ranklist intersection size (#5237)
- [5c1afe] Remove dead code in quantize_ex_bits to avoid wasted compute (#5384)
- [e3dd6a] Remove unused fields in various DistanceComputers (#5318)
- [35c549] Remove confusing double-negative throw-macro conditions (#5471)
- [9223d6] Rename SQI8 to SQ8 to be consistent with the rest of Faiss (#5337)
- [b37e92] Reuse faiss.ResultHeap in benchs instead of duplicating it (#5363)
- [1f755e] Prune cuVS brute-force flat index on aarch64 (FAISS_CUVS_NO_FLAT) (#5431)
- [3a7cce] Faiss OSS CI: skip GPU jobs on PRs that touch no GPU-relevant code (#5402)
- [0f48ae] Faiss OSS autofix: force cuVS nightly to break (E2E validation) (#5328)
- [0f0f72] Format faiss Python files with black (line length 80) (#5349)
- [7a7a8f] Align faiss .flake8 with black and the 80-char standard (#5350)
- [259fa8] black -l 80: gpu/test formatting (1/3) (#5426)
- [a7d91d] black -l 80: tests/ formatting (2/3) (#5427)
- [393755] black -l 80: benchs + python + refine test formatting (3/3) (#5428)
- [b75a23] black -l 80: python/init.pyi formatting (4/4) (#5429)
- [a23893] Finish E501 line-length lint sweep across faiss (183 violations, 52 files) (#5444)
- [d4564b] facebook-unused-include-check in distances_avx2.cpp (#5462)
- [ab3a5a] facebook-unused-include-check in IndexIVFPQ.cpp (#5461)
- [e85b9b] facebook-unused-include-check in test_svs.cpp (#5455)
- [5e1ccc] facebook-unused-include-check in TestGpuIndexIVFScalarQuantizer.cpp (#5454)
- [003e00] facebook-unused-include-check in IndexBinaryHash.cpp (#5453)
- [c22dc2] facebook-unused-include-check in avx2.cpp (#5452)
- [76e2bb] facebook-unused-include-check in IndexBinaryHNSW.cpp (#5379)
- [7c643c] facebook-unused-include-check in IndexIVFPQFastScan.cpp (#5378)
- [3c5c27] facebook-unused-include-check in avx2.cpp (#5377)
- [9b3396] facebook-unused-include-check in test_ivf_early_termination.cpp (#5376)
- [027054] facebook-unused-include-check in IVFPQ_QueryTables.cpp (#5359)
- [f4cb96] facebook-unused-include-check in avx2.cpp (#5358)
- [afc1be] facebook-unused-include-check in hamming.cpp (#5355)
- [6256cc] facebook-unused-include-check in IndexIVF.cpp (#5356)
- [83dc6a] facebook-unused-include-check in IndexIVFSpectralHash.cpp (#5357)
- [124bfa] facebook-unused-include-check in IndexSVSVamanaLeanVec.cpp (#5343)
- [a0457d] facebook-unused-include-check in avx2.cpp (#5344)
- [595c5d] facebook-unused-include-check in distances_simd.cpp (#5342)
- [543725] facebook-unused-include-check in avx2.cpp (#5314)
- [7c56a9] facebook-unused-include-check in avx2.cpp (#5315)
- [0f280a] facebook-unused-include-check in distances_simd.cpp (#5316)
Fixed
- [6187d9] clang-diagnostic-unused-parameter in GpuCloner.cpp (#5480)
- [37313e] Fix two memory leaks in shard_ivf_index_centroids (#5495)
- [7a4e79] Fix RaBitQ fast scan aux offsets for large bbs (#5421)
- [a03279] faiss DD: SQ AVX-512 falls back to AVX2 when d%16!=0 (#5478)
- [de8520] missing auto vectorization for AVX512-SPR (#5433)
- [4a2393] Fix AVX-512 PQ-encode falling back to scalar in fvec_L2sqr_ny_nearest_y_transposed (#5330)
- [7437ca] Fix Jaccard heap selection in IVF search (#5408)
- [458c7b] Fix division-by-zero in quantize_lut when all LUT entries are identical (#5424)
- [ecd5b6] Guard constant/zero-norm query in RaBitQ query quantization (#5381)
- [1190b7] RaBitQ: Clamp L2 distance estimate to >=0 (#5393)
- [af45a3] Throw instead of abort on null buffer in RaBitQuantizer::decode_core (#5465)
- [5372c8] Guard exhaustive_{inner_product,L2sqr}_seq against empty query batches (nx=0) (#5445)
- [764b86] Guard ScalarQuantizer compute_codes/decode OMP region for small n (#5423)
- [19f477] Fix out-of-bounds memory access in bvec_checksum (#5310)
- [3553e0] Fix IndexAdditiveQuantizer::symmetric_dis() (#5319)
- [b7cd01] Filter out-of-radius results in IndexRefine::range_search (#5370)
- [421367] Always widen IndexRefine::range_search base radius by k_factor (#5395)
- [ed29db] faiss: fix IndexIDMap range_search crash with empty SearchParameters (#5388)
- [828de1] fix IDMap add_sa_codes returning -1 labels with ivf subindex Issue [#5333] (#5345)
- [bf5310] Fix get_code_size to handle HNSW coarse quantizers with any M value (#5416)
- [e1f8d4] Fix reverse_index_factory for multi-bit RaBitQ indexes (#5419)
- [7b1d0c] Fix C++ reverse_index_factory: missing qtypes crash telemetry, IDMap2 misidentified (#5417)
- [cc9be4] fix: reverse_index_factory missing 11 SQ types including all TurboQuant variants (#5322)
- [350a50] Fix OperatingPoints::add prune loop leaving dominated points at equal time (#5415)
- [bd6760] Fix OperatingPoints leaving dominated points on the Pareto frontier for equal-time points (#5334)
- [376930] Fix null dereference, dead condition, and Python binding crash in AutoTune and Clustering (#5321)
- [e306f3] Fix PyCallbackShardingFunction to properly decrement references (#5389)
- [d91b73] fix: bs add n fix valid counter skip (#5383)
- [247527] Fix reconstruct_n stubs resolving to torch.Tensor for numpy calls (#5411)
- [a3e8c6] Fix heap-buffer-overflow in ResidualCoarseQuantizer deserialization (T280514309) (#5485)
- [4d7491] Bound lattice_nbit loop in IndexLattice ctor to fix deserialization timeout (T277092535) (#5484)
- [5987f5] Reject nbits==0 ProductQuantizer on deserialization (T279464247) (#5483)
- [269ac4] Bound recursion depth in index deserialization (CWE-674) (#5468)
- [a20b22] Bound decode-cache compute in ZnSphereCodecRec deserialization (#5467)
- [6a0616] Reject null base/refine index in IndexRefine deserialization (#5466)
- [bc102d] Bound IVFPQ precomputed-table allocation at deserialization time (#5464)
- [756c5d] Harden FastScan deserialization: enforce ksub==16 and bound reconstruct() (#5436)
- [f1efc2] Validate codes/ntotal consistency in Ix2L and IxLa deserialization (#5439)
- [fba908] Validate Panorama batch_size and codes/cum_sums on deserialization (#5438)
- [d43336] Validate SVS-Vamana stored_vectors size on deserialization (ISV2) (#5434)
- [dfd2a2] Reject degenerate code_size==0 IndexPQ with ntotal>0 on deserialization (#5437)
- [91ce5f] Harden reconstruct()/reset() against null storage in composite indexes (#5440)
- [ea8e22] Bounds-check decoded direct_map entry in IndexIVF::reconstruct (#5435)
- [79f59e] Validate legacy IVFFlat per-list codes size against ids size (#5259)
- [c428ca] Harden OnDiskInvertedLists mmap reader against malformed list sizes (#5312)
- [6f62d0] Guard against integer overflow in index deserialization storage-size checks (#5313)
- [16c5d7] Don't redefine PRETTY_FUNCTION under clang-cl (#5474)
- [a96834] clang-diagnostic-unused-parameter in bench_result_handler_overhead.cpp (#5481)
- [d6d3dc] clang-diagnostic-unused-parameter in bench_cppcontrib_sa_decode.cpp (#5479)
- [8d0d1a] faiss/gpu/perf: check CUDA return in PerfIVFPQAdd (clang21 nodiscard) (#5368)
- [0fa5b0] faiss/gpu/perf: check cudaProfilerStop() return (fix clang21 -Wunused-value) (#5362)
- [6f0155] Keep distances_simdlib256.h include in distances_simd.cpp (unused-include false positive) (#5380)
- [22220d] Fix genuine flake8 lint in faiss Python (F401/F403/F841/B011) (#5351)
- [63378f] Fix cuVS GPU CI timeout: pin CUDA toolkit to 13.2 (#5401)
- [11bd76] Faiss OSS nightly autofix (#5346)
- [7cd1ae] Fix panorama tests: pass D_panorama (not D_regular) to check_ref_knn_with_draws (#5430)
- [ba6af9] Fix flaky IVF/Refine Panorama kNN tests under AVX512_SPR dispatch (#5420)
- [6653b9] Fix flaky TestIVFRaBitQ_AVX2::test_comparison_vs_ref_L2_rrot — apply cross-SIMD equivalence (#5325)
- [aa9d2b] De-flake test_flat_panorama across SIMD levels (#5361)
- [395eaf] De-flake panorama / graph_based / hamming_utils tests (#5339)
- [08cb1f] De-flake test_refine_panorama.test_incremental_add (seed + tolerance) (#5347)
- [8bfcb4] De-flake test_meta_index.Shards.test_shards (loosen tie-churn tolerance) (#5348)
- [54f83a] De-flake bench_transposed_encode (CI timeout) (#5360)