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