文档
注册

特征检索功能介绍

特征检索(FeatureRetrieval)是基于Faiss开发的NPU异构检索加速框架,针对高维空间中的海量数据,提供高性能的检索,采用与Faiss风格一致的C++语言结合TBE算子开发,支持ARM和x86_64平台。以执行检索的方式进行划分,特征检索支持的检索库类型分为小库搜索(全量检索)大库搜索(近似检索),小库规模通常在30万~100万条的量级,而大库规模可达到千万甚至亿级别,覆盖支持的特征向量维度从64维到512维向量等。

  • 小库搜索(全量检索)主要实现了Flat、SQ、INT8等暴力检索算法,对于底库中的特征向量采取全量的搜索并返回结果。
    • INT8算法在特征量化的基础上作暴力检索,因此在资料中也有int8flat的说法(如:算子生成脚本,int8flat_generate_model.py)。
    • SQ算法在内部作了量化,因使用8位整型进行量化,所以资料内也用SQ8的说法(如:sq8_generate_model.py)。 三者适用数据类型可参考表1
  • 大库搜索(近似检索)在Ascend平台基于Faiss特征检索框架和IVF的思路实现的IVFPQ、IVFSQ、IVFINT8等算法,此处IVF与传统的“倒排索引”有所区别,其基本思想是对特征先做聚类,然后通过聚类中心缩小检索范围,是一种用精度换性能的方法。

各算法底层通过Ascend平台进行加速的TBE算子来进行实现。

表1 Flat/SQ/INT8算法数据类型对比

算法

原数据类型

结果数据类型

Flat

float32

float32

SQ

float32

float32

INT8

int8

int32

除此之外,特征检索还支持属性过滤检索,多Index批量检索。

  • 属性过滤检索可在底库向量数据入库过程中,添加一些时间和空间相关的属性并在进行检索时,通过特定时间和空间下的底库数据做检索。
  • 多Index批量检索支持用户使用多个Index进行分库并在执行检索时,通过统一的接口,一次检索多个Index底库。
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词