简介
Index SDK 简介
随着近些年人工智能技术的发展,可以通过先进的算法模型有效地提取出图像、文本、语音等非结构化数据中的特征表示,即结构化的向量特征。在实际应用场景下,如何快速准确地找出与待查询向量相似的向量已经成为各种智能化应用的重要诉求,这就需要提供一个高效的基于向量特征的检索系统,该系统的核心之一便是高效的检索引擎。
在此背景下,基于华为昇腾平台Index SDK实现了一个高效的向量特征检索引擎,用户可以在此引擎上实现面向应用场景的检索系统。
特征检索(FeatureRetrieval)是基于Faiss开发的昇腾NPU异构检索加速框架,针对高维空间中的海量数据,提供高性能的检索,采用与Faiss风格一致的C++语言结合TBE算子开发,支持ARM和x86_64平台。特征检索支持的检索库类型分为小库搜索(全量检索)和大库搜索(近似检索),小库规模通常在30万~100万条的量级,而大库规模可达到千万甚至亿级别,覆盖支持的特征向量维度从64维到512维等(具体算法略有不同)。
-
小库搜索(全量检索)主要实现了Flat、SQ、INT8等暴力检索算法,对于底库中的特征向量采取全量搜索并返回TopK个距离排序结果。
- INT8算法在特征量化的基础上进行暴力检索,因此也叫“int8flat”(如:算子生成脚本,int8flat_generate_model.py)。
- SQ算法在内部进行量化,因使用8位整型进行量化,因此也叫“SQ8”(如:sq8_generate_model.py)。
-
大库搜索(近似检索)在Ascend平台基于Faiss特征检索框架和IVF的思路实现了IVFSQ算法,此处IVF与传统的“倒排索引”有所区别,其基本思想是对特征先做聚类,然后通过聚类中心缩小检索范围,是一种用精度换性能的方法。
各算法底层通过Ascend平台加速的TBE算子实现。
除此之外,特征检索还支持属性过滤检索,多Index批量检索。
- 属性过滤检索可在底库向量数据入库时添加时间、空间等属性标签,检索时通过指定属性条件,仅对符合条件的底库数据进行检索,实现精准过滤。
- 多Index批量检索支持用户使用多个Index进行分库并在执行检索时,通过统一的接口,一次检索多个Index底库。
软件架构
Index SDK软件架构如图1所示,架构图中的关键模块介绍如表1。
| 模块 | 说明 |
|---|---|
| Index SDK API层 | 提供兼容Faiss的C++接口,上层应用可以实现入库、查询、删除特征以及训练功能。 |
| 算法逻辑层 | 实现检索算法的逻辑流程,当前支持的算法主要包括暴力检索、近似检索以及属性过滤算法等。 |
| 算子层 | 基于昇腾平台实现检索算法的加速算子,包括距离计算算子、TopK排序算子以及过滤Mask属性算子等。 |
学习向导
推荐学习课程:IndexSDK特征检索入门课程
如图2所示,使用Index SDK进行特征检索可分为以下环节。

-
安装部署。
- 了解Index SDK支持的产品硬件形态和系统,可参见“支持的硬件和操作系统”。
- 了解相关依赖的部署安装,可参见“安装依赖说明”。
- 了解并完成Index SDK的安装部署,可参见“安装Index SDK”。
-
确定检索类型与算法。
了解Index SDK支持的检索类型和每种检索类型包含的算法,包括各个算法的使用场景,需要生成的算子以及样例介绍。根据自身实际业务分析确定需要使用的检索类型和算法。可参见“算法介绍”。
-
生成算子。
生成算法所需要的算子,可参见“生成算子”。
-
调用接口实现算法,得到检索结果,可参见“API参考”。
- 当前的Index SDK特征检索(FeatureRetrieval)基于昇腾AI处理器以及开源相似性检索框架Faiss开发和适配,对于任何其他硬件或者异构计算平台的兼容性不在本文档或产品的范围内。
- 特征检索的部署方式是基于AscendCL接口实现的,因此已经在内部进行了aclInit接口的调用,用户无需再次调用。
- 当前单个Index(底库)支持最大库容视具体昇腾AI处理器Device侧内存大小而定,业务侧需要根据实际需求规划Index个数,防止内存超限情形发生。建议单次调用add接口创建Index的数量小于10000个,超过10000个后所产生的内存碎片较多,可能会导致add操作的容量小于预期值。
支持的硬件和操作系统
| 产品系列 | 产品型号 | 操作系统版本(仅支持64位的操作系统) |
|---|---|---|
| Atlas 推理系列产品 | Atlas 300I Pro 推理卡 | |
| Atlas 300V 视频解析卡 | ||
| Atlas 300V Pro 视频解析卡 | ||
| Atlas 300I Duo 推理卡 | ||
| Atlas 200I SoC A1 核心板 | ||
| Atlas A2 推理系列产品
说明:Atlas A2 推理系列产品支持AscendIndexFlat,AscendIndexInt8Flat算法,AscendIndexTS-FlatIP算法,AscendIndexTS-Int8Cos算法,AscendIndexIVFFlat算法,AscendIndexIVFRaBitQ算法。 |
Atlas 800I A2 推理服务器 | |
| Atlas A3 推理系列产品 说明:当前支持AscendIndexFlat算法,AscendIndexTS-FlatIP算法,AscendIndexTS-Int8Cos算法,AscendIndexIVFFlat算法,AscendIndexIVFRaBitQ算法。 |
Atlas 800I A3 超节点服务器 |
