搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

facebookresearch/faiss

数据

用于稠密向量相似度检索与聚类的 C++/Python 库,可选 GPU 加速。

41,481
4,616
C++
MIT
创建于 9 年前

项目介绍

Faiss 解决的是稠密向量的相似度检索与聚类问题:每个实例表示为一个向量加一个整数 id,查询时按 L2 距离、点积,或对归一化向量按余弦相似度返回最接近的向量。它的索引类型覆盖检索速度、召回质量、每个向量的内存占用和建索时间的权衡。基于二进制向量和紧凑量化码的索引只保留压缩表示,可以在单台服务器主存中容纳数十亿向量,代价是精度下降;HNSW、NSG 等图索引则在原始向量之上增加索引结构以加快检索。

核心用 C++ 实现,提供完整的 Python/numpy 封装,并通过 CUDA 或 AMD ROCm 提供可选 GPU 实现。GPU 索引基本可以直接替换 CPU 索引(例如用 GpuIndexFlatL2 替代 IndexFlatL2),显存拷贝会自动处理;输入输出都留在 GPU 上时速度最好。项目主要由 Meta 基础 AI 研究团队开发,适用于推荐、图像或文本 embedding 检索、去重和聚类等场景。

快速使用

README 指向预编译的 Conda 包:CPU 使用 faiss-cpu,GPU 有 faiss-gpu 和 faiss-gpu-cuvs 两个变体。安装对应包后即可在 Python 中导入 Faiss 并建立索引。

下面是最小 CPU 示例,向量用 float32 numpy 数组表示:

import numpy as np
import faiss

d, nb, nq, k = 128, 10000, 5, 10
xb = np.random.random((nb, d)).astype('float32')
xq = np.random.random((nq, d)).astype('float32')
index = faiss.IndexFlatL2(d)
index.add(xb)
D, I = index.search(xq, k)  # 返回最近邻的距离和 id
print(I)

从源码构建使用 CMake,前置条件和编译选项见 INSTALL.md。其他索引类型和评估流程可参考入门教程。Faiss 本身不包含 embedding 模型,需要由调用方提供向量,因此实际应用要在建索引前准备自己的编码流程。

使用约束

CPU 构建唯一的硬依赖是 BLAS 实现;GPU 支持是可选的,需要 CUDA 或 ROCm。Python 接口同样是可选的,C++ 库可以独立使用。索引类型的选择取决于数据规模、内存预算、延迟和可接受的召回损失;压缩索引用精度换规模,部分近似索引在添加向量前需要训练数据。项目采用 MIT 许可证。

社区与资料

问题和 bug 反馈可到 GitHub Discussions 和 issue 列表。由于觉得学习资料偏少,Pinecone 曾整理过一份非官方 Faiss 手册供深入学习。HN 讨论中有用户提到读博期间用 Faiss 做基于 AI 的 LiDAR 地图构建,大量依赖其 wiki 和示例代码查阅资料。另有一位 Milvus 贡献者说明 Faiss 是 Milvus 向量数据库可选的索引引擎之一与其它库并列。

HotRepo 点评

在 2026-11-11 的 C++ 日榜中,Faiss 新增 68 星,排名第 2,总星数达到 41,402。站内的讨论记录跨度较长:2023 年 3 月的一个 HN 帖子拿到 263 分和 52 条评论(source:3),更早的 2021 年和 2017 年也有帖子。评论并非一边倒的推荐:2023 年讨论中有人表示 hnswlib 更简单、在 CPU 上更快依据自己的使用经验,也有评论描述 Faiss 是 Milvus 背后多个索引引擎之一与其它库并列。对正在选型的读者来说,这些讨论比星数更有参考价值:Faiss 提供丰富的索引类型和 GPU 路径;如果场景是嵌入式、吞吐不高,简单的 CPU 库可能更合适。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。

Hacker News 讨论

Faiss: A library for efficient similarity search
▲ 263 · 52 条评论 · 2023年3月30日
Faiss: Facebook's open source vector search library
▲ 175 · 38 条评论 · 2021年12月14日

相关推荐

  1. milvus-io/milvus面向 AI 搜索与 RAG 应用的向量数据库,用于存储 embedding 并做可扩展的相似度检索。Go46,537