总体说明
mxIndex特征检索组件FeatureRetrieval的C++接口遵循开源的Faiss接口的异常处理机制,故用户必须在try/catch语句块内进行调用以及异常处理,具体的处理范例请参见代码参考中的处理方式,防止在使用的过程中出现异常抛出导致程序退出的情况。
FeatureRetrieval继承Faiss中的Index,并支持多种检索Index,提供建库、查询、删库等接口,对于各个对象间的继承关系如图1、图2所示。
- 由于部分FeatureRetrieval特征检索的输入为指针类型的输入,请用户确保此类指针为合法值,以防止FeatureRetrieval的运行过程中可能产生的越界读写等潜在风险和问题。此外,FeatureRetrieval是助力昇腾AI处理器完成向量检索计算,因此输入的Device ID需要用户确保为合法值,否则可能因为连接设备侧失败导致功能失效。
- 当前单个Device只能被一个Host进程使用,当一个Device被某个进程占用时,其他检索进程对该Device的连接请求会执行失败,等待20s后重连,尝试5次仍然失败时程序会报错退出。
- Faiss是在业界使用非常广泛的向量检索加速库,为了便于生态用户将向量检索聚类业务快速从CPU/GPU平台迁移到昇腾平台,昇腾平台众多算法的基类AscendIndex继承自faiss::Index类,faiss::Index类中d、ntotal等成员变量为public,在使用AscendIndex和AscendIndexInt8各子类过程中,请勿直接修改此类public成员变量。
- 本文档不再描述基类faiss::Index的成员函数和变量。
- 关于Config类中的resources变量(部分类也用resourceSize或类似名称),其作用是预留特征检索过程,存储中间结果的内存大小,单位为Byte,当底库特征较大(如超过300万)且查询请求数较大时需要调大,避免检索过程中因申请临时内存导致性能抖动(衰退),建议设置为1024 * 1024 * 1024 Byte 。
创建新的Index时,将会与已申请的resources进行对比,如存在差异则会释放原有内存资源并参照最新Index的resources重新申请,建议保持Index整体的resources值一致。
父主题: API参考(C++)