昇腾社区首页
中文
注册

简介

产品背景

随着近些年人工智能技术的发展,可以通过先进的算法模型有效地提取出图像、文本、语音等非结构化数据中的特征表示,即结构化的向量特征。在实际应用场景下,如何快速准确的找出与待查询向量相似的向量已经成为各种智能化应用的重要诉求,这就需要提供一个高效的基于向量特征的检索系统,该系统的核心之一便是高效的检索引擎。

在此背景下,基于华为昇腾平台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,具有以下价值:

  • 兼容主流框架:Faiss原生API,开箱即用。
  • 高性能:同等算力卡下全量检索性能优于业界,批量检索性能优于串行场景。
  • 大容量内存:支持单卡亿级底库的向量检索。