
Faiss 版本演进全解从 CHANGELOG 读懂 Faiss 的新特性、量化器与 SIMD 动态分发【免费下载链接】faissA library for efficient similarity search and clustering of dense vectors.项目地址: https://gitcode.com/GitHub_Trending/fa/faiss本文以 Faiss 仓库根目录下的 CHANGELOG.md 为蓝本系统梳理该向量相似性搜索库从 1.2.12018 年到 1.15.02026-07-31的版本演进脉络。读完本文你能快速掌握每个版本的发布日期与核心能力、RaBitQ/SuperKMeans/EDEN 等量化器的成熟路径、SIMD 动态分发架构的落地过程以及如何在项目中正确识别版本并选用对应的安装与分发方式。一、CHANGELOG.md 的结构与阅读方法Faiss 遵循 Keep a Changelog 风格的组织方式每个版本一个## [x.y.z] - 日期段落内部按Added / Changed / Fixed / Deprecated四类部分版本还有 Removed罗列变更条目。1.15.0 及之前的条目携带 commit 哈希前缀40 位 SHA 的前 10 位与 PR 编号例如- 41133fde4222a8862650601d85f9af684314ebc8 Add EDEN quantizer indexes (#5278) - cb9a72ac03f4e7f7d563e3e54ab4e86b8ce1af12 Reuse the HNSW visited table across searches ... (#5448)文件末尾附有一组指向上游仓库版本对比页的引用链接从[1.2.1]到[1.15.0]方便在两个版本之间做 diff 审阅。阅读时的实用技巧是先按主题横向检索关键词如RaBitQ、SIMD、cuVS、deserialization再回到对应版本段落纵向确认上下文——因为 Faiss 的一个大特性例如 RaBitQ往往横跨多个版本逐步完善。版本时间线总览版本发布日期该版本最具代表性的变化1.2.12018-02-28IVF 磁盘存储、C bindings1.3.02018-07-10二值索引IndexBinaryFlat / IndexBinaryIVF、索引序列化1.6.02019-09-24ScalarQuantizer 上 GPU、serialize_index/deserialize_index1.7.02021-01-27版本条目精简过渡版本1.7.32022-11-03稀疏 k-means、Product Additive Quantization、每查询检索参数1.7.42023-04-12大批量 IVF 搜索big batch search、Jaccard 距离1.8.02024-02-27faiss-gpu-raft 包、FAISS_OPT_LEVEL环境变量、AVX512 优化模式1.9.02024-10-04ROCm 支持、QINCo、AVX-512 SQ8 距离、TimeoutCallback1.10.02025-01-30从 RAFT 迁移到 cuVS、avx512_spr架构模式、Windows ARM641.11.02025-04-24RaBitQ 实现落地、mmap/零拷贝反序列化1.12.02025-08-11二进制 CAGRA含 NN Descent、IVF 额外度量、extended APIEx后缀1.13.02025-11-11Panorama 集成进 IVF/HNSW、RaBitQ Fast Scan1.13.22025-12-19启用 Intel ScalableVectorSearchSVS、IndexRefinePanorama1.14.02026-03-02SIMD 动态分发基础设施SIMDConfig、PEP 561 类型桩1.14.22026-05-21SuperKMeans、Metal GPU 后端Apple Silicon、pip 安装支持、IVF 提前终止1.14.32026-06-12TurboQuantQJL 阶段、Sapphire Rapids 优化、HNSWis_similarity模式1.15.02026-07-31EDEN 量化器索引、cuVS IVF-SQ 后端、多 GPU CAGRA→HNSW 构建上表可直接对照 CHANGELOG.md 中的对应段落逐条核验。二、1.15.0 深度解读EDEN、量化器加速与反序列化加固AddedEDEN 量化器与多 GPU 构建能力1.15.0 的 Added 段落中技术含量最高的两条是Add EDEN quantizer indexes (#5278)引入 EDEN 量化器索引。仓库中对应源文件为 faiss/IndexIVFEDEN.h、faiss/IndexIVFEDEN.cpp 与编码器头 faiss/impl/EDENQuantizer.h该索引已接入 index_factory、clone_index 与序列化读写路径可搜索IndexIVFEDEN在 faiss/index_factory.cpp、faiss/impl/index_read.cpp 中的引用。测试覆盖见 tests/test_eden.py。Enable byte-LUT gather path for QT_8bit_eden (#5498)为 EDEN 的 8-bit 量化计算补充字节查表LUT gather路径属于紧随其后的性能补强。其余值得注意的 Added 条目包括多 GPU CAGRA → HNSW 构建#5282支持trainAllNeighbors与多 GPU optimize打通 GPU 建图后回 CPU 的完整链路Flat 与静态 Vamana SVS 索引的内存映射 I/O#5271让超大索引可通过 mmap 加载RISC-V RVV 内核#5354、#5369新增 RVV 向量距离与 rabitq 内核配合 cmake/toolchains/riscv64-linux-gnu.cmake 的交叉编译支持cuVS IVF-SQ 后端#5306与faiss-gpu-cuvs pip wheel 打包#5250后者对应仓库根目录的 pyproject-gpu-cuvs.tomlIndexHNSW 基类读写支持#5305与IndexFlat range_search 支持 METRIC_L1 等额外度量#5391。ChangedRaBitQ FastScan 的系统性提速1.15.0 的 Changed 段落几乎被 RaBitQ 相关优化主导形成了一条清晰的优化链Optimize RaBitQ fastscan query setup 80% qps (#5396)—— 查询侧建表提速Fuse RaBitQ AND-dot and popcount scan (#5412)—— 将 AND-dot 与 popcount 扫描融合为单趟RaBitQ fastscan avx512 lut quant (#5397)与RaBitQ SIMD-optimized bit-plane operation (#5392)—— AVX512 LUT 量化与位平面 SIMD 化Reuse RaBitQ IVF scanner distance computer (#5390)—— 复用 DistanceComputer避免重复构造。此外还包括 HNSW visited table 跨查询复用#5448、visited table 哈希集合阈值从 50 万提高到 1000 万#5446、AMD Zen 4 上使用 256-bit 快速扫描 QBS 内核#5488等。这些条目的实现可分别在 faiss/utils/simd_impl/ 与 faiss/impl/hnsw/ 目录下按名字检索验证。Fixed反序列化安全加固的集中体现1.15.0 的 Fixed 段落延续并扩大了 1.14.x 启动的“反序列化加固”运动代表性条目Bound recursion depth in index deserialization (CWE-674) (#5468)Harden FastScan deserialization: enforce ksub16 and bound reconstruct() (#5436)Bound IVFPQ precomputed-table allocation at deserialization time (#5464)Harden OnDiskInvertedLists mmap reader against malformed list sizes (#5312)Guard against integer overflow in index deserialization storage-size checks (#5313)。从源码结构看这些加固集中于 faiss/impl/index_read.cpp 与 faiss/impl/io.cpp并有专门的越界/损坏文件测试 tests/test_io_corrupted.cpp 与反序列化验证测试 tests/test_read_index_deserialize.cpp 兜底。对使用方而言这意味着加载不可信来源的索引文件时1.15.0 比早期版本多了一层输入校验防线若你长期停留在旧版本升级时值得关注此类安全修复。三、纵向主题一RaBitQ 的完整成熟路径1.11.0 → 1.15.0CHANGELOG 是追踪单个特性跨版本演进的最好材料。RaBitQ 的时间线如下1.11.02025-04-24RaBitQ implementation (#4235)首次落地并修复了首个序列化问题fix a serialization problem in RaBitQ (#4261)。1.12.02025-08-11SIMD optimization RaBitQ (#4515)完成 SIMD 化Change default qb from 0 to 4 in RaBitQ indexes (#4757)在 1.14.0 段落中调整了默认查询位数。1.13.02025-11-11RaBitQ Fast Scan (#4595)与Implementation of IndexIVFRaBitQFastScan (#4596)进入 FastScan 体系。1.13.12025-12-02Implement multi-bit RaBitQ quantization (nb_bits 2-9) (#4679)多比特支持。1.13.22025-12-19多比特扩展进 FastScan#4721、#4722并新增RaBitQStats统计两阶段过滤效果。1.14.x → 1.15.0多比特 IP 度量 SIMD 优化1.14.1 #4850、VPOPCNTDQ 内核1.14.3 #5149、FastScan 全链路优化与正确性修复1.15.0 #5396 系列、Fix RaBitQ fast scan aux offsets for large bbs (#5421)。当前仓库中RaBitQ 相关实现分布在 faiss/RaBitQuantizer.h、faiss/IndexRaBitQ.h、faiss/IndexIVFRaBitQFastScan.h 等处性能基准见 benchs/bench_rabitq.py 与 tests/test_rabitq.py。这个“实现 → SIMD → FastScan → 多比特 → 优化”的节奏是阅读 Faiss 其他新特性如 Panorama、TurboQuant时同样适用的方法。四、纵向主题二SIMD 动态分发Dynamic Dispatch的落地这是 1.14.x1.15.0 间对编译体系影响最大的变化直接改变了 Faiss 的构建与分发方式1.14.0Introduce Dynamic Dispatch infrastructure with SIMDConfig (#4780)同时resulthandlers with AVX512 (#4806)、dynamic dispatch distances_simd (#4781)等条目表明距离函数与结果处理器开始模板化1.14.2Add SIMD dynamic dispatch migration guide (#4973)即仓库中的 faiss/docs/simd_dynamic_dispatch_migration.md同时V2 enable specifying a subset of SIMD levels ... (#4959)允许在分发时裁剪 SIMD 级别集合1.14.3修复静态分发的退化问题——static SIMD dispatch falls to scalar for avx512_spr/avx512/arm_sve builds (#5057)并为 Sapphire Rapids 增加 SQ 优化与 VPOPCNTDQ 内核1.15.0SIMDConfig::has_dynamic_dispatch() (#5460)提供公开判断接口SQ AVX-512 falls back to AVX2 when d%16!0 (#5478)等条目体现回退策略的精细化的。迁移指南解释了为何不能简单“运行时检查再分支”整个编译单元translation unit会受-mavx2等标志影响被自动向量化因此 SIMD 代码必须隔离到独立编译单元如distances_avx2.cpp公共代码以基线标志编译。这与当前源码布局完全一致faiss/utils/simd_impl/ 下按指令集拆分.cpp文件faiss/impl/simdlib/ 提供simdlib_avx2.h、simdlib_avx512.h、simdlib_neon.h、simdlib_ppc64.h、simdlib_emulated.h等按级别拆分的模板层而运行时入口在 faiss/impl/simd_dispatch.h 的SIMDConfig与with_simd_level后者可对整个代码块只做一次分发避免紧循环内的逐次开销。相关验证测试包括 tests/test_simd_dispatch.py、tests/test_simd_levels.cpp 及NoneSIMDLevel跨级别一致性检查1.14.2 #5158。对使用者的实际影响动态分发构建的单个二进制可以在不同指令集的机器上运行并自动选择最优内核减少了“必须为 AVX2/AVX512 分别编译/链接”的负担——这正是 1.14.0 之前 monolithic SIMD 模型的痛点见 CHANGELOG.md 1.14.0 段落与 faiss/docs/simd_dynamic_dispatch_migration.md 的对照阅读。五、纵向主题三GPU 生态cuVS 取代 RAFT、Metal 后端与打包演进cuVS 迁移与扩展1.10.0中Migrate from RAFT to CUVS (#3549)是 GPU 侧的结构性转折1.12.0 的 Deprecated 段落则正式清退了 CUDA 11 支持1.13.x 升级 cuVS 至 25.10#46391.14.0 升级为 26.06#5240实际记录在 1.14.3 段落1.14.2 起 CUDA 13.2 进入 CI#5207并修复了 CI 超时问题pin CUDA toolkit to 13.2 (#5401)1.15.01.15.0新增 cuVS IVF-SQ 后端#5306并在 aarch64 上按需裁剪 cuVS 暴力 Flat 索引FAISS_CUVS_NO_FLAT#5431。Metal 后端与多平台1.14.2Add Metal GPU backend for Apple Silicon (IndexFlat) (#5144)1.14.3MetalIndexIVFFlat带 IVF scan/merge 内核#5202且 Apple 机器默认启用 Metal#52801.15.0MetalIndexIVFPQ with product quantization and residual encoding support (#5288)。对应源码位于 faiss/gpu_metal/含独立.metalshader 与MetalIndexFlat、MetalIndexIVFFlat、MetalIndexIVFPQ等实现。pip / conda 打包与类型桩1.14.0引入 PEP 561 Python 类型桩#4840对应 faiss/python/init.pyi 与 faiss/python/py.typed1.14.2Add pip install support via scikit-build-core cibuildwheel (#4862)与 pyproject.toml 中的scikit-build-core0.10构建后端一致同版本重新启用 musllinux 轮子1.14.3 #52991.15.0新增faiss-gpu-cuvspip 打包#5250与 aarch64/GH200 的 conda 包pyfaiss_gpu_cuvs_2602CUDA 12.4类型桩持续补全SVS 索引类 #5489、SQ 枚举 #5323/#5324。代码风格在 1.15.0 统一为 black行宽 80并配套 flake8 对齐#5349#5444 系列这是该版本 Changed 段落的另一大组成。版本号的单一事实来源是 faiss/Index.h 中的FAISS_VERSION_MAJOR/MINOR/PATCH当前为 1.15.0与 CHANGELOG 最新段落一致Python 侧由 faiss/python/init.py 的__version__拼接导出C 侧则有 1.9.0 引入的faiss_get_version()C API #3688。六、实用建议如何用这份 CHANGELOG 指导版本选择确认安装版本Python 中import faiss; faiss.__version__C 中用FAISS_VERSION宏或 C API 的faiss_get_version()按需求选版本需要 RaBitQ 多比特 FastScan 至少 1.13.2需要 MetalApple Silicon至少 1.14.2需要 EDEN、cuVS IVF-SQ、RISC-V RVV 内核则需 1.15.0需要反序列化安全加固收益建议不低于 1.14.0升级前看 Fixed 段Faiss 的 Fixed 段落常包含跨版本累积的内存安全修复如 1.14.2 中Fix integer overflow and unbounded loop in Clustering.cpp (#5130)从 1.12 之前的大版本跨度升级时尤应留意特性追踪法以 RaBitQ 为例见第三节用grep -n RaBitQ CHANGELOG.md即可还原特性从落地到成熟的完整证据链再结合对应测试文件如 tests/test_rabitq.py验证行为注意适用前提1.15.0 的 cuVS 相关能力要求对应 cuVS 版本与 CUDA 12.4/12.8 环境见 pyproject-gpu-cuvs.toml 与 INSTALL.mdMetal 能力仅限 Apple SiliconRVV 内核面向 RISC-V 平台均非通用 CPU 路径的默认依赖。七、小结CHANGELOG.md 是 Faiss 仓库中信息密度最高的单一文件它既记录了从 1.2.1 的磁盘 IVF 与 C bindings 到 1.15.0 的 EDEN 量化器、多 GPU CAGRA 构建与反序列化加固的完整演进也以 RaBitQ、SIMD 动态分发、cuVS 迁移三条纵向主线展示了“新特性如何在多个版本间逐步成熟”的典型节奏。结合仓库中的源码faiss/impl/simdlib/、faiss/gpu_metal/、faiss/svs/、测试tests/与打包配置pyproject*.toml、conda/这份变更日志足以作为评估版本选择、规划升级路径的第一手依据。【免费下载链接】faissA library for efficient similarity search and clustering of dense vectors.项目地址: https://gitcode.com/GitHub_Trending/fa/faiss创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考