unstale

pypi / faiss-cpu

faiss-cpu

What changed in faiss-cpu 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-28.

5 breaking7 security22 new APIs and options15 performance5 behavior and defaults3 tooling22 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.2.9 on npm

faiss-cpu 179 changes

Breaking changes 5

  • The multi-GPU CAGRA build is folded into train(), and trainMultiGpu is deleted.

    1.15.1release notes

  • cuVS dispatch is now opt-in rather than implied by the build.

    1.15.1release notes

  • The deserialization byte limit now also applies to SVS IVF.

    1.15.1release notes

  • Rejects degenerate code_size==0 indexes with ntotal>0 during deserialization.

    1.15.0release notes

  • Rejects nbits==0 during deserialization.

    1.15.0release notes

Security 7

  • Deserialization now validates the IndexScalarQuantizer codes buffer size.

    1.15.1release notes

  • Fixes a leak and unbounded lists during OnDisk inverted list deserialization.

    1.15.1release notes

  • Fixes an out-of-bounds read through IndexPreTransform.

    1.15.1release notes

  • Hardens deserialization with bounds, consistency, allocation, recursion-depth, and null-index checks across multiple index types.

    1.15.0release notes

  • Bounds-checks the decoded direct_map entry.

    1.15.0release notes

  • Hardens the mmap reader against malformed inverted-list sizes.

    1.15.0release notes

  • Fixes a heap-buffer-overflow during deserialization.

    1.15.0release notes

New APIs and options 22

  • HNSW adds an opt-in deterministic lock-free graph build.

    1.15.1release notes

  • A scan-context hook is added for locality-aware selectors.

    1.15.1release notes

  • The C API now exposes IndexBinaryIVF.set_direct_map_type.

    1.15.1release notes

  • IVFPQ scanners now support explicit distance modes.

    1.15.1release notes

  • HNSW now supports staged RaBitQ storage.

    1.15.1release notes

  • SVS now allows vector storing to be disabled.

    1.15.1release notes

  • IndexRaBitQ deserialization now supports ZeroCopyIOReader.

    1.15.1release notes

  • Adds multi-GPU CAGRA-to-HNSW building with trainAllNeighbors and multi-GPU optimization.

    1.15.0release notes

  • Adds a cuVS IVF-SQ backend.

    1.15.0release notes

  • Adds EDEN quantizer indexes.

    1.15.0release notes

  • Adds clone index support.

    1.15.0release notes

  • Adds read and write support for the IndexHNSW base class.

    1.15.0release notes

  • Adds GPU IVF add_preassigned support via add_core.

    1.15.0release notes

  • Adds a FastScan conversion constructor.

    1.15.0release notes

  • Adds a Metal index with product quantization and residual encoding support.

    1.15.0release notes

  • Adds a cuVS Faiss Python package for aarch64/GH200 with CUDA 12.4.

    1.15.0release notes

  • The C API exposes the ScalarQuantizer codec and completes the FaissQuantizerType enum.

    1.15.0release notes

  • Adds has_dynamic_dispatch() to SIMDConfig.

    1.15.0release notes

  • Extracts the assignment iteration as a shared public SuperKMeans kernel.

    1.15.0release notes

  • Adds an HNSW is_similarity mode for inner-product and similarity metrics.

    1.14.3release notes

  • Adds a Metal IVF flat index with IVF scan/merge kernels and expanded top-k support.

    1.14.3release notes

  • Adds support for static vamana through SVS.

    1.14.3release notes

