可用于大规模向量检索场景,提供高性能硬件加速。该项目是 Meta Faiss v1.13.2 的昇腾 NPU 适配版本,继承 CPU/GPU 功能,新增多个 AscendC 自定义算子,加速核心计算。【此简介由AI生成】
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 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
✨ 最新消息
🔹 [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生成】
定制我的领域