faiss:基于 Meta Faiss 的昇腾 NPU 加速向量检索项目

可用于大规模向量检索场景,提供高性能硬件加速。该项目是 Meta Faiss v1.13.2 的昇腾 NPU 适配版本,继承 CPU/GPU 功能,新增多个 AscendC 自定义算子,加速核心计算。【此简介由AI生成】

分支6Tags0
文件最后提交记录最后更新时间
3 个月前
5 个月前
5 个月前
2 个月前
5 个月前
5 个月前
5 个月前
5 个月前
2 个月前
5 个月前
5 个月前
3 个月前
5 个月前
5 个月前
5 个月前
5 个月前
5 个月前
2 个月前
5 个月前
3 个月前
5 个月前
5 个月前
5 个月前
5 个月前
5 个月前
2 个月前

Faiss NPU

基于 Meta Faiss 的昇腾 NPU 加速版本

Ascend License

✨ 最新消息

🔹 [2026.5.20]:🚀 基于 Meta Faiss 提供 NPU 加速能力,算法持续实现中

ℹ️ 简介

Faiss NPU 是在 Meta 开源 Faiss(Facebook AI Similarity Search)v1.13.2 基础上深度适配的昇腾 NPU 加速版本,为大规模向量检索提供高性能的硬件加速能力。更多详情可查看简介

🔍 目录结构

代码仓关键目录如下:

faiss/
├── CMakeLists.txt                       # 全局构建:集成 NPU 编译逻辑
└── faiss/
    ├── gpu/                             # GPU 相关实现
    ├── npu/                             # NPU 相关实现
    │   ├── impl/                        # 算法实现:NPU 核心检索逻辑
    │   ├── ops/                         # 算子工程:生成 aclnn 接口和 .so 动态库
    │   │   ├── cmake/                   # 算子构建配置
    │   │   ├── conversion/              # 基础工具算子:类型转换、转置等预处理逻辑
    │   │   ├── op_impl/                 # 自定义算子库:每个子目录为一个独立算子工程
    │   │   │   ├── distance_flat_ip/    # FLAT IP 距离算子
    │   │   │   │   ├── op_host/         # FLAT IP host 侧代码
    │   │   │   │   ├── op_kernel/       # FLAT IP kernel 侧代码
    │   │   │   │   ├── test/            # FLAT IP 单算子测试用例
    │   │   │   │   ├── CMakeLists.txt   # FLAT IP 构建逻辑
    │   │   │   │   └── README.md        # 算子介绍,包含输入输出参数、计算过程等
    │   │   │   ├── topk_flat_cpu/       # TopK 排序算子
    │   │   │   └── ...
    │   │   ├── scripts/                 # 代码生成、配置解析等相关脚本
    │   │   ├── CMakeLists.txt           # 算子单元测试:确保计算精度与正确性
    │   │   └── build.sh                 # 一键构建脚本:简化开发与调试流程
    │   └── utils/                       # NPU 通用工具和基础设施
    └── python/                          # Python 绑定:SWIG 接口定义

⚙️ 功能介绍

CPU/GPU 基础功能(Meta Faiss)

本项目在开源 Faiss v1.13.2 基础上进行适配,继承了 CPU 和 GPU 的所有功能。

功能 描述 说明
全量检索 支持 Flat、Int8Flat 等索引类型,对大规模数据集进行精确检索 适用于高精度场景
近似检索 支持 IVF、HNSW、PQ 等索引类型,提供高效的近似检索能力 适用于大规模数据场景
量化压缩 支持 PQ、SQ 等量化方法,减少存储空间和计算开销 适用于内存受限场景
GPU 加速 支持 CUDA、ROCm GPU 加速 大幅提升检索性能
分布式检索 支持分布式索引构建和检索 适用于超大规模数据
二值索引 支持 IndexBinaryFlat、IndexBinaryIVF 等二值索引 适用于哈希检索场景

NPU 加速功能(本项目新增)

本项目实现了多个 AscendC 自定义算子,用于加速核心计算:

算子名称 功能描述 文档链接
float_to_half Float32 到 Float16 转换 详细文档
topk_flat_cpu Flat 算法 TopK 选择 详细文档
topk_ivfpq_l3_cpu IVFPQ L3 阶段 TopK 归并 详细文档
distance_flat_ip Flat 内积距离计算 详细文档
distance_flat_l2 Flat L2 距离计算 详细文档
ascendc_dist_int8_flat_cos Int8 Flat 余弦距离计算 详细文档
ascendc_dist_int8_flat_l2 Int8 Flat L2 距离计算 详细文档
ascendc_ivfpq_search_distance_ip IVFPQ IP 距离计算 详细文档

🚀 快速入门

Faiss NPU 提供了一个简单的样例,帮助用户快速体验运用 Faiss NPU 进行检索的流程。详情可参考快速入门

📦 环境部署

介绍 Faiss NPU 的安装方式,详细安装指南请参考安装部署

🛠️ 贡献指南

欢迎参与项目贡献,请参考贡献指南

⚖️ 相关说明

🔹 许可证声明
🔹 免责声明

🤝 建议与交流

欢迎大家为社区做贡献。贡献前,请先签署开放项目贡献者许可协议(CLA)。

如果有任何疑问或建议,请提交 GitCode Issues,我们会尽快回复。感谢您的支持。

🔗 相关链接

项目介绍

可用于大规模向量检索场景,提供高性能硬件加速。该项目是 Meta Faiss v1.13.2 的昇腾 NPU 适配版本,继承 CPU/GPU 功能,新增多个 AscendC 自定义算子,加速核心计算。【此简介由AI生成】

定制我的领域