Performance 15

  • Extends batching to PQ, SQ, and PreTransform.

    1.15.0release notes

  • Reuses the visited table across searches and raises the hash-set threshold from 500k to 10M.

    1.15.0release notes

  • Adds memory-mapped I/O for Flat and static Vamana SVS indices.

    1.15.0release notes

  • Optimizes Panorama HNSW, with the notes reporting approximately 1.2x performance.

    1.15.0release notes

  • Adds AVX2 and AVX512 byte-domain kernels.

    1.15.0release notes

  • Enables a byte-LUT gather path for distance computation.

    1.15.0release notes

  • Optimizes query setup, scanning, LUT quantization, bit-plane operations, and scanner distance-computer reuse.

    1.15.0release notes

  • Adds RISC-V RVV RaBitQ and vector distance kernels.

    1.15.0release notes

  • Uses a 256-bit fast-scan QBS kernel on AMD Zen 4 with split AVX-512.

    1.15.0release notes

  • Adds a VPOPCNTDQ-based implementation for Sapphire Rapids and newer processors.

    1.14.3release notes

  • Adds a VPOPCNTDQ-based kernel for Sapphire Rapids and newer processors.

    1.14.3release notes

  • Adds full TurboQuant Algorithm 2, including the QJL stage, with SIMD and optimizations.

    1.14.3release notes

  • Adds Sapphire Rapids optimizations for L2 and inner-product operations.

    1.14.3release notes

  • Avoids runtime checks in VisitedTable.

    1.14.3release notes

  • Reserves capacity to avoid rehashes during HNSW search.

    1.14.3release notes

Behavior and default changes 5

  • The context hook is extended to IVFPQ/PQR, multibit RaBitQ, and Panorama scanners.

    1.15.1release notes

  • The default Panorama batch size is now 1024.

    1.15.1release notes

  • Range search now supports METRIC_L1 and additional metrics.

    1.15.0release notes

  • reverse_index_factory now supports IndexIDMap and IndexIDMap2.

    1.14.3release notes

  • Metal is enabled by default on Apple machines.

    1.14.3release notes

Tooling 3

  • Adds pip wheel packaging for faiss-gpu-cuvs.

    1.15.0release notes

  • Adds package type stubs, including SVS index classes, IndexIVFFlatPanorama.batch_size, quantizer types, and ClusteringInitMethod enum constants.

    1.15.0release notes

  • Adds pip wheel packaging for faiss-gpu.

    1.14.3release notes

Fixes and other changes 22

  • DirectoryArchiver entries are now contained within the extraction root.

    1.15.1release notes

  • Fixes search results for empty indexes using BLAS.

    1.15.1release notes

  • faiss::hammings() now accepts ragged code sizes.

    1.15.1release notes

  • Fixes byte-stride handling in reconstruct_n and search_and_reconstruct.

    1.15.1release notes

  • Fixes range search parameters for IndexIDMap.

    1.15.1release notes

  • The result limit now respects all similarity metrics.

    1.15.1release notes

  • Guards against empty query batches (nx=0); the same guard is added for exhaustive_L2sqr_seq.

    1.15.0release notes

  • Fixes symmetric_dis().

    1.15.0release notes

  • Fixes add_sa_codes returning -1 labels with an IVF subindex.

    1.15.0release notes

  • Fixes a crash with empty SearchParameters.

    1.15.0release notes

  • Bounds precomputed-table allocation during deserialization.

    1.15.0release notes

  • Bounds the constructor loop to fix a deserialization timeout.

    1.15.0release notes

  • Rejects null base or refine indexes during deserialization.

    1.15.0release notes

  • Filters out-of-radius results and widens the base radius by k_factor.

    1.15.0release notes

  • Fixes pruning so dominated equal-time points do not remain on the Pareto frontier.

    1.15.0release notes

  • Guards constant or zero-norm queries during quantization, clamps L2 estimates to zero or greater, and throws instead of aborting on a null decode buffer.

    1.15.0release notes

  • Fixes handling of multi-bit RaBitQ indexes, missing quantizer types, and IDMap2 identification.

    1.15.0release notes

  • Guards compute_codes/decode OpenMP regions for small n.

    1.15.0release notes

  • Deserialization now validates bool fields.

    1.14.3release notes

  • Rejects null inner indexes during deserialization.

    1.14.3release notes

  • Re-enables musllinux wheels for faiss-cpu.

    1.14.3release notes

  • Fixes an import SIGILL on non-AVX2 systems by moving partitioning tables to .rodata.

    1.14.3release notes