学习向导
文档结构总览
本文档分为以下几章:
- 简介:介绍特征检索的基础信息,包括功能、应用场景等。
- 使用流程:介绍使用mxIndex进行特征检索的过程。
- 支持的硬件和操作系统:说明mxIndex支持的硬件与操作系统。
- 安装部署:用户使用发布的mxIndex特征检索软件包安装到实际生产环境的详细指导。
- 快速入门:提供一个使用全量检索的样例介绍。
- 算法介绍:介绍各个算法的使用场景以及需要生成的算子。
- 自定义算子介绍:特征检索方案提供多种自定义算子供用户使用。
- API参考(C++):介绍特征检索对用户开放的C++ API接口。
- 升级/卸载mxIndex:提供升级/卸载mxIndex的方法指导。
- 常用操作:介绍使用mxIndex时的常用操作。
- FAQ:常见问题及解答。
使用须知
- 当前的mxIndex特征检索(FeatureRetrieval)基于昇腾AI处理器以及开源相似性检索框架Faiss开发和适配,对于任何其他硬件或者异构计算平台的兼容性不在本文档或产品的范围内。
- 特征检索仅支持标准态部署方式。
- 特征检索的标准态部署方式是基于AscendCL接口实现的,因此已经在内部进行了aclInit接口的调用,用户无需再次调用。
- 检索业务特征底库存储于昇腾AI处理器DDR内,特征维度和数量(入库或查询等操作)以及计算过程中,业务临时内存和系统临时内存的使用决定总内存占用大小,输入过大会导致设备侧内存申请失败错误。当前单个Index(底库)支持最大库容视具体昇腾AI处理器Device侧内存大小而定,业务侧需要根据实际需求规划Index个数,防止内存超限情形发生。
- 建议创建Index的数量小于10000个,超过10000个后所产生的内存碎片较多,可能会导致add操作的容量小于预期值。
术语
文档中出现的部分术语的含义以及中英文定义请参见表1。
术语 |
描述 |
---|---|
Host |
Host指与Device相连接的x86_64服务器、Arm服务器,会利用Device提供的NN(Neural-Network )计算能力,完成业务。 |
Device |
Device指安装了昇腾AI处理器的硬件设备,利用PCIe接口与Host侧连接,为Host提供NN计算能力。若存在多个Device,多个Device之间的内存资源不能共享。 |
特征检索(FeatureRetrieval/AscendFaiss) |
Ascend平台上基于Faiss开源相似度检索框架的异构检索组件。 |
Faiss |
Facebook开源检索框架。 |
Protobuf |
Google开源数据序列化框架。 |
OpenBLAS |
OpenBLAS开源BLAS (Basic Linear Algebra Subprograms) 和LAPACK API数学计算包。 |
Index |
AscendFaiss/Faiss封装的一组向量,可以通过此对象对这组向量进行管理并执行高效检索。 |
EULA |
End User License Agreement,华为企业业务最终用户许可协议。 |
小库检索/精确搜索 |
全局遍历的,底库规模通常在30万~100万条的检索库类型,当前支持Flat/SQ/INT8等暴力搜索算法。 |
大库检索/非精确搜索 |
基于IVF(Inverted File System)开发的,底库规模高于千万级别的检索库类型,当前支持IVFSQ算法。 |
特征向量查询 |
用户输入待查询的特征向量后,大小库检索将待查询的特征向量,与底库中的向量进行距离计算并选取相似度最高的Top K个结果返回,从而完成一次特征向量的检索。 |
建库 |
建库是将数以百万、千万级特征底库添加到Ascend平台的操作。 |
底库添加 |
底库添加是在现有的底库基础上添加新的特征数据到Ascend平台。 |
底库删除 |
根据指定的索引,删除底库中该索引对应的特征向量,支持多条删除功能。 |
底库保存/底库落盘 |
实现用户底库特征和索引保存在本地的功能,业务恢复时可以不用进行训练和建库操作。 |
底库恢复/底库加载 |
实现把已经保存的特征库和索引恢复到Ascend平台的功能。 |