# What changed in faiss-cpu

> 79 changes in faiss-cpu 1 from its official release notes, upgrade guides and advisories: 5 breaking, 7 security, 22 new APIs and options. Each one cited. Sources checked 2026-10-28. HTML: https://unstale.sh/pypi/faiss-cpu/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## faiss-cpu 1

### Breaking changes

- The multi-GPU CAGRA build is folded into train(), and trainMultiGpu is deleted. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- cuVS dispatch is now opt-in rather than implied by the build. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- The deserialization byte limit now also applies to SVS IVF. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- Rejects degenerate code_size==0 indexes with ntotal>0 during deserialization. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Rejects nbits==0 during deserialization. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)

### Security

- Deserialization now validates the IndexScalarQuantizer codes buffer size. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- Fixes a leak and unbounded lists during OnDisk inverted list deserialization. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- Fixes an out-of-bounds read through IndexPreTransform. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- Hardens deserialization with bounds, consistency, allocation, recursion-depth, and null-index checks across multiple index types. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Bounds-checks the decoded direct_map entry. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Hardens the mmap reader against malformed inverted-list sizes. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Fixes a heap-buffer-overflow during deserialization. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)

### New APIs and options

- HNSW adds an opt-in deterministic lock-free graph build. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- A scan-context hook is added for locality-aware selectors. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- The C API now exposes IndexBinaryIVF.set_direct_map_type. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- IVFPQ scanners now support explicit distance modes. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- HNSW now supports staged RaBitQ storage. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- SVS now allows vector storing to be disabled. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- IndexRaBitQ deserialization now supports ZeroCopyIOReader. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- Adds multi-GPU CAGRA-to-HNSW building with trainAllNeighbors and multi-GPU optimization. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Adds a cuVS IVF-SQ backend. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Adds EDEN quantizer indexes. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Adds clone index support. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Adds read and write support for the IndexHNSW base class. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Adds GPU IVF add_preassigned support via add_core. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Adds a FastScan conversion constructor. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Adds a Metal index with product quantization and residual encoding support. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Adds a cuVS Faiss Python package for aarch64/GH200 with CUDA 12.4. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- The C API exposes the ScalarQuantizer codec and completes the FaissQuantizerType enum. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Adds has_dynamic_dispatch() to SIMDConfig. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Extracts the assignment iteration as a shared public SuperKMeans kernel. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Adds an HNSW is_similarity mode for inner-product and similarity metrics. (1.14.3) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.14.3)
- Adds a Metal IVF flat index with IVF scan/merge kernels and expanded top-k support. (1.14.3) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.14.3)
- Adds support for static vamana through SVS. (1.14.3) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.14.3)

### Performance

- Extends batching to PQ, SQ, and PreTransform. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Reuses the visited table across searches and raises the hash-set threshold from 500k to 10M. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Adds memory-mapped I/O for Flat and static Vamana SVS indices. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Optimizes Panorama HNSW, with the notes reporting approximately 1.2x performance. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Adds AVX2 and AVX512 byte-domain kernels. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Enables a byte-LUT gather path for distance computation. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Optimizes query setup, scanning, LUT quantization, bit-plane operations, and scanner distance-computer reuse. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Adds RISC-V RVV RaBitQ and vector distance kernels. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Uses a 256-bit fast-scan QBS kernel on AMD Zen 4 with split AVX-512. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Adds a VPOPCNTDQ-based implementation for Sapphire Rapids and newer processors. (1.14.3) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.14.3)
- Adds a VPOPCNTDQ-based kernel for Sapphire Rapids and newer processors. (1.14.3) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.14.3)
- Adds full TurboQuant Algorithm 2, including the QJL stage, with SIMD and optimizations. (1.14.3) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.14.3)
- Adds Sapphire Rapids optimizations for L2 and inner-product operations. (1.14.3) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.14.3)
- Avoids runtime checks in VisitedTable. (1.14.3) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.14.3)
- Reserves capacity to avoid rehashes during HNSW search. (1.14.3) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.14.3)

### Behavior and default changes

- The context hook is extended to IVFPQ/PQR, multibit RaBitQ, and Panorama scanners. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- The default Panorama batch size is now 1024. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- Range search now supports METRIC_L1 and additional metrics. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- reverse_index_factory now supports IndexIDMap and IndexIDMap2. (1.14.3) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.14.3)
- Metal is enabled by default on Apple machines. (1.14.3) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.14.3)

### Tooling

- Adds pip wheel packaging for faiss-gpu-cuvs. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Adds package type stubs, including SVS index classes, IndexIVFFlatPanorama.batch_size, quantizer types, and ClusteringInitMethod enum constants. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Adds pip wheel packaging for faiss-gpu. (1.14.3) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.14.3)

### Fixes and other changes

- DirectoryArchiver entries are now contained within the extraction root. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- Fixes search results for empty indexes using BLAS. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- faiss::hammings() now accepts ragged code sizes. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- Fixes byte-stride handling in reconstruct_n and search_and_reconstruct. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- Fixes range search parameters for IndexIDMap. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- The result limit now respects all similarity metrics. (1.15.1) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.1)
- Guards against empty query batches (nx=0); the same guard is added for exhaustive_L2sqr_seq. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Fixes symmetric_dis(). (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Fixes add_sa_codes returning -1 labels with an IVF subindex. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Fixes a crash with empty SearchParameters. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Bounds precomputed-table allocation during deserialization. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Bounds the constructor loop to fix a deserialization timeout. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Rejects null base or refine indexes during deserialization. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Filters out-of-radius results and widens the base radius by k_factor. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Fixes pruning so dominated equal-time points do not remain on the Pareto frontier. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- 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.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Fixes handling of multi-bit RaBitQ indexes, missing quantizer types, and IDMap2 identification. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Guards compute_codes/decode OpenMP regions for small n. (1.15.0) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.15.0)
- Deserialization now validates bool fields. (1.14.3) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.14.3)
- Rejects null inner indexes during deserialization. (1.14.3) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.14.3)
- Re-enables musllinux wheels for faiss-cpu. (1.14.3) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.14.3)
- Fixes an import SIGILL on non-AVX2 systems by moving partitioning tables to .rodata. (1.14.3) — [release notes](https://github.com/facebookresearch/faiss/releases/tag/v1.14.3)
