Repolode
facebookresearch

facebookresearch/faiss

一个基于 C++、提供 Python 接口的稠密向量相似度搜索与聚类库,可选 GPU 加速。

Star
41,171
Fork
4,561
未关闭 Issue
352
最近提交
11小时前

这是什么?

Faiss 是一个用于稠密向量相似度搜索和聚类的库。它提供多种索引类型,可以处理从小规模到超出内存容量的大规模向量集合。比较方式支持 L2 距离和内积,通过对向量归一化也可用于余弦相似度计算。

不同索引在搜索速度、结果精度、每个向量的内存占用以及训练和添加耗时之间各有取舍。基于二进制向量和量化编码的压缩方法无需保留原始向量,可在单台服务器内存中支持数十亿级向量。HNSW、NSG 等基于图的结构则在原始向量之上构建索引,以提升查询效率。

库主体使用 C++ 实现,并提供 Python 与 numpy 封装。GPU 版本可接收 CPU 或 GPU 内存中的输入,支持单卡和多卡,例如将 IndexFlatL2 替换为 GpuIndexFlatL2 即可使用。编译需要 CMake 以及一个 BLAS 实现。

核心功能

  • 01基于 L2 距离或内积的稠密向量精确与近似最近邻搜索。
  • 02基于二进制向量和量化编码的压缩索引,可扩展到超大规模集合。
  • 03提供 HNSW、NSG 等基于图的索引,用于加速近似搜索。
  • 04可选的 GPU 实现,可直接替换 CPU 索引使用。
  • 05提供 Python 接口并支持 numpy,同时保留 C++ 核心。

适用场景

  • 为嵌入向量构建语义搜索或检索系统。
  • 在内存放不下的大规模向量集合上使用压缩索引进行最近邻查询。
  • 利用 GPU 加速对大规模向量进行 k-means 聚类。

快速上手

  1. 1

    从 Anaconda 安装预编译的 Python 版 faiss-cpu 包

  2. 2

    阅读项目 wiki 上的入门教程

使用前须知

  • GPU 加速需要 NVIDIA CUDA 或 AMD ROCm 硬件。
  • 从源码构建需要 cmake 和 BLAS 实现,详见 INSTALL.md。

标签

常见问题

faiss 是什么?
一个基于 C++、提供 Python 接口的稠密向量相似度搜索与聚类库,可选 GPU 加速。 Faiss 是一个用于稠密向量相似度搜索和聚类的库。它提供多种索引类型,可以处理从小规模到超出内存容量的大规模向量集合。比较方式支持 L2 距离和内积,通过对向量归一化也可用于余弦相似度计算。
faiss 可以免费使用吗?用的什么许可证?
faiss 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
faiss 还在维护吗?
活跃维护中。faiss 最近一次提交是在 2026年10月20日。
faiss 适合用来做什么?
为嵌入向量构建语义搜索或检索系统。 在内存放不下的大规模向量集合上使用压缩索引进行最近邻查询。 利用 GPU 加速对大规模向量进行 k-means 聚类。
faiss 怎么安装和运行?
从 Anaconda 安装预编译的 Python 版 faiss-cpu 包 阅读项目 wiki 上的入门教程
在哪里获取 faiss?
源代码和安装说明在 GitHub 上:https://github.com/facebookresearch/faiss

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目