[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-facebookresearch--faiss":3,"tool-facebookresearch--faiss":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",158594,2,"2026-04-16T23:34:05",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":76,"owner_email":76,"owner_twitter":76,"owner_website":77,"owner_url":78,"languages":79,"stars":117,"forks":118,"last_commit_at":119,"license":120,"difficulty_score":32,"env_os":121,"env_gpu":122,"env_ram":123,"env_deps":124,"category_tags":132,"github_topics":76,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":133,"updated_at":134,"faqs":135,"releases":165},8249,"facebookresearch\u002Ffaiss","faiss","A library for efficient similarity search and clustering of dense vectors.","Faiss 是由 Meta 研发的高效向量相似度搜索与聚类库，专为处理海量高维数据而生。在人工智能应用中，当需要将文本、图像等内容转化为向量并进行快速匹配时，传统方法往往难以应对亿级规模的数据量或内存限制，而 Faiss 正是为了解决这一瓶颈。它提供了多种算法，既能进行精确搜索，也能通过压缩编码或构建索引结构（如 HNSW）实现极速的近似搜索，轻松支撑单服务器数十亿向量的检索需求。\n\nFaiss 特别适合 AI 开发者、算法工程师及科研人员使用，尤其是那些正在构建推荐系统、以图搜图引擎或大模型知识库的应用团队。其核心亮点在于卓越的性能与灵活性：底层由 C++ 编写并提供完整的 Python 接口，易于集成；更独特的是，它将许多核心算法移植到了 GPU 上，能自动管理显存，在单卡或多卡环境下显著提升搜索与聚类速度，是目前已知最快的高维向量近邻搜索方案之一。无论是需要极致速度的在线服务，还是资源受限的离线分析，Faiss 都能提供成熟的解决方案，帮助开发者高效落地向量检索功能。","# Faiss\n\nFaiss is a library for efficient similarity search and clustering of dense vectors. It contains algorithms that search in sets of vectors of any size, up to ones that possibly do not fit in RAM. It also contains supporting code for evaluation and parameter tuning. Faiss is written in C++ with complete wrappers for Python\u002Fnumpy. Some of the most useful algorithms are implemented on the GPU. It is developed primarily at Meta's [Fundamental AI Research](https:\u002F\u002Fai.facebook.com\u002F) group.\n\n## News\n\nSee [CHANGELOG.md](CHANGELOG.md) for detailed information about latest features.\n\n## Introduction\n\nFaiss contains several methods for similarity search. It assumes that the instances are represented as vectors and are identified by an integer, and that the vectors can be compared with L2 (Euclidean) distances or dot products. Vectors that are similar to a query vector are those that have the lowest L2 distance or the highest dot product with the query vector. It also supports cosine similarity, since this is a dot product on normalized vectors.\n\nSome of the methods, like those based on binary vectors and compact quantization codes, solely use a compressed representation of the vectors and do not require to keep the original vectors. This generally comes at the cost of a less precise search but these methods can scale to billions of vectors in main memory on a single server. Other methods, like HNSW and NSG add an indexing structure on top of the raw vectors to make searching more efficient.\n\nThe GPU implementation can accept input from either CPU or GPU memory. On a server with GPUs, the GPU indexes can be used a drop-in replacement for the CPU indexes (e.g., replace `IndexFlatL2` with `GpuIndexFlatL2`) and copies to\u002Ffrom GPU memory are handled automatically. Results will be faster however if both input and output remain resident on the GPU. Both single and multi-GPU usage is supported.\n\n## Installing\n\nFaiss comes with precompiled libraries for Anaconda in Python, see [faiss-cpu](https:\u002F\u002Fanaconda.org\u002Fpytorch\u002Ffaiss-cpu), [faiss-gpu](https:\u002F\u002Fanaconda.org\u002Fpytorch\u002Ffaiss-gpu) and [faiss-gpu-cuvs](https:\u002F\u002Fanaconda.org\u002Fpytorch\u002Ffaiss-gpu-cuvs). The library is mostly implemented in C++, the only dependency is a [BLAS](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBasic_Linear_Algebra_Subprograms) implementation. Optional GPU support is provided via CUDA or AMD ROCm, and the Python interface is also optional. The backend GPU implementations of NVIDIA [cuVS](https:\u002F\u002Fgithub.com\u002Frapidsai\u002Fcuvs) can also be enabled optionally. It compiles with cmake. See [INSTALL.md](INSTALL.md) for details.\n\n## How Faiss works\n\nFaiss is built around an index type that stores a set of vectors, and provides a function to search in them with L2 and\u002For dot product vector comparison. Some index types are simple baselines, such as exact search. Most of the available indexing structures correspond to various trade-offs with respect to\n\n- search time\n- search quality\n- memory used per index vector\n- training time\n- adding time\n- need for external data for unsupervised training\n\nThe optional GPU implementation provides what is likely (as of March 2017) the fastest exact and approximate (compressed-domain) nearest neighbor search implementation for high-dimensional vectors, fastest Lloyd's k-means, and fastest small k-selection algorithm known. [The implementation is detailed here](https:\u002F\u002Farxiv.org\u002Fabs\u002F1702.08734).\n\n## Full documentation of Faiss\n\nThe following are entry points for documentation:\n\n- the full documentation can be found on the [wiki page](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fwiki), including a [tutorial](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fwiki\u002FGetting-started), a [FAQ](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fwiki\u002FFAQ) and a [troubleshooting section](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fwiki\u002FTroubleshooting)\n- the [doxygen documentation](https:\u002F\u002Ffaiss.ai\u002F) gives per-class information extracted from code comments\n- to reproduce results from our research papers, [Polysemous codes](https:\u002F\u002Farxiv.org\u002Fabs\u002F1609.01882) and [Billion-scale similarity search with GPUs](https:\u002F\u002Farxiv.org\u002Fabs\u002F1702.08734), refer to the [benchmarks README](benchs\u002FREADME.md). For [\nLink and code: Fast indexing with graphs and compact regression codes](https:\u002F\u002Farxiv.org\u002Fabs\u002F1804.09996), see the [link_and_code README](benchs\u002Flink_and_code)\n\n## Authors\n\nThe main authors of Faiss are:\n- [Hervé Jégou](https:\u002F\u002Fgithub.com\u002Fjegou) initiated the Faiss project and wrote its first implementation\n- [Matthijs Douze](https:\u002F\u002Fgithub.com\u002Fmdouze) implemented most of the CPU Faiss\n- [Jeff Johnson](https:\u002F\u002Fgithub.com\u002Fwickedfoo) implemented all of the GPU Faiss\n- [Lucas Hosseini](https:\u002F\u002Fgithub.com\u002Fbeauby) implemented the binary indexes and the build system\n- [Chengqi Deng](https:\u002F\u002Fgithub.com\u002FKinglittleQ) implemented NSG, NNdescent and much of the additive quantization code.\n- [Alexandr Guzhva](https:\u002F\u002Fgithub.com\u002Falexanderguzhva) many optimizations: SIMD, memory allocation and layout, fast decoding kernels for vector codecs, etc.\n- [Gergely Szilvasy](https:\u002F\u002Fgithub.com\u002Falgoriddle) build system, benchmarking framework.\n\n## Reference\n\nReferences to cite when you use Faiss in a research paper:\n```\n@article{douze2024faiss,\n      title={The Faiss library},\n      author={Matthijs Douze and Alexandr Guzhva and Chengqi Deng and Jeff Johnson and Gergely Szilvasy and Pierre-Emmanuel Mazaré and Maria Lomeli and Lucas Hosseini and Hervé Jégou},\n      year={2024},\n      eprint={2401.08281},\n      archivePrefix={arXiv},\n      primaryClass={cs.LG}\n}\n```\nFor the GPU version of Faiss, please cite:\n```\n@article{johnson2019billion,\n  title={Billion-scale similarity search with {GPUs}},\n  author={Johnson, Jeff and Douze, Matthijs and J{\\'e}gou, Herv{\\'e}},\n  journal={IEEE Transactions on Big Data},\n  volume={7},\n  number={3},\n  pages={535--547},\n  year={2019},\n  publisher={IEEE}\n}\n```\n\n## Join the Faiss community\n\nFor public discussion of Faiss or for questions, visit https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fdiscussions.\n\nWe monitor the [issues page](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fissues) of the repository.\nYou can report bugs, ask questions, etc.\n\n## Legal\n\nFaiss is MIT-licensed, refer to the [LICENSE file](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fblob\u002Fmain\u002FLICENSE) in the top level directory.\n\nCopyright © Meta Platforms, Inc.\n","# Faiss\n\nFaiss 是一个用于高效相似性搜索和稠密向量聚类的库。它包含可在任意规模向量集合上进行搜索的算法，甚至适用于可能无法完全加载到内存中的大规模数据集。此外，Faiss 还提供了评估和参数调优的相关支持代码。Faiss 使用 C++ 编写，并为 Python\u002Fnumpy 提供了完整的封装。其中一些最实用的算法已在 GPU 上实现。该库主要由 Meta 的 [Fundamental AI Research](https:\u002F\u002Fai.facebook.com\u002F) 团队开发。\n\n## 新闻\n\n有关最新功能的详细信息，请参阅 [CHANGELOG.md](CHANGELOG.md)。\n\n## 简介\n\nFaiss 提供了多种相似性搜索方法。它假设实例以向量形式表示，并通过整数标识；同时，这些向量可以使用 L2（欧几里得）距离或点积进行比较。与查询向量相似的向量是指那些与查询向量具有最小 L2 距离或最大点积的向量。Faiss 也支持余弦相似度，因为这实际上是在归一化向量上的点积。\n\n部分方法，例如基于二进制向量和紧凑量化码的方法，仅使用向量的压缩表示，无需保留原始向量。虽然这通常会降低搜索精度，但这些方法可以在单台服务器的主内存中扩展至数十亿个向量。其他方法，如 HNSW 和 NSG，则在原始向量之上构建索引结构，以提高搜索效率。\n\nGPU 实现既可以接受来自 CPU 内存的数据，也可以接受来自 GPU 内存的数据。在配备 GPU 的服务器上，GPU 索引可以作为 CPU 索引的直接替代品（例如，将 `IndexFlatL2` 替换为 `GpuIndexFlatL2`），并且 GPU 内存之间的数据拷贝会自动处理。然而，如果输入和输出都保留在 GPU 上，性能将会更快。Faiss 支持单 GPU 和多 GPU 使用。\n\n## 安装\n\nFaiss 为 Anaconda 提供了预编译的 Python 库，包括 [faiss-cpu](https:\u002F\u002Fanaconda.org\u002Fpytorch\u002Ffaiss-cpu)、[faiss-gpu](https:\u002F\u002Fanaconda.org\u002Fpytorch\u002Ffaiss-gpu) 和 [faiss-gpu-cuvs](https:\u002F\u002Fanaconda.org\u002Fpytorch\u002Ffaiss-gpu-cuvs)。该库主要用 C++ 实现，唯一的依赖是 [BLAS](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBasic_Linear_Algebra_Subprograms) 实现。可选的 GPU 支持通过 CUDA 或 AMD ROCm 提供，Python 接口也是可选的。NVIDIA 的 [cuVS](https:\u002F\u002Fgithub.com\u002Frapidsai\u002Fcuvs) 后端 GPU 实现也可以选择启用。Faiss 使用 cmake 进行编译。更多详情请参阅 [INSTALL.md](INSTALL.md)。\n\n## Faiss 的工作原理\n\nFaiss 以一种索引类型为核心，该索引类型存储一组向量，并提供基于 L2 距离和\u002F或点积比较的搜索功能。一些索引类型较为简单，例如精确搜索。大多数可用的索引结构代表了以下方面的权衡：\n\n- 搜索时间\n- 搜索质量\n- 每个索引向量占用的内存\n- 训练时间\n- 添加时间\n- 是否需要无监督训练的外部数据\n\n可选的 GPU 实现提供了目前（截至 2017 年 3 月）针对高维向量的最快精确和近似（压缩域）最近邻搜索实现、最快的 Lloyd k-means 算法以及已知最快的 k 最小值选择算法。[具体实现细节请参见此处](https:\u002F\u002Farxiv.org\u002Fabs\u002F1702.08734)。\n\n## Faiss 的完整文档\n\n以下是 Faiss 文档的入口：\n\n- 完整文档可在 [wiki 页面](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fwiki) 上找到，包括 [教程](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fwiki\u002FGetting-started)、[常见问题解答](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fwiki\u002FFAQ) 和 [故障排除部分](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fwiki\u002FTroubleshooting)。\n- [Doxygen 文档](https:\u002F\u002Ffaiss.ai\u002F) 提供从代码注释中提取的类级信息。\n- 若要复现我们的研究论文结果，包括 [多义编码](https:\u002F\u002Farxiv.org\u002Fabs\u002F1609.01882) 和 [使用 GPU 的十亿级相似性搜索](https:\u002F\u002Farxiv.org\u002Fabs\u002F1702.08734)，请参考 [基准测试 README](benchs\u002FREADME.md)。对于 [链接与代码：基于图和紧凑回归码的快速索引](https:\u002F\u002Farxiv.org\u002Fabs\u002F1804.09996)，请参阅 [link_and_code README](benchs\u002Flink_and_code)。\n\n## 作者\n\nFaiss 的主要作者如下：\n- [Hervé Jégou](https:\u002F\u002Fgithub.com\u002Fjegou) 发起了 Faiss 项目并编写了其首个实现。\n- [Matthijs Douze](https:\u002F\u002Fgithub.com\u002Fmdouze) 实现了大部分 CPU 版本的 Faiss。\n- [Jeff Johnson](https:\u002F\u002Fgithub.com\u002Fwickedfoo) 实现了全部 GPU 版本的 Faiss。\n- [Lucas Hosseini](https:\u002F\u002Fgithub.com\u002Fbeauby) 实现了二进制索引和构建系统。\n- [Chengqi Deng](https:\u002F\u002Fgithub.com\u002FKinglittleQ) 实现了 NSG、NNdescent 以及大量加性量化代码。\n- [Alexandr Guzhva](https:\u002F\u002Fgithub.com\u002Falexanderguzhva) 负责多项优化工作，包括 SIMD、内存分配与布局、向量编解码器的快速解码内核等。\n- [Gergely Szilvasy](https:\u002F\u002Fgithub.com\u002Falgoriddle) 负责构建系统和基准测试框架。\n\n## 参考文献\n\n在研究论文中使用 Faiss 时，请引用以下文献：\n```\n@article{douze2024faiss,\n      title={The Faiss library},\n      author={Matthijs Douze and Alexandr Guzhva and Chengqi Deng and Jeff Johnson and Gergely Szilvasy and Pierre-Emmanuel Mazaré and Maria Lomeli and Lucas Hosseini and Hervé Jégou},\n      year={2024},\n      eprint={2401.08281},\n      archivePrefix={arXiv},\n      primaryClass={cs.LG}\n}\n```\n\n对于 Faiss 的 GPU 版本，请引用：\n```\n@article{johnson2019billion,\n  title={Billion-scale similarity search with {GPUs}},\n  author={Johnson, Jeff and Douze, Matthijs and J{\\'e}gou, Herv{\\'e}},\n  journal={IEEE Transactions on Big Data},\n  volume={7},\n  number={3},\n  pages={535--547},\n  year={2019},\n  publisher={IEEE}\n}\n```\n\n## 加入 Faiss 社区\n\n如需公开讨论 Faiss 或提出问题，请访问 https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fdiscussions。\n\n我们也会监控仓库的 [问题页面](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fissues)，您可以在那里报告 bug、提问等。\n\n## 法律声明\n\nFaiss 采用 MIT 许可证授权，详情请参阅顶级目录下的 [LICENSE 文件](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fblob\u002Fmain\u002FLICENSE)。\n\n版权所有 © Meta Platforms, Inc.","# Faiss 快速上手指南\n\nFaiss 是一个由 Meta 开发的高效稠密向量相似度搜索与聚类库。它支持在海量向量集（甚至超出内存容量）中进行快速检索，提供多种索引算法以平衡搜索速度、精度和内存占用，并原生支持 GPU 加速。\n\n## 环境准备\n\n*   **操作系统**：Linux (推荐), macOS, Windows (部分功能受限)\n*   **语言环境**：Python 3.8+ (推荐通过 Anaconda\u002FMiniconda 管理)\n*   **核心依赖**：\n    *   **CPU 版本**：仅需基础 Python 环境，底层依赖 BLAS 线性代数库（Conda 包已内置）。\n    *   **GPU 版本**：需要 NVIDIA GPU 及对应的 CUDA Toolkit，或 AMD GPU 及 ROCm 环境。\n*   **硬件建议**：处理亿级向量时建议配备大容量内存；追求极致速度建议使用 NVIDIA GPU。\n\n## 安装步骤\n\n推荐使用 Conda 进行安装，这是最简便且依赖冲突最少的方式。国内用户可使用清华或中科大镜像源加速下载。\n\n### 1. 配置国内镜像源 (可选但推荐)\n```bash\nconda config --add channels https:\u002F\u002Fmirrors.tuna.tsinghua.edu.cn\u002Fanaconda\u002Fpkgs\u002Fmain\u002F\nconda config --add channels https:\u002F\u002Fmirrors.tuna.tsinghua.edu.cn\u002Fanaconda\u002Fpkgs\u002Ffree\u002F\nconda config --set show_channel_urls yes\n```\n\n### 2. 安装 CPU 版本\n适用于无 GPU 环境或中小规模数据检索。\n```bash\nconda install -c pytorch faiss-cpu\n```\n\n### 3. 安装 GPU 版本\n适用于拥有 NVIDIA GPU 的环境，可大幅提升检索和训练速度。\n```bash\nconda install -c pytorch -c nvidia faiss-gpu\n```\n*(注：若使用 AMD ROCm 环境，请参考官方文档安装 `faiss-gpu-rocm`)*\n\n## 基本使用\n\n以下示例演示如何构建一个简单的扁平化索引（Exact Search），添加向量数据，并执行相似度搜索。\n\n```python\nimport numpy as np\nimport faiss\n\n# 1. 准备数据\n# 假设我们有 1000 条数据，每条数据是 128 维的浮点向量 (float32)\nd = 128                           # 向量维度\nnb = 1000                         # 数据库向量数量\nnp.random.seed(1234)              # 设置随机种子以保证结果可复现\nxb = np.random.random((nb, d)).astype('float32')\n# Faiss 要求向量矩阵行对齐，通常不需要额外操作，但确保是 float32 类型至关重要\n\n# 2. 创建索引\n# 使用 L2 距离 (欧几里得距离) 的暴力搜索索引\nindex = faiss.IndexFlatL2(d)      \n\n# 3. 添加向量到索引\nprint(f\"索引初始数量：{index.ntotal}\")\nindex.add(xb)                     \nprint(f\"添加后数量：{index.ntotal}\")\n\n# 4. 执行搜索\n# 假设有 5 条查询向量\nnq = 5\nxq = np.random.random((nq, d)).astype('float32')\n\nk = 4                             # 返回每个查询最近的 4 个邻居\nD, I = index.search(xq, k)        # D: 距离矩阵，I: 索引编号矩阵\n\n# 5. 查看结果\nprint(\"查询向量的最近邻索引编号:\")\nprint(I)\nprint(\"对应的距离值:\")\nprint(D)\n```\n\n**进阶提示**：\n*   若需使用余弦相似度，请先对向量进行归一化处理 (`faiss.normalize_L2`)，然后使用 `IndexFlatIP` (内积)。\n*   对于大规模数据（百万\u002F亿级），请探索 `IndexIVFFlat`、`IndexHNSW` 等近似搜索索引以节省内存并提升速度。\n*   启用 GPU 加速只需将索引类替换为 `faiss.GpuIndexFlatL2` (需先初始化 `GpuResources`)。","某大型电商平台的推荐团队需要为千万级商品库构建实时“以图搜图”功能，以便用户上传图片后能毫秒级找到视觉相似的商品。\n\n### 没有 faiss 时\n- 面对千万级高维图像向量，传统线性扫描算法响应时间长达数秒，完全无法满足在线服务的低延迟要求。\n- 全量向量数据占用巨大内存，单台服务器无法承载，被迫搭建复杂的分布式集群，运维成本高昂。\n- 为了强行提升速度不得不大幅降低搜索精度，导致推荐结果相关性差，严重拖累用户转化率。\n- 缺乏高效的聚类与参数调优工具，算法迭代周期长，工程师需花费大量时间手写底层优化代码。\n\n### 使用 faiss 后\n- 借助 HNSW 等索引结构及 GPU 加速能力，faiss 将亿级向量的检索延迟压缩至毫秒级，实现丝滑的实时交互体验。\n- 利用乘积量化（Product Quantization）技术，faiss 在保持较高精度的同时将内存占用压缩数十倍，单机即可承载海量数据。\n- 支持灵活的精度与速度权衡配置，团队可根据业务场景动态调整，确保推荐结果既快又准。\n- 内置丰富的评估与自动调参工具，让算法验证流程标准化，研发效率显著提升，不再重复造轮子。\n\nfaiss 通过极致的向量检索性能与内存优化，让大规模 AI 应用从“理论可行”真正变为“生产可用”。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ffacebookresearch_faiss_3b6317e1.png","facebookresearch","Meta Research","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Ffacebookresearch_449342bd.png","",null,"https:\u002F\u002Fopensource.fb.com","https:\u002F\u002Fgithub.com\u002Ffacebookresearch",[80,84,88,92,96,100,103,106,110,114],{"name":81,"color":82,"percentage":83},"C++","#f34b7d",59.6,{"name":85,"color":86,"percentage":87},"Python","#3572A5",21.8,{"name":89,"color":90,"percentage":91},"Cuda","#3A4E3A",14.6,{"name":93,"color":94,"percentage":95},"C","#555555",1.4,{"name":97,"color":98,"percentage":99},"CMake","#DA3434",1.2,{"name":101,"color":76,"percentage":102},"SWIG",0.5,{"name":104,"color":105,"percentage":102},"Shell","#89e051",{"name":107,"color":108,"percentage":109},"Jupyter Notebook","#DA5B0B",0.4,{"name":111,"color":112,"percentage":113},"Batchfile","#C1F12E",0,{"name":115,"color":116,"percentage":113},"Dockerfile","#384d54",39738,4331,"2026-04-16T12:33:49","MIT","未说明","非必需。可选支持 NVIDIA GPU (CUDA) 或 AMD GPU (ROCm)。具体显存大小和 CUDA\u002FROCm 版本未在文中明确指定，需参考 INSTALL.md。","未说明（支持处理超出内存大小的数据集，但具体最低\u002F推荐配置未提及）",{"notes":125,"python":126,"dependencies":127},"该库主要用 C++ 编写，核心依赖是 BLAS 线性代数库实现。可通过 Anaconda 直接安装预编译的 CPU 或 GPU 版本（faiss-cpu, faiss-gpu）。GPU 版本可作为 CPU 版本的直接替代品使用，自动处理内存拷贝，但若输入输出均保留在 GPU 上速度更快。详细编译和安装步骤需查看 INSTALL.md 文件。","未说明（提供 Python\u002Fnumpy 封装及 Anaconda 预编译包）",[128,129,130,131],"BLAS 实现 (必需)","CMake (编译需要)","CUDA 或 ROCm (GPU 支持可选)","cuVS (NVIDIA 后端可选)",[14,16],"2026-03-27T02:49:30.150509","2026-04-17T08:25:03.198047",[136,141,146,151,156,161],{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},36932,"遇到 'No module named '_swigfaiss'' 错误该如何解决？","该错误通常发生在 macOS 或 Windows 上使用 conda 安装时。\n1. **macOS 用户**：需要先安装 libomp，运行命令 `brew install libomp`。\n2. **Windows 用户**：确保安装了正确的 Visual C++ 运行库，或者尝试重新安装 faiss-cpu。\n3. **通用检查**：确认安装的包名是否正确（如 `faiss-cpu` 或 `faiss-gpu`），避免导入错误的模块名（如 `swigfaiss_gpu` 当只安装了 CPU 版本时）。","https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fissues\u002F485",{"id":142,"question_zh":143,"answer_zh":144,"source_url":145},36933,"运行 GPU 索引时出现 'faiss::gpu::runMatrixMult failure' 或 CUBLAS 错误怎么办？","这通常是由于 CUDA 环境配置不一致导致的。\n1. **检查版本一致性**：确保 `nvcc --version` 显示的编译版本与 `nvidia-smi` 显示的驱动支持版本一致。如果不一致，请调整 nvcc 版本以匹配显卡驱动。\n2. **重新安装**：尝试使用 conda 重新安装 GPU 版本：`conda install -c conda-forge faiss-gpu`。\n3. **验证环境**：确认 CUDA Toolkit 版本与 Faiss 编译时的要求相匹配。","https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fissues\u002F34",{"id":147,"question_zh":148,"answer_zh":149,"source_url":150},36934,"如何在 Apple M1 (ARM64) 芯片上安装和使用 Faiss？","目前 conda-forge 已经提供了适用于 `osx-arm64` 的 Faiss 构建包。\n1. **推荐方式**：直接通过 conda 安装：`conda install -c conda-forge faiss`（确保环境架构为 arm64）。\n2. **手动编译**：如果 conda 包不可用，可以参考社区提供的 gist 进行手动编译，但需注意可能会遇到 SIGSEGV 崩溃问题，建议优先使用官方或 conda-forge 发布的预编译包。\n3. **测试工件**：如果需要测试特定版本，可以从 conda-forge 的 Azure 构建页面下载 osx-arm64 的 artifact 进行验证。","https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fissues\u002F1773",{"id":152,"question_zh":153,"answer_zh":154,"source_url":155},36935,"使用 GpuIndexCagra 构建索引时，如何避免数据集占用过多 GPU 内存？","`store_dataset` 参数主要用于控制是否将数据集附加到索引中以支持重构，但并不一定能完全阻止构建过程中的临时内存峰值。\n1. **使用内存映射**：建议使用 numpy 的 `mmap` 功能加载数据集，这样可以显著降低 GPU 内存峰值（例如从 10.5GB 降至 5GB 左右），因为数据可以保留在 CPU 内存或磁盘中。\n2. **版本更新**：该问题在较新的 cuvs 版本（如 25.06 nightly）中已得到修复，内存开销大幅降低，建议升级到最新版本。\n3. **注意**：目前完全在不加载数据到 GPU 且不使用磁盘的情况下构建大型 CAGRA 索引较为困难，`mmap` 是目前的最佳实践。","https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fissues\u002F4274",{"id":157,"question_zh":158,"answer_zh":159,"source_url":160},36936,"在 GPU 上训练 IVFPQ 索引时遇到 CUBLAS_STATUS_EXECUTION_FAILED (Error 13) 错误？","此错误通常表示矩阵乘法执行失败，可能由显存不足或维度不匹配引起。\n1. **检查显存**：确保 GPU 有足够的空闲显存来容纳训练过程中的中间张量。对于高维数据（如 768 维）和大量数据点，可能需要更大的显存。\n2. **调整批次大小**：尝试减少训练时的批次大小或分块处理数据。\n3. **验证维度**：检查输入数据的维度是否符合 Faiss GPU 后端的要求，确保没有发生形状广播错误。\n4. **环境检查**：同 Issue #34，确认 CUDA 和 cuBLAS 库版本兼容且工作正常。","https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fissues\u002F2064",{"id":162,"question_zh":163,"answer_zh":164,"source_url":140},36937,"Windows 上安装 faiss-cpu 后导入时报 'DLL load failed: 找不到指定的模块' 如何解决？","这是 Windows 上常见的依赖缺失问题。\n1. **安装运行库**：确保安装了最新版的 Microsoft Visual C++ Redistributable for Visual Studio。\n2. **检查路径**：确认 Anaconda\u002FPython 环境路径中没有特殊字符或空格，且环境变量配置正确。\n3. **重新安装**：尝试卸载后重新安装：`pip uninstall faiss-cpu` 然后 `pip install faiss-cpu`（或使用 conda：`conda install -c pytorch faiss-cpu`）。\n4. **版本匹配**：确保 Python 版本与下载的 faiss 轮子文件（wheel）兼容（例如 Python 3.6, 3.8 等对应的版本）。",[166,171,176,181,186,191,196,201,206,211,216,221,226,231,235,239,243,248,252,257],{"id":167,"version":168,"summary_zh":169,"released_at":170},297344,"v1.14.1","## [1.14.0] - 2026-03-06\n\n新增\n- 6cf2c63bc3953c31476a7e0330e61d09d79c96d9 将 SVS 更新至 v0.2.0，并从 conda forge 安装 (#4860)\n- 1cb3d4653f43f546bcab5c6798acf835f1bf05b9 特性(svs): 增加 LeanVec 的 OOD 支持 (#4773)\n- 5cf2c4203f0e52f67504f154ae4dbea84906bc1f 向 C API 暴露 IndexBinaryFlat。(#4834)\n- db9ba35118d5230f92d466e17e19f5019ff8601d 添加哈达玛变换作为 IVF 的索引类型 (#4856)\n\n变更\n- c8579de513a02198e90c6a9defb42e2900240fe7 尝试强制使用相对导入语句 (#4878)\n- 471ddad72cb617dcce9f11966ed991a71609d49b 版本号递增至下一个发布版，v1.14.1 (#4861)\n- c90c9dc544a8a82108d6499d7fafb3c3dc6fda2f 更新 Python 版本，加入 3.13 和 3.14 (#4859)\n- 8af77fe730f141d58fa7b0de8d3a33663e8c4b23 对多比特 RaBitQ 内积进行 SIMD 优化 (#4850)\n- ccc934f58660f42da677d5c253b550e61b153d5f ScalarQuantizer: 将 SIMD 特化拆分为针对不同 SIMD 的 TU 加上 DD 分发逻辑 (#4839)\n\n修复\n- 5622e93733b64b2e033362dbdfda019b2ab33ef0 (HEAD -> main, origin\u002Fmain, origin\u002FHEAD) v1.14.1 修复构建发布问题 (#4876)\n- 8431e04f88c22b59f769a94cb7415dc56756e32d 在多比特 RaBitQ 中用直接点积替换平方距离的 IP 计算 (#4877)\n- 28f79bd98efcb00c2bbf50a7eb30abc507ae49b6 修复 SWIG 4.4 多阶段初始化：将 import_array() 替换为 import_array1(-1) (#4846)\n\n已弃用\n- d2f8d3514003986ec9ed37c9b29d70818ccf686a 移除 conda-forge 安装文档 (#4843)","2026-03-06T17:49:04",{"id":172,"version":173,"summary_zh":174,"released_at":175},297345,"v1.14.0","## [1.14.0] - 2026-03-02\n\n新增\n- 为 faiss 包添加 PEP 561 Python 类型存根 (#4840)\n- 在 INSTALL.md 的安装命令中添加 conda-forge 频道 (#4819)\n- 在 Python 初始化中添加 post_init_hook 调用 (#4795)\n- 为距离函数添加 ARM SVE 支持 (#4798)\n- 添加动态分派的 OSS CI 工作流 (#4779)\n- 添加 IndexFlatIPPanorama (#4787)\n- 添加用于测量 ResultHandler 开销的基准测试 (#4778)\n- 多样性过滤器的示例 (#4765)\n- 添加 SVS 二进制大小比较演示及文档 (#4777)\n- 为 IndexIVFRaBitQFastScan 添加 InvertedListScanner 支持 (#4760)\n- 添加全面的 ScalarQuantizer 正确性测试 (#4766)\n- 为 knn_extra_metrics() 添加 IDSelector (#4753)\n- 为 K-means 聚类添加提前停止功能 (#4741)\n- 添加 K-means++ 和 AFK-MC² 质心初始化方法 (#4740)\n\n变更\n- ScalarQuantizer：重构 SIMDWIDTH int → SIMDLevel 枚举 (#4838)\n- 将 IndexIVFPQ 扫描器辅助函数合并到模板化 lambda 中 (#4836)\n- 暂时禁用 RaBitQ FastScan 的向后兼容性测试 (#4841)\n- 通过将辅助数据嵌入 SIMD 块中来消除 flat_storage (#4816)\n- 重新设计 PQ 代码的距离计算以支持动态分派 (#4808)\n- fbcode\u002Ffaiss\u002Fimpl (#4832)\n- fbcode\u002Ffaiss\u002Futils\u002Fsimd_impl (#4833)\n- fbcode\u002Ffaiss\u002FIndexFlat.cpp (#4831)\n- fbcode\u002Ffaiss (#4829)\n- 实现 IVFRaBitQFastScanScanner 的 distance_to_code 方法 (#4822)\n- 为 IVFPQFastScan 反转列表扫描器实现 distance_to_code 方法 (#4821)\n- 使 dispatch_VectorDistance 更加紧凑 (#4820)\n- 更新调用方以使用 read_index_up API (#4818)\n- fbcode\u002Ffaiss\u002Futils\u002Fsimd_impl\u002Fdistances_avx2.cpp (#4813)\n- fbcode\u002Ffaiss\u002Fimpl\u002FPolysemousTraining.cpp (#4814)\n- fbcode\u002Ffaiss\u002Futils\u002Fsorting.cpp (#4815)\n- 如果 ntotal 较大，则将 VisitedTable 替换为 unordered_set (#4735)\n- 具有 AVX512 的结果处理器 (#4806)\n- 将分派层提升一级 (#4802)\n- 动态分派 distances_simd (#4781)\n- 引入带有 SIMDConfig 的动态分派基础设施 (#4780)\n- 使运行时模板选择更加紧凑 (#4793)\n- 为 IndexBinary 支持 SearchParameters 参数 (#4761)\n- 支持 RaBitQ 索引的分片功能 (#4790)\n- 重构 ScalarQuantizer 头文件以使用 SIMD 包装类型 (#4772)\n- 将 ScalarQuantizer.cpp 拆分为模块化头文件（无操作）(#4786)\n- 将 factory_tools 移至主库并修复未对齐的 SIMD 存储问题 (#4782)\n- 内联扫描代码以加速距离计算 (#4785)\n- 启用 Faiss 的内部使用 (#4737)\n- 解决 SQ 正确性测试的评审意见 (#4771)\n- 启用 svs 运行时 conda 包而非 tarball 的使用 (#4747)\n- 适用于大多数索引的通用结果处理器 (#4762)\n- 在 IndexLSH 中使用 nth_element 计算中位数 (#4653)\n- 将 RaBitQ 索引中的默认 qb 从 0 改为 4 (#4757)\n- 将 reorder_2_heaps() 移至 Heap.h 文件中 (#4752)\n- 因 codemod 而改进命名。simd_result_handlers (#4351)\n- 为 IndexIVFFlatPanorama 添加点积相似度度量支持 (#4732)\n- Panorama 重构及代码清理 (#4728)\n- 更新序列化向后兼容性 t","2026-03-03T03:19:33",{"id":177,"version":178,"summary_zh":179,"released_at":180},297346,"v1.13.2","## [1.13.2] - 2025-12-19\n\n新增\n- 033e6acc6995d1adb9ea5317fadff152df3116bc 添加 RaBitQStats，用于跟踪两阶段搜索的过滤效果 (#4723)\n- 64a236744b9ec4ca18d6b5d4e21c898f861a242a 为 IndexIVFRaBitQFastScan 添加多比特支持 (#4722)\n- cd2af8bc37628ac63dad736067200ac1291a77e7 实现 `IndexRefinePanorama` (#4683)\n- 18d20febb579788be74724cd5a0bbc71632f978b 为 IndexRaBitQFastScan 添加多比特支持 (#4721)\n- 7372bc7982e6d15cd2048744094d510ddeb7495b 重新应用 `IndexHNSWFlatPanorama`，并实现向后兼容的序列化 (#4692)\n- 1721ebff6de6ed5a8481302123479be9d85059a2 同时添加对二进制文件的向后兼容性检查 (#4714)\n- 98bf8b3808ba325660006623afe177951579f3d9 实现剩余的 `IndexFlatPanorama` 函数 (#4694)\n- a695814f4c108a2ba7a82da9ac2b526b1fff118c 启用 Intel ScalableVectorSearch 支持 (#4548)\n- d81a08e2409bb0ec2d2d6a2442d4beb7b2a8cbc9 索引序列化向后兼容性测试 (#4706)\n\n更改\n- 9a6c02b061c4142a8e566d9d3360326140c95ad8 重命名 RaBitQ 因子结构体以提高清晰度，并重新组织测试 (#4730)\n- 281a999abab90aed5b145b193aaff043b52045c2 在 Faiss 中启用 cuVS (#4729)\n- 6452d192cfaf67faf21808c285dfad1ec13b3d39 将 SVS 二进制文件更新至 v0.1.0 (#4726)\n- 1ea99d8073bfd5d20bfee4d63c4bb049b7d63154 清理序列化测试 (#4700)\n- 89dd5a7b4ec9eb1f8c540828fc93c540f74c6699 在 faiss\u002FPACKAGE 中启用 `-Wunused-exception-parameter`\n\n修复\n- 5b19fca3f057b837ac898af52a8eb801c4744892 允许覆盖质心文件，以缓解 [S603653] 问题 (#4725)\n- 337dfe8043a9bd9b8f4e2f3ec3c23fffb7b02654 修复演示、基准测试及其他目录中的拼写错误 (#4719)\n- aea2b6bc8543f8a9b1b38e537cd55bcd9f6eb059 修复：INSTALL.md 中指向 SVS 的链接损坏 (#4724)\n- 4627695179e304adba1addd342355f366500149c 修复 SVS Python 教程 (#4720)\n- ac2e3abe3890fc7eaff06888878915bbda9c25b0 更新 CMake 构建系统的 c_api 安装文档 (#4702)\n- abc294419ae2d235aea4a15813e168e742e34995 修复因重命名避免 lint 检查而导致的测试中断 (#4712)\n- 3d4d59fc3bd1986b31334c1a8bc6192a773b5666 修复演示、基准测试及其他目录中的拼写错误 (#4709)","2025-12-19T23:41:59",{"id":182,"version":183,"summary_zh":184,"released_at":185},297347,"v1.13.1","新增\n- 添加数据集 DINO10B (#4686)\n- 实现多比特 RaBitQ 量化（nb_bits 2-9）(#4679)\n- 在 test_flat_l2_panorama.py 中添加版权头信息 (#4688)\n- 将 Panorama 集成到 `IndexHNSWFlatPanorama` 中 (#4621)\n- 实现 `IndexFlatL2Panorama` (#4645)\n\n\n变更\n- 用于计算百分位数的钳制变量 (#4687)\n- 移除未使用的变量\n- 恢复 D85902427 (#4690)\n- 优化 ScalarQuantizer (#4652)\n- 更新注释，以澄清 GpuClonerOptions.h 中 useFloat16 的用法 (#4682)\n- StandardGpuResources.cpp 中的 facebook-hte-SharedPtrFromNew (#4680)\n\n\n修复\n- 修复 faiss\u002Fgpu\u002FGpuIcmEncoder.cu 中已弃用的 this 捕获问题 +1\n- 重构分片逻辑，避免内存溢出 (#4678)\n- 修复 exhaustive_L2sqr_blas 中显著的 GOMP barrier 开销 (#4663)\n- 修复 tests 和 contrib 目录中的拼写错误 (#4672)","2025-12-03T00:02:15",{"id":187,"version":188,"summary_zh":189,"released_at":190},297348,"v1.13.0","**完整更新日志**: https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fcompare\u002Fv1.12.0...v1.13.0\n\n新增\n2cf82cabf2b2150ca76b9949377b484f109a94d1 实现 PanoramaStats (#4628)\n859127cd0b5e9f2ee52e095211202b0f5dbb6414 为 `IndexIVFFlatPanorama` 实现序列化 (#4636)\n7744239dc59c0cc9c665949f0d533daac40e567a 在 PCAMatrix C API 中添加 balanced_bins 的 getter\u002Fsetter，解决 issue #4617 (#4630)\ne6510bd00478d563e380604374f41a27e8697ce6 添加在应用 autoclose 标签时的即时通知 (#4624)\nf983e3ab69c46ecb7728395613ace22729bbd4a8 将 Panorama 集成到 `IndexIVFFlatPanorama` 中 (#4606)\n3af3e00103079554b1071d2dcea7ccedc9693a44 实现 IndexIVFRaBitQFastScan (#4596)\nf58fd4c8ca0fdf6c230c062ed70b93586ae9ec28 为 IVFPQFastScan 添加 InvertedListScanner (#4537)\n01d394e5837f10c6270c7284c9f5e306c5cd87c4 RaBitQ Fast Scan (#4595)\n752832cac9c4038f52916a0ed2a839401671ce00 添加缺失的 Thrust 头文件 (#4597)\n6470b8d9d0f9c0adc71df6d5a1ce64199be85305 稍微简化 RaBitQ，提升速度和召回率 (#4550)\nbc3e3a1ef1464f1b90c6aa4ba4f075582e4f539a RaBitQ：简化 SIMD 辅助函数，使用更快的 popcount 计算文档侧的总和 (#4573)\nb7c88eaff82766c69cd3ab7a3a57fa4d4efb603f 为 rabitq_simd.h 添加微基准测试 (#4572)\n786e4051fc7940825e8f6f5247bc269f4bc8bd11 增加 RaBitQ 对 SIMD 代码路径的测试覆盖率 (#4571)\nfa5532734e40dbf66b571634ff597fe314ace054 在扩展 API 中添加 Idx 标签 (#4532)\nfbbb290a5762e265a501324b3bfeb04c1cb5b006 从 CAGRA 参数中设置 NN Descent 度量标准 (#4540)\n514b44fca8542bafe8640adcbf1cccce1900f74c OSS 变更：启用 ROCm 在 BUCK 上与 Faiss 配合使用 (#4485)\n\n\n变更\na9cc039aed084bfb824a84eb7fc749ff0e84370c 将 cuVS 升级至 25.10，并使用 CUDA=12.6 构建软件包 (#4639)\n6ca45d23a7c10761d380daa6b4029c347f30e4ef 优化 IVFRaBitQFastScan 查询因子：将 n*nlist 改为 n*nprobe (#4643)\n49df7737f868eeb75df450718fc1155d93c43d35 更新 GitHub 工作流以使用 clang-format-21 (#4644)\na0bd7aac694cd43e3ba0a371cbd7bacf31ded564 使用 clang-format | 用 clang-format 21 格式化 fbsource。\n595c8aa8a23815abd3682a2c08b0b359b37eb621 允许未对齐的快速扫描 (#4623)\n4fab13c9c67b5402343ca722c83ff7a65a9a48ba 将 Faiss OSS 方面升级至 numpy2 (#4523)\n2505168e1870318126aee2ac2cb416b1fe55376f 向 CAGRA 公开剩余的 IVF-PQ 参数 (#4593)\n1ed2611c032fe2c509b0f781ee8eee3760142e52 从 faiss 目录文件中移除未使用的导入 (#4565)\ne5de66e2c24c319e73df22858b520fcfa269d300 在 CMake FindPython 中使用 Development.Module 组件 (#4549)\n3c7235c6c7040c1c09e39095cc60d794f73b4a35 更新安装文档，注明正确的 cuVS 版本 (#4547)\nf361df8385ccbf9c47b85a6f8e45c71f8f656283 在头文件中仅使用 c++11 (#4421)\ndd637c98d60f51b96c9d2457ebfa319e3f881a47 将扩展 API 的后缀由 `Ex` 改为 `_ex` (#4530)\n\n\n修复\nd94c33065a240e460603352770ec6aa2dc70b8cf 杂项：修复部分文件中的错别字 (#4669)\n5d9f8d484cffd0961c374c1c7253c8c406b889df 在第二次审查中发现并修复了更多错别字 (#4667)\n451ca8429d39f82ed6a933ac874068fa5f13252c 修复文档和教程中的错别字","2025-11-12T17:18:44",{"id":192,"version":193,"summary_zh":194,"released_at":195},297349,"v1.12.0","## v1.12.0\n\n\n新增\n- 为扩展 API 添加 `Ex` 后缀 (#4512)\n- SIMD 优化 RaBitQ (#4515)\n- 使用 NN Descent 的二进制 CAGRA (#4445)\n- BinaryHNSWCagra 结构体；允许仅使用基础层级 (#4478)\n- 在 Dockerfile 中添加 libgflags-dev (#4460)\n- 尝试为配备 CUDA 12.4 的 Faiss 经典 GPU 版本添加夜间 Conda 发布 (#4442)\n- 为 Cagra fp16 添加 IndexIDMap 支持 (#4411)\n- Faiss + Cuvs 示例笔记本 (#4434)\n- top-k 结果处理器的共同祖先 (#4414)\n- 将 rabitq 添加到反向工厂字符串，以便遥测包装器能够记录它 (#4428)\n- 添加静态链接 CUDA 的选项 (#4422)\n- 支持 IVF 中的额外度量标准 (#4409)\n- 在多个 IVF 索引中支持 decode_vectors（sa_decode，但不包括 decode_listnos）(#4400)\n- 添加绕过方案，在 numpy.distutils 不可用时检查 SVE 支持 (#4416)\n- Dsweet\u002Fgowers 距离 (#4371)\n- cuVS Cagra FP16 支持 (#4384)\n- 添加 cuVS 滤波器转换工具 (#4378)\n- GpuIndexBinaryCagra - 二进制 CAGRA 索引 (#4331)\n- 为 GpuIndexCagra 添加 guarantee_connectivity 参数 (#4388)\n- 为 FlatIndex 类添加虚析构函数 (#4381)\n- 在使用 `IndexNSG` 时，为支持预构建 KNN 添加单元测试 (#4368)\n- 将 \"own_invlists\" 传递给 IVF 索引构造函数 (#4353)\n- 添加新的 centroid_id_column，以支持 previous_assignment_table (#4343)\n- 将 IVF 质心复制到主机端，供 CPU 量化器使用 (#4336)\n- 向 C API 公开 IndexBinaryIVF (#4302)\n- 将 rabitq 基准测试纳入源代码管理 (#4307)\n\n\n变更\n- 从 IndexPQ.cpp 中移除未使用的 cmath 包含文件 (#4518)\n- 允许奇数度的二进制 CAGRA 图转换为 HNSW (#4516)\n- 从 Index2Layer.cpp 中移除未使用的 cassert 和 cmath 头文件 (#4514)\n- 从 AutoTune.cpp 和 clone_index.cpp 中移除未使用的头文件 (#4513)\n- 从 IndexBinaryHNSW.cpp 中移除未使用的导入头文件 (#4507)\n- 从 IndexBinaryHash.cpp 中移除未使用的导入头文件 (#4506)\n- 从 IndexIDMap.cpp 中移除未使用的导入头文件 (#4505)\n- 从 AutoTune.cpp 中移除未使用的导入头文件 (#4504)\n- 使 GpuIndexCagra 在转换为 CPU 索引时重用现有内存块 (#4477)\n- 从 index_io.h 中移除未使用的标准库包含文件 (#4495)\n- 从 Index.h 中移除未使用的标准库包含文件 (#4494)\n- 从 IndexBinary.h 中移除未使用的标准库包含文件 (#4493)\n- 从 MetricType.h 中移除未使用的 platform_macros.h 包含文件 (#4490)\n- fbcode\u002F\u002Ffaiss:faiss (#4462)\n- fbcode\u002F\u002Ffaiss\u002Fgpu:faiss (#4463)\n- fbcode\u002F\u002Ffaiss\u002Fgpu\u002Ftest:test_utils (#4464)\n- Cagra 中 `numeric_type_` 的读写向后兼容性 (#4441)\n- 将 cuVS 版本升级至 25.08 (#4394)\n- 改善 residual_quantizer_encode_steps.cpp 文件的命名 (#4433)\n- GitHub Actions：将 windows-2019 升级至 windows-2022 (#4417)\n- 更新 faiss_bench_fw 中 submitit 的依赖项 (#4410)\n- 提高 cuVS 在 GPU 上的 top-k 限制 (#4325)\n- 让 IndexShards 将 SearchParams 传递下去 (#4387)\n- 将 faiss::ZeroCopyIOReader 中的 uint8_t* 更改为 const uint8_t* (#4376)\n- 为更多 InvertedListScanner 实现设置 code_size (","2025-08-12T16:46:55",{"id":197,"version":198,"summary_zh":199,"released_at":200},297350,"v1.11.0","新增\n - RaBitQ 实现 (#4235)\n - 将 RaBitQ 添加到 swigfaiss，以便在 Python 中正确访问其属性 (#4304)\n - 在编解码器文件路径中添加日期和时间，以避免每次运行时覆盖文件 (#4303)\n - 在 faiss\u002FCMakeLists.txt 中添加缺失的头文件 (#4285)\n - 将 is_spherical 和 normalize_L2 布尔值作为训练 API 的一部分实现 (#4279)\n - 向分布式训练 API 添加 normalize_l2 布尔值\n - 重新合并 mmap 差异 (#4250)\n - IndexBinaryFlat 的 SearchParameters 支持 (#4055)\n - 在嵌入读取器中支持非分区列和映射 (#4229)\n - 支持训练向量的余弦距离 (#4227)\n - 在 code_distance-sve.h 中添加缺失的 #include (#4219)\n - 为 Cagra 索引添加对 IndexIDMap 的支持 (#4188)\n - 为 HNSW 的 nb_neighbors 添加边界检查 (#4185)\n - 为 IVF 索引添加分片便捷函数 (#4150)\n - 除了 MSVC 外，还增加了对 MinGW 构建的支持 (#4145)\n\n变更\n - 在 AIX 中跳过 mmap 测试用例。(#4275)\n - 恰当地处理驱动程序不足的情况 (#4271)\n - 放宽 IndexIVFRaBitQ::get_InvertedListScanner() 的输入参数限制 (#4270)\n - 允许使用自定义索引读取器和写入器 (#4180)\n - 升级到 libcuvs=25.04 (#4164)\n - 忽略正则表达式 (#4264)\n - 将 C API 发布到 Conda (#4186)\n - 将行过滤器传递给 Hive 读取器以过滤行 (#4256)\n - 取消“与内部仓库合并测试” (#4244)\n - 与内部仓库合并测试 (#4242)\n - 还原 D69972250：内存映射和零拷贝反序列化器\n - 还原 D69984379：内存映射和零拷贝 Python 修复\n - 内存映射和零拷贝 Python 修复 (#4212)\n - 内存映射和零拷贝反序列化器 (#4199)\n - 在 faiss\u002Fgpu\u002FStandardGpuResources.cpp 中使用 `nullptr` (#4232)\n - 将头文件中的静态方法内联化 (#4214)\n - 为 ARM 架构升级 openblas 到 0.3.29 (#4203)\n - 将 `store_dataset` 参数传递给 cuVS CAGRA (#4173)\n - 在 HNSW 搜索中处理普通的 SearchParameters (#4167)\n - 更新 INSTALL.md 以移除部分 raft 引用，并添加缺失的依赖项 (#4176)\n - 更新 README.md (#4169)\n - 更新 CAGRA 文档 (#4152)\n - 在 C_API 中公开 IDSelectorBitmap (#4158)\n\n修复\n - 修复：向量在分片上的分布算法 (#4299)\n - 修复 IndexNSG 中的 int32 溢出问题 (#4297)\n - 修复条件逻辑中的类型错误 (#4294)\n - faiss\u002Fgpu\u002FGpuAutoTune.cpp：修复 llvm-19-exposed -Wunused-but-set-variable 警告\n - 通过固定 conda-build 版本来防止 25.3.2 中的回归，从而修复夜间构建 (#4287)\n - 修复 CQS 信号。Id] 88153895 -- fbcode\u002Ffaiss 中的 readability-redundant-string-init (#4283)\n - 修复 mapped_io.cpp 中“未实现”占位符的问题 (#4268)\n - 修复 bug：raft\u002Fcuvs 的 IVFPQ 不需要冗余检查 (#4241)\n - 修复 RaBitQ 中的序列化问题 (#4261)\n - 修复 FlatIndexHNSW 中的语法错误 (#4253)\n - 修复 faiss\u002Fgpu\u002Fimpl\u002FDistanceUtils.cuh +10 中 CUDA 内核索引数据类型的错误 (#4246)\n - 修复 `ARM` 架构上 `IVFPQFastScan::RangeSearch()` 的问题 (#4247)\n - 修复整数溢出","2025-04-25T14:13:55",{"id":202,"version":203,"summary_zh":204,"released_at":205},297351,"v1.10.0","### 新增\n- 在数据集描述符中添加 desc_name (#3935)\n- 为 ResidualQuantizer 实现 ST_norm_from_LUT (#3917)\n- 添加如何构建、链接和测试外部 SWIG 模块的示例 (#3922)\n- 添加版权头文件 (#3948)\n- 添加一些 SVE 实现 (#3933)\n- 启用 lint 检查：修改 lint 配置并添加 arc lint 命令 (#3966)\n- 重新添加如何构建、链接和测试外部 SWIG 模块的示例 (#3981)\n- 示例：IndexPQ：将码本与编码分离 (#3987)\n- 将所有包装的索引添加到 index_read 中 (#3988)\n- 添加 ValidityCheck AlignedTableTightAlloc 的 clear 方法 (#3997)\n- 将索引二进制文件添加到遥测中 (#4001)\n- 在 C API 中添加从文件名读取 VectorTransform 的功能 (#3970)\n- 在示例中添加 IndexLSH (#4009)\n- 将分布式 k-means 的质心和分配结果写入 Hive 表 (#4017)\n- 在数据集描述符中引入数据划分 (#4012)\n- Faiss GPU：支持 bfloat16 暴力 kNN (#4018)\n- 支持 ROCm 的 bfloat16 (#4039)\n- 为 distances_simd.cpp 编写单元测试 (#4058)\n- 添加用于 GPU 的 cuda-toolkit (#4057)\n- 为 IndexHNSW 添加更多单元测试 [1\u002F1] (#4054)\n- 为 IndexHNSW 添加更多单元测试 [2\u002F1] (#4056)\n- 为 HNSW 添加更多单元测试 [3\u002F1] (#4059)\n- 为 HNSW 添加更多单元测试 [4\u002F1] (#4061)\n- 为 index_read 和 index_write 添加更多单元测试 (#4068)\n- 为 utils\u002Fhamming.cpp 添加测试 (#4079)\n- 对 IndexIVFFlat 测试 sa_decode 方法 (#4098)\n- 条件编译诸如基准测试和示例等附加内容 (#4094)\n- 添加新的架构模式：“avx512_spr”。(#4025)\n- 使用 _mm512_popcnt_epi64 加速汉明距离计算。(#4020)\n- 使用 PyTorch 的 PQ (#4116)\n- 为 IndexRefine 添加 range_search() 方法 (#4022)\n- 将 faiss 接口中的 accumulate_to_mem 公开 (#4099)\n- 支持 Windows Arm64 架构 (#4087)\n- 添加覆盖 GPU 的测试 (#4130)\n- 添加无需 MKL 即可构建的支持 (#4147)\n\n### 变更\n- 将训练、构建和搜索分别移至各自的算子中 (#3934)\n- 将 PQFS 移至 Index 训练器中 (#3941)\n- 将有用的 CMake 函数“link_to_faiss_lib”放入单独的文件中 (#3939)\n- 缓存设备主版本号，以避免多次调用 getCudaDeviceProperties (#3950)\n- 整合 faiss\u002FCMakeLists.txt 中的 set_target_properties() 调用 (#3973)\n- 移除手动 Hipify 构建步骤 (#3962)\n- 允许替换 NSG 图的图结构 (#3975)\n- 调整夜间构建 (#3978)\n- 使用 PyTorch 2.4.1 更新 RAFT CI (#3980)\n- 将 add_sa_codes 和 sa_code_size 移至 Index 和 IndexBinary 基类中 (#3989)\n- 更新 autoclose.yml (#4000)\n- 从 RAFT 迁移到 CUVS (#3549)\n- 锁定 numpy\u003C2 版本 (#4033)\n- (1\u002F1) - 在 manifold 中预加载数据集，以便后续的训练、索引和搜索阶段可以直接使用这些数据，而无需每个训练器或索引器单独下载数据。(#4034)\n- 限制 Windows 构建的 conda 版本 (#4040)\n- 更新 faiss-gpu-cuvs 夜间包 (#4032)\n- 锁定 x86_64 架构的依赖版本 (#4046)\n- 锁定 arm64 架构的依赖版本 (#4060)\n- 锁定 conda 构建版本 (#4062)\n- 因代码重构改进命名 (#4063)\n- 我","2025-01-31T23:29:10",{"id":207,"version":208,"summary_zh":209,"released_at":210},297352,"v1.9.0","### 新增\n- 为距离和标量量化器函数添加 AVX-512 实现。（#3853）\n- 允许在 IVF 索引中使用 k 和 M 后缀。（#3812）\n- 为加性量化器添加重建支持。（#3752）\n- 引入用于减少聚类过程开销的选项。（#3731）\n- 为 HNSW 搜索参数添加有界队列选项。（#3748）\n- 添加 ROCm 支持。（#3462）\n- 添加 SVE 目标。（#2886）\n- 为 C API 添加 get_version() 函数。（#3688）\n- 在 CPU Faiss 中实现 QINCo。（#3608）\n- 为 FlatCodes 添加搜索功能。（#3611）\n- 为 VectorDistance 和 ResultHandlers 添加调度器。（#3627）\n- 添加 SQ8bit 有符号量化。（#3501）\n- 添加 ABS_INNER_PRODUCT 度量。（#3524）\n- 实现 CAGRA 与 HNSW 之间的互操作性。（#3252）\n- 为 HNSW 添加 skip_storage 标志。（#3487）\n- 为 bfloat16 的标量量化器添加 QT_bf16。（#3444）\n- 实现 METRIC.NaNEuclidean。（#3414）\n- 添加 C++ 和 Python 的 TimeoutCallback。（#3417）\n- 支持大端架构机器。（#3361）\n- 支持从 IVFPQFastScan 索引中移除 ID。（#3354）\n- 为 GPU IVFFlat 索引实现 reconstruct_n。（#3338）\n- 支持 OnDiskInvertedLists 的 merge_from_multiple 函数中的 skip_ids。（#3327）\n- 为 C API 添加克隆和读取二进制索引的功能。（#3318）\n- 为 PQFastScan 添加 AVX512 支持。（#3276）\n\n### 变更\n- 加快 HNSW CPU 索引训练速度。（#3822）\n- 进行了一些小改进。（#3692）\n- 首次尝试使用 nbits 进行 LSH 匹配。（#3679）\n- 在训练前设置 verbosoe 参数。（#3619）\n- 移除重复的 NegativeDistanceComputer 实例。（#3450）\n- 为 NNDescent 添加中断功能。（#3432）\n- 移除 ScalarQuantizer 中的冗余指令。（#3430）\n- 针对 PowerPC 架构，优化 fvec_L2sqr 函数的代码生成。（#3416）\n- 展开 lookup_2_lanes 中的循环。（#3364）\n- 改善过滤及搜索参数的传递机制。（#3304）\n- 将 index_cpu_to_gpu 更改为对于未在 GPU 上实现的索引抛出异常。（#3336）\n- 当尝试将 IndexPQ 移动到 GPU 时抛出异常。（#3328）\n- 使用新的 io 标志跳过 HNSWPQ 的 sdc 初始化。（#3250）\n\n### 修复\n- 修复 ResidualQuantizer 非 SIMDlib 代码中的一个错误。（#3868）\n- assign_index 应默认为 null。（#3855）\n- 修复 HNSW 中计算距离数量错误的问题。（#3840）\n- 在构建 PQ 时，添加对 nbits 溢出的错误处理。（#3833）\n- 修复使用 HSNW 和 IP 进行半径搜索时的问题。（#3698）\n- 修复向分片上分散向量的算法。（#3374）\n- 修复 IndexBinary.assign 的 Python 方法。（#3384）\n- 对 bench_fw 进行几处修复，以启用 IndexFromCodec 功能。（#3383）\n- 修复 AIX 系统运行基准测试时的字节序问题。（#3345）\n- 修复 Faiss swig 构建在版本 > 4.2.x 时的问题。（#3315）\n- 修复使用 64 位整数时的问题。（#3322）\n- 修复 IVFPQFastScan 的解码函数。（#3312）\n- 在 ResultHandler.h 的几个析构函数中处理 FaissException。（#3311）\n- 修复 HNSW 统计信息。（#3309）\n- 修复 AIX 编译中 io 类的相关问题。（#3275）","2024-10-04T21:33:29",{"id":212,"version":213,"summary_zh":214,"released_at":215},297353,"v1.8.0","### 新增\n- 在 faiss-cpu 和 faiss-gpu 之外，新增了 conda 包 faiss-gpu-raft。\n- 集成了来自 NVIDIA RAFT 的 IVF-Flat 和 IVF-PQ 实现到 faiss-gpu-raft 中 [感谢 @cjnolet 和 @tarang-jain]。\n- 为 InvertedLists 和 InvertedListsIterator 添加了上下文参数。\n- 添加了 Faiss on Rocksdb 示例，展示如何将倒排列表持久化到键值存储中。\n- 引入了基于 Faiss 大批量搜索的 Offline IVF 框架。\n- 为 Scalar Quantizer 中的 QT_FP16 添加了 SIMD NEON 优化。[感谢 @naveentatikonda]\n- 泛化了 ResultHandler，并支持 HNSW 和 FastScan 的范围搜索。\n- 引入了 avx512 优化模式及 FAISS_OPT_LEVEL 环境变量。[感谢 @alexanderguzhva]\n- 为 IndexRefine::search() 和 IndexRefineFlat::search() 添加了搜索参数。\n- 支持大规模的两级聚类。\n- 增加了对 Python 3.11 和 3.12 的支持。\n- 增加了对 CUDA 12 的支持。\n\n### 变更\n- 使用基准测试找到帕累托最优索引。有意识地限制在 IVF(Flat|HNSW)、PQ|SQ 索引范围内。\n- 将 RQ 编码步骤拆分到另一个文件中。\n- 改进了 NaN 的处理。\n- HNSW 加速 + 距离改进 4 处 [感谢 @alexanderguzhva]。\n\n### 修复\n- 修复了 Faiss GPU 中 DeviceVector 的重新分配问题。\n- 在 HNSW 搜索中，如果提供了参数，则使用 params 中的 efSearch。\n- 修复了 Faiss GPU 在 CUDA 12 下的 warp 同步行为。\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Ffaiss\u002Fcompare\u002Fv1.7.4...v1.8.0","2024-03-01T01:04:25",{"id":217,"version":218,"summary_zh":219,"released_at":220},297354,"v1.7.4","### Added\r\n- Added big batch IVF search for conducting efficient search with big batches of queries\r\n- Checkpointing in big batch search support\r\n- Precomputed centroids support\r\n- Support for iterable inverted lists for eg. key value stores\r\n- 64-bit indexing arithmetic support in FAISS GPU\r\n- IndexIVFShards now handle IVF indexes with a common quantizer\r\n- Jaccard distance support\r\n- CodePacker for non-contiguous code layouts\r\n- Approximate evaluation of top-k distances for ResidualQuantizer and IndexBinaryFlat\r\n- Added support for 12-bit PQ \u002F IVFPQ fine quantizer decoders for standalone vector codecs (faiss\u002Fcppcontrib)\r\n- Conda packages for osx-arm64 (Apple M1) and linux-aarch64 (ARM64) architectures\r\n- Support for Python 3.10\r\n\r\n### Removed\r\n- CUDA 10 is no longer supported in precompiled packages\r\n- Removed Python 3.7 support for precompiled packages\r\n- Removed constraint for using fine quantizer with no greater than 8 bits for IVFPQ, for example, now it is possible to use IVF256,PQ10x12 for a CPU index\r\n\r\n### Changed\r\n- Various performance optimizations for PQ \u002F IVFPQ for AVX2 and ARM for training (fused distance+nearest kernel), search (faster kernels for distance_to_code() and scan_list_*()) and vector encoding\r\n- A magnitude faster CPU code for LSQ\u002FPLSQ training and vector encoding (reworked code)\r\n- Performance improvements for Hamming Code computations for AVX2 and ARM (reworked code)\r\n- Improved auto-vectorization support for IP and L2 distance computations (better handling of pragmas)\r\n- Improved ResidualQuantizer vector encoding (pooling memory allocations, avoid r\u002Fw to a temporary buffer)\r\n\r\n### Fixed\r\n- HSNW bug fixed which improves the recall rate! Special thanks to zh Wang @hhy3  for this.\r\n- Faiss GPU IVF large query batch fix\r\n- Faiss + Torch fixes, re-enable k = 2048\r\n- Fix the number of distance computations to match max_codes parameter\r\n- Fix decoding of large fast_scan blocks","2023-04-20T13:45:29",{"id":222,"version":223,"summary_zh":224,"released_at":225},297355,"v1.7.3","**Added**\r\n- Sparse k-means routines and moved the generic kmeans to contrib\r\n- FlatDistanceComputer for all FlatCodes indexes\r\n- Support for fast accumulation of 4-bit LSQ and RQ\r\n- Product additive quantization support\r\n- Support per-query search parameters for many indexes + filtering by ids\r\n- write_VectorTransform and read_vectorTransform were added to the public API (by @AbdelrahmanElmeniawy)\r\n- Support for IDMap2 in index_factory by adding \"IDMap2\" to prefix or suffix of the input String (by @AbdelrahmanElmeniawy)\r\n- Support for merging all IndexFlatCodes descendants (by @AbdelrahmanElmeniawy)\r\n- Remove and merge features for IndexFastScan (by @AbdelrahmanElmeniawy)\r\n- Performance improvements: 1) specialized the AVX2 pieces of code speeding up certain hotspots, 2) specialized kernels for vector codecs (this can be found in faiss\u002Fcppcontrib)\r\n\r\n\r\n**Fixed**\r\n- Fixed memory leak in OnDiskInvertedLists::do_mmap when the file is not closed (by @AbdelrahmanElmeniawy)\r\n- LSH correctly throws error for metric types other than METRIC_L2 (by @AbdelrahmanElmeniawy)\r\n","2022-11-30T15:24:12",{"id":227,"version":228,"summary_zh":229,"released_at":230},297356,"v1.7.2","## ADDED\r\n- Support LSQ on GPU (by @KinglittleQ)\r\n- Support for exact 1D kmeans (by @KinglittleQ)\r\n- LUT-based search for additive quantizers\r\n- Autogenerated Python docstrings from Doxygen comments\r\n\r\n## CHANGED\r\n- Cleanup of index_factory parsing","2022-01-10T12:19:49",{"id":232,"version":233,"summary_zh":76,"released_at":234},297357,"v1.7.1","2021-05-28T09:08:34",{"id":236,"version":237,"summary_zh":76,"released_at":238},297358,"v1.7.0","2021-02-13T14:11:25",{"id":240,"version":241,"summary_zh":76,"released_at":242},297359,"v1.6.5","2020-12-21T05:24:03",{"id":244,"version":245,"summary_zh":246,"released_at":247},297360,"v1.6.4","# Features\r\n+ Arbitrary dimensions per sub-quantizer now allowed for `GpuIndexIVFPQ`.\r\n+ Brute-force kNN on GPU (`bfKnn`) now accepts `int32` indices.\r\n+ Faiss CPU now supports Windows. Conda packages are available from the nightly channel.","2020-10-22T13:28:27",{"id":249,"version":250,"summary_zh":76,"released_at":251},297361,"v1.6.3","2020-08-17T16:56:51",{"id":253,"version":254,"summary_zh":255,"released_at":256},297362,"v1.5.3","Bugfixes:\r\n- slow scanning of inverted lists (#836).\r\n\r\nFeatures:\r\n- add basic support for 6 new metrics in CPU `IndexFlat` and `IndexHNSW` (#848);\r\n- add support for `IndexIDMap`\u002F`IndexIDMap2` with binary indexes (#780).\r\n\r\nMisc:\r\n- throw python exception for OOM (#758);\r\n- make `DistanceComputer` available for all random access indexes;\r\n- gradually moving from `long` to `int64_t` for portability.\r\n","2019-06-24T16:45:05",{"id":258,"version":259,"summary_zh":260,"released_at":261},297363,"v1.5.2","The license was changed from BSD+Patents to MIT.\r\n\r\n## Changelog:\r\n- propagates exceptions raised in sub-indexes of IndexShards and IndexReplicas;\r\n- support for searching several inverted lists in parallel (parallel_mode != 0);\r\n- better support for PQ codes where nbit != 8 or 16;\r\n- IVFSpectralHash implementation: spectral hash codes inside an IVF;\r\n- 6-bit per component scalar quantizer (4 and 8 bit were already supported);\r\n- combinations of inverted lists: HStackInvertedLists and VStackInvertedLists;\r\n- configurable number of threads for OnDiskInvertedLists prefetching (including 0=no prefetch);\r\n- more test and demo code compatible with Python 3 (print with parentheses);\r\n- refactored benchmark code: data loading is now in a single file.","2019-05-30T21:35:34"]