掌桥专利:专业的专利平台
掌桥专利
首页

一种向量检索方法及装置

文献发布时间:2024-04-18 19:58:21


一种向量检索方法及装置

技术领域

本申请涉及计算技术领域,尤其涉及一种向量检索方法及装置。

背景技术

向量检索技术广泛应用于人工智能(artificial intelligence,AI)场景中,具体的,可先通过特征提取手段,把外界采集到的数据(比如图片、视频、音频、文本等)进行分析和处理,得到每个数据对应的特征向量,然后将这些特征向量存储于特征库中。进一步的,根据特征库中的这些特征向量,创建特征库的索引。在需要检索某个特征向量时,可根据创建好的该特征库的索引在特征库中执行检索。

基于倒排文件系统(inverted file system,IVF)的向量检索是目前较为常见的向量检索技术之一,具体的,可根据特征库中特征向量建立特征库的索引(即IVF),并在向量检索时根据IVF从特征库中检索出某个特征向量。

但是基于IVF检索的过程中,存在计算量大、检索速度慢的问题。且随着数据量不断的增大,基于IVF检索的速度可能无法满足业务需求。

发明内容

本申请提供一种向量检索方法及装置,用于解决现有的基于IVF建立的索引应用于向量检索过程时,存在的计算量大、检索速度慢的问题。

第一方面,本申请提供一种向量检索方法,该方法具体可以由计算设备执行,或者由计算设备中的处理器执行。该方法包括:获取待查询向量;从索引库中查找与待查询向量对应的第一索引,其中,索引库中包括多个索引,每个索引对应一个第一簇,第一簇包括多个第二簇,每个索引记录了第一簇中心向量、及第一簇中多个第二簇分别对应的多个第二簇中心向量,其中,第一簇对应的特征向量是以第一簇中心向量进行聚类得到的,每个第二簇对应的特征向量是以每个第二簇中心向量进行聚类得到的;从第一索引中查找与待查询向量对应的第二簇中心向量;根据第二簇中心向量找到第二簇中心向量对应的第二簇;从该找到的第二簇所包括的多个特征向量中查找与待查询向量相关的目标特征向量。

上述技术方案中,索引库中包括多个第一簇分别对应的索引,每个索引记录了第一簇中心向量、及多个第二簇中心向量。相应的,在进行向量检索时,计算设备可先从索引库中,选择待查询向量对应的第一索引;再从第一索引包括的多个第二簇中心向量中,选择待查询向量对应的第二簇中心向量;进而从该选择出的第二簇中心向量对应的第二簇中选择待查询向量相关的目标特征向量,如此,通过多级向量检索确定出目标特征向量,有助于降低检索的计算量,加快检索速度。

在一种可能的实现方式中,从索引库中查找与待查询向量对应的第一索引,包括:将待查询向量与索引库中的多个索引记录的第一簇中心向量做比较,比较结果满足第一预设条件的为第一索引。

在一种可能的实现方式中,待查询向量为M维,M为正整数,第二簇中的特征向量为N维,N为正整数且N小于M;从第二簇所包括的多个特征向量中查找与待查询向量相关的目标特征向量,包括:将待查询向量由M维降维至N维,即得到降维之后的N维待查询向量;确定待查询向量(即N维待查询向量)分别与第二簇中的多个特征向量(即N维特征向量)之间的相似度;根据相似度,从多个特征向量中选择目标特征向量。

上述技术方案中,计算设备可先对M维特征向量进行降维处理得到的N维特征向量,再存储该降维处理之后的N维特征向量,如此有助于减少特征向量占用的存储空间。进一步的,在检索过程中,计算设备可先对M维待查询向量进行降维处理得到的N维待查询向量,从而根据N维待查询向量分别与多个N维特征向量之间的相似度,从多个N维特征向量中选择目标特征向量,有助于减少检索过程中的计算量,进一步提高检索速度。

在一种可能的实现方式中,确定X个第一簇中心向量,以X个第一簇中心向量中的每个第一簇中心向量为中心将特征库中的特征向量聚类为X个第一簇;对于X个第一簇中的每个第一簇,从中选出Y个第二簇中心向量,并将第一簇中的特征向量以Y个第二簇中心向量为中心聚类为Y个第二簇;针对每个第一簇,生成一个索引,索引用于记录第一簇中心向量及第一簇中心向量对应的第二簇中心向量。其中,每个第一簇包括的第二簇的数量Y相同或不同。其中,X、Y均为正整数。

上述技术方案中,通过对特征库中特征向量进行多级聚类,确定第一簇的索引,该第一簇的索引可应用于向量检索过程中,有助于降低检索的计算量,加快检索速度。

在一种可能的实现方式中,确定X个第一簇中心向量,具体可以是,对特征库中预设比例的特征向量(可称为训练样本)进行聚类,得到X个第一簇,并根据每个第一簇中包含的特征向量,确定这个第一簇对应的第一簇中心向量。进一步的,以X个第一簇中心向量中的每个第一簇中心向量为中心,将特征库中的剩余特征向量聚类至该X个第一簇中。

在一种可能的实现方式中,确定Y个第二簇中心向量,具体可以是,对第一簇中预设比例的特征向量进行聚类,得到Y个第二簇,并根据每个第二簇中包含的特征向量,确定这个第二簇对应的第二簇中心向量。进一步的,以Y个第二簇中心向量中的每个第二簇中心向量为中心,将第一簇中的剩余特征向量聚类至Y个第二簇中。

在一种可能的实现方式中,在将第一簇中的特征向量以Y个第二簇中心向量为中心聚类为Y个第二簇后,方法还包括:从Y个第二簇中选择第三簇,第三簇中的特征向量的数量小于阈值;确定与第三簇的第二簇中心向量最接近的第二簇中心向量;将第三簇的特征向量合并至所确定的第二簇中心向量对应的第二簇中。

上述技术方案中,在将第一簇中多个特征向量进行聚类得到第一簇中的多个第二簇之后,还可动态调整该得到多个第二簇,即将包含特征向量的数量较少的第二簇,合并至与之最接近的包含特征向量的数量较多的第二簇中,避免在查询第二簇中心向量对应的第二簇时,查询到(或召回)特征数量较少的第二簇,有助于提高确定出的第二簇的精度。

在一种可能的实现方式中,以X个第一簇中心向量中的每个第一簇中心向量为中心将特征库中的特征向量聚类为X个第一簇之后,还包括:对特征库中每个特征向量执行:从X个第一簇中,选择特征向量对应的冗余簇,特征向量与特征向量对应的冗余簇的簇中心向量的相似度符合预设冗余条件;根据特征库中每个特征向量与各自特征向量对应冗余簇的簇中心向量的相似度,从多个特征向量中选择需要冗余存储的冗余特征向量,以使得冗余特征向量对应的冗余簇中包括冗余特征向量。

上述技术方案中,将冗余特征向量进行冗余存储,从而可通过多个第二簇获取到(或召回)该冗余特征向量,有助于提高获取到(或召回)该冗余特征向量的概率。

在一种可能的实现方式中,第二簇中特征向量为M维特征向量,M为正整数;方法还包括:对第二簇中每个M维特征向量进行降维处理,得到M维特征向量对应的N维特征向量,N为正整数且小于M;存储第二簇中每个M维特征向量对应的N维特征向量。

上述技术方案中,先对M维特征向量进行降维处理,得到M维特征向量对应的N维特征向量,从而有助于减少特征向量存储所占用的存储空间。且在向量检索过程中,有助于降低相似度计算的计算量。此外,先对特征库中特征向量进行聚类,再对M维特征向量进行降维处理,有助于保障聚类的准确性,且聚类之后的第二簇中特征向量的个数较少,避免因向量降维导致检索准确性降低的问题。

第二方面,本申请实施例提供一种向量检索装置,该装置具有实现上述第一方面或第一方面的任一种可能的实现方式中方法的功能,该装置可以为计算设备,也可以为计算设备中包括的处理器。

上述向量检索装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现,硬件或软件包括一个或多个与上述功能相对应的模块或单元或手段(means)。

在一种可能的实现方式中,该装置的结构中包括处理模块和收发模块,其中,处理模块被配置为支持该装置执行上述第一方面或第一方面的任一种实现方式中方法。收发模块用于支持该装置与其他装置之间的通信,例如,可接收来自采集设备的数据。该向量检索装置还可以包括存储模块,存储模块与处理模块耦合,其保存有装置必要的程序指令和数据。作为一种示例,处理模块可以为处理器,收发模块可以为收发器,存储模块可以为存储器,存储器可以和处理器集成在一起,也可以和处理器分离设置。

在另一种可能的实现方式中,该装置的结构中包括处理器,还可以包括存储器。处理器与存储器耦合,可用于执行存储器中存储的计算机程序指令,以使装置执行上述第一方面或第一方面的任一种可能的实现方式中的方法。可选地,该装置还包括通信接口,处理器与通信接口耦合。当装置为计算设备时,该通信接口可以是收发器或输入/输出接口。

第三方面,本申请实施例提供一种芯片系统,包括:处理器,处理器与存储器耦合,存储器用于存储程序或指令,当程序或指令被处理器执行时,使得该芯片系统实现上述第一方面或第一方面的任一种可能的实现方式中的方法。

可选地,该芯片系统还包括接口电路,该接口电路用于交互代码指令至处理器。

可选地,该芯片系统中的处理器可以为一个或多个,该处理器可以通过硬件实现也可以通过软件实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等。当通过软件实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现。

可选地,该芯片系统中的存储器也可以为一个或多个。该存储器可以与处理器集成在一起,也可以和处理器分离设置。示例性的,存储器可以是非瞬时性处理器,例如只读存储器ROM,其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上。

第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序或指令,当该计算机程序或指令被执行时,使得计算机执行上述第一方面或第一方面的任一种可能的实现方式中的方法。

第五方面,本申请实施例提供一种计算机程序产品,当计算机读取并执行计算机程序产品时,使得计算机执行上述第一方面或第一方面的任一种可能的实现方式中的方法。

上述第二方面至第五方面中任一方面可以达到的技术效果可以参照上述第一方面中有益效果的描述,此处不再重复赘述。

附图说明

图1为本申请提供的一种系统架构示意图;

图2为本申请提供的一种计算设备的结构示意图;

图3为本申请提供的一种处理器的结构示意图;

图4为本申请提供的一种向量检索技术的流程示意图;

图5为本申请提供的一种建立索引的方法的流程示意图;

图6为本申请提供的一种冗余存储的方法的流程示意图;

图7为本申请提供的一种特征降维存储方法的流程示意图;

图8为本申请提供的一种256维特征向量降维得到64维特征向量的示意图;

图9为本申请提供的一种向量检索方法的流程示意图;

图10为本申请提供的再一种向量检索方法的流程示意图。

具体实施方式

为更好的解释本申请,如下先对本申请涉及的技术或名词解释如下。

1、向量检索技术,在一个给定的向量数据集中,按照某种度量方式,检索出与待查询向量相近的向量。

2、k均值聚类算法(k-means clustering algorithm),是一种迭代求解的聚类分析算法。具体的,给定类别数目k,对整个数据集进行聚类,目标函数是所有样本到类中心的距离和最小,迭代计算优化目标函数,得到k个类中心和每个样本所属的类别。

3、K最邻近分类算法(k-nearestneighbor,KNN),是一个样本与数据集中的K个样本最相似,如果这K个样本中的大多数属于某一个类别,则该样本也属于这个类别。

4、特征向量降维,由于高维的特征向量会带来较大的计算成本,且在特征训练中需要样本量很大难以拟合等缺点,为此,可采用特征向量降维的方式提高特性训练的速度和负载度。举例来说,相比于每个年龄表示一维,可将年龄表示为0-10,10-20...,>100这几个段,也就是将年龄映射成了11维。

5、FP32、FP16、INT8

在计算机语言中,FP32表示单精度浮点数,相应的,FP16就是半精度浮点数,其中,FP16的访存消耗仅为FP32的访存消耗的1/2。

INT8是一种定点计算方式,代表整数运算,一般是由浮点运算量化而来。在二进制中一个“0”或者“1”为一bit,INT8则意味着用8bit来表示一个数字。因此,虽然INT8比FP16精度低,但是数据量小、能耗低,计算速度相对更快。

6、倒排文件系统(inverted file system,IVF),对于多条特征向量,通过聚类的方式将全部的数据分为nlist个簇(或称为桶/组/族)。而对一条特征向量的检索,可先执行nlist次检索,即比对输入特征向量(或称为待查询向量)和nlist个簇的簇中心向量(同样是特征向量),找到和输入特征向量相似度最高的nprobe个簇,然后对于这nprobe个簇中全部的特征向量执行相似度(或称为距离、相似性等)比对。

7、仿射变换:是指在几何中一个空间向量进行一次线性变换并接上一个平移,变换为另一个向量空间。

8、内积(inner product,IP):又称数量积、点积,它是一种向量运算,但其结果为某一数值,并非向量。

图1提供一种可能的系统架构示意图,该系统中包括采集设备10和计算设备20。其中,采集设备10可以是一个或多个,计算设备20可以是一个或多个,该一个或多个采集设备10和该一个或多个计算设备20可通过网络连接。

其中,采集设备10可用于采集数据,将采集到的数据通过网络发送给计算设备20。采集设备10具体可以是摄像机、手机、电脑等,采集设备10采集到的数据具体可以是图片、视频、音频、文本等数据。示例性的,在视频监控场景中,采集设备10具体可以是摄像机,摄像机采集到的数据比如是摄像机拍摄的图片和/或视频。

计算设备20可接收并存储采集设备10发送的数据。此外,计算设备20还可对数据进行特征提取,得到数据对应的特征向量,根据数据对应的特征向量生成索引;以及根据生成的索引,执行数据检索过程,并检索得到相应数据。

进一步的,如图2为一种可能的计算设备20的结构示意图,计算设备20包括处理器201、存储器202和通信接口203。其中,处理器201、存储器202和通信接口203任两个之间可通过总线204连接。

处理器201可以是中央处理器(central processing unit,CPU),该CPU可用于执行存储器202中的软件程序以实现一个或多个功能,例如,对数据进行特征提取等。除CPU之外,处理器201还可以是专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)、片上系统(system onchip,SoC)或复杂可编程逻辑器件(complex programmable logic device,CPLD)、图形处理器(graphics processing unit,GPU)、神经网络加速器(neural-network processingunit,NPU)等。

需要说明的是,在实际应用中,处理器201的数量可以有多个,该多个处理器201可以包括多个相同类型的处理器,也可以包括多个不同类型的处理器,例如,多个处理器201即为多个CPU。又例如,该多个处理器201中包括一个或多个CPU以及一个或多个GPU。再例如,该多个处理器201中包括一个或多个CPU以及一个或多个NPU。或者,该多个处理器201中包括一个或多个CPU、一个或多个GPU、以及一个或多个NPU等。其中,处理器201(比如CPU、NPU等)可以包括有一个核,或者包括多个核。

存储器202,是指用于存储数据的装置,它可以是内存,也可以是硬盘。

内存,是指与处理器201直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为运行在处理器201上的操作系统或其他正在运行中的程序的临时数据存储器。内存包括易失性存储器(volatile memory),例如,随机存储器(random accessmemory,RAM)、动态随机存储器(dynamic random access memory,DRAM)等,也可以包括非易失性存储器(non-volatile memory),例如存储级内存(storage class memory,SCM)等,或者易失性存储器与非易失性存储器的组合等。在实际应用中,计算设备20中可配置多个内存,可选的,该多个内存可以是不同类型。本实施例不对内存的数量和类型进行限定。此外,可对内存进行配置使其具有保电功能。保电功能是指系统发生掉电又重新上电时,内存中存储的数据也不会丢失。具有保电功能的内存被称为非易失性存储器。

硬盘,用于提供存储资源,例如用于存储采集设备10采集的图片、视频、音频、文本等数据。硬盘包括但不限于:非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),硬盘驱动器(hard disk drive,HDD)或固态驱动器(solidstate disk,SSD)等。与内存不同之处在于,硬盘的读写速度较慢,通常用于持久性地存储数据。在一种实施方式中,硬盘中的数据、程序指令等需要先加载到内存中,然后,处理器再从内存中获取这些数据和/或程序指令。

通信接口203,用于与其他设备通信,比如用于计算设备20与采集设备10通信。

在实际应用中,计算设备20中可包括两种处理器201,该两种处理器201可分别是CPU和NPU,其中,该CPU可包括6个CPU核,该NPU中可包括2个NPU核,NPU核又可称为是AI核。NPU的算力高于CPU的算力,CPU可用于执行数据检索过程中的相似度排序等,NPU可用于执行数据检索过程中的相似度计算等,具体可参见图3示出的一种计算设备20中处理器201的结构。

本申请示例性提供一种向量检索技术应用于AI场景(具体可以是监控场景)中的流程示意图,该流程示意图可参见图4所示。具体的,该流程具体可由图1至图3示出的计算设备20执行,该流程可划分为如下三个阶段:

一、特征提取阶段

计算设备20可获取采集设备10(图4中为多个摄像机)拍摄的多个图片,将每个图片输入至预设的卷积神经网络(convolutional neural network,CNN)模型中,从而CNN模型分别输出每个图片对应的特征向量(或称为图片特征)。随后,计算设备20将每个图片对应的特征向量存储于特征库中,该特征库具体可以位于存储器202中。

二、索引生成阶段

计算设备20利用k均值聚类算法,对特征库中特征向量进行聚类(也可称为是聚合),得到nlist个簇,在该nlist个簇中每个簇可对应于自己的簇中心向量(也可称为是簇中心)。

在一个具体实现中,计算设备20可先从特征库中随机选取预设比例(比如10%左右)的特征向量作为训练样本,根据k均值聚类算法对训练样本进行聚类,得到nlist个簇。计算设备20再根据该nlist个簇的簇中心向量,将特征库中除训练样本以外的其他特征向量划分至与之最接近的簇中心向量对应的簇中。

如上,计算设备20可获取到特征库中每个特征向量所属的簇是哪个,根据每个簇的簇标识、簇中心向量和簇中包含的特征向量的标识,生成簇的索引。进一步的,特征库对应的nlist个簇分别对应于nlist个索引,计算设备20可将该nlist个索引组成特征库的索引。其中,特征库的索引有可称为是特征库索引,或者索引库。

三、向量检索阶段

计算设备20根据待查询向量和索引库,从特征库的全部特征向量中选择目标特征向量。具体的,该向量检索过程可分为确定簇和确定特征向量两个部分。

在确定簇的过程中:

计算设备20将待查询向量分别与nlist个簇的簇中心向量做比较,根据比较结果从nlist个簇中选择nprobe个簇。比如,计算设备20确定待查询向量分别与nlist个簇的簇中心向量的相似度,得到nlist个相似度。计算设备20选择nlist个相似度由高到低排序中的前nprobe个相似度,将前nprobe个相似度对应的簇作为nprobe个簇。

在确定特征向量的过程中:

计算设备20将待查询向量与nprobe个簇内全部特征向量做比较,根据比较结果从nprobe个簇内的全部特征向量中选择K个最邻近的特征向量。

其中,nprobe个簇的每个簇中可包括多个特征向量,比如nprobe个簇总共包括mprobe个特征向量。计算设备20确定待查询向量分别与nprobe个簇内全部特征向量的相似度,得到mprobe个相似度,进而选择mprobe个相似度由高到低排序中的前K个相似度,然后将该前K个相似度对应的特征向量作为K个最邻近的特征向量(即KNN结果),其中,K为正整数。将该KNN结果作为检索结果返回。

此处,待查询向量(又可称为是查询向量)可以是用户输入的某个特征向量,也可以是特征库中的任一个特征向量。在后一种情况中,可理解,计算设备20可以遍历特征库中的每个特征向量,确定每个特征向量的K个最邻近的特征向量,如此,计算设备20可得到特征库中全部特征向量的KNN结果。

可以理解,在假设每个簇中特征向量的个数相同的情况下,计算设备20在向量检索阶段的总计算量可表示为

为此,本申请提供一种建立索引的方法,用于解决现有的基于空间划分(比如IVF)建立的索引应用于向量检索阶段时,存在的计算量大、检索速度慢的问题。

在本申请提供的建立索引的方法中,计算设备20可对特征库中多个特征向量进行多级聚类,每一级聚类可实现将当前簇中的多个特征向量聚类至多个下一级簇中。

比如,计算设备20对特征库中多个特征向量,进行第一级聚类得到多个第一级簇,该多个第一级簇中每个第一级簇均可包括多个特征向量。进一步的,计算设备20可针对一个第一级簇(即当前簇),对该第一级簇中多个特征向量,进行第二级聚类得到多个第二级簇。

如下为方便描述,可将当前簇称为是第一簇,该第一簇对应的下一级簇称为是第二簇,也即,第一簇可对应于多个第二簇。

参照图5示例性示出的一种建立索引的方法的流程图解释:

步骤501,计算设备20确定X个第一簇。

具体的,计算设备20可根据第一聚类算法和特征库中的多个特征向量,确定X个第一簇,X为正整数。其中,X个第一簇的每个第一簇中均包括多个特征向量。第一聚类算法比如是k均值聚类算法、模糊c均值聚类算法(fuzzy c-means algorithm,FCMA)等。

示例性的,计算设备20对特征库中多个特征向量,进行第一级聚类可得到X’个第一级簇,X’为正整数。其中,该X’个第一级簇中可能存在一部分第一级簇中特征向量的数量较少,计算设备20无需对该一部分第一级簇进行下一级的聚类;而另外一部分的第一级簇,由于特征向量的数量较多,计算设备20需要对该另外一部分第一级簇进行下一级的聚类。当然,本申请不排除计算设备20需要对上述全部的第一级簇进行下一级的聚类。也即,X个第一簇可以是该第一级聚类之后得到的X’个第一级簇中的全部或部分。

再示例性的,对第一级簇中多个特征向量,进行第二级聚类得到X’个第二级簇,其中,该X个第一簇可以是该X’个第二级簇的全部或部分。当然,该X个第一簇还可以是其他某一级聚类得到的X’个簇中的部分或全部,本申请不再列举。

计算设备20根据第一聚类算法和特征库中的多个特征向量,确定X’个第一簇的实现方式,可以有如下两种:

实现方式一,计算设备20根据第一聚类算法,对特征库中多个特征向量进行聚类,直接得到X’个第一簇,计算设备20再根据X’个第一簇中每个第一簇中的特征向量,确定每个第一簇的簇中心向量(可称为第一簇中心向量)。

实现方式二,计算设备20从特征库中随机选取(或采样)预设比例(比如10%左右)的特征向量作为第一训练样本,根据第一聚类算法和第一训练样本,聚类得到X’个第一簇,计算设备20再根据X’个第一簇中每个第一簇中的特征向量,确定每个第一簇的第一簇中心向量。计算设备20以X’个第一簇中心向量中的每个第一簇中心向量为中心,将特征库中、除第一训练样本以外的其他特征向量聚类至该X个第一簇中。如此,可降低计算设备20确定出第一簇中心向量的计算量,且可以较快速的确定出第一簇中心向量。

可以理解的是,计算设备20在确定X个第一簇时,可以参照上述实现方式一和实现方式二,可将“X’个第一簇”替换为“X个第一簇”,不再赘述。

步骤502,计算设备20对X个第一簇中的每个第一簇执行:根据第一簇中多个特征向量,确定第一簇中的多个第二簇。

以X个第一簇中的任一个第一簇为例说明:计算设备20根据第二聚类算法,对第一簇中多个特征向量,聚类得到该第一簇对应的Y个第二簇,其中,Y为正整数。其中,第二聚类算法比如是k均值聚类算法、模糊c均值聚类算法等,第一聚类算法与第二聚类算法相同或不同。每个第一簇划分得到的第二簇的个数Y可以相同或不同,比如X个第一簇中,其中一个第一簇划分得到5个第二簇,另一个第一簇划分得到10个第二簇。

计算设备20根据第二聚类算法和第一簇中的多个特征向量,确定Y个第一簇的实现方式,可以有如下实现方式1和实现方式2:

实现方式1,计算设备20根据第二聚类算法,对第一簇中多个特征向量进行聚类,直接得到Y个第二簇,计算设备20再根据Y个第二簇中每个第二簇中的特征向量,确定每个第二簇的簇中心向量(可称为第二簇中心向量)。

实现方式2,计算设备20从第一簇中随机选取预设比例(比如10%左右)的特征向量作为第二训练样本,根据第二聚类算法和第二训练样本,聚类得到Y个第二簇,计算设备20再根据Y个第二簇中每个第二簇中的特征向量,确定每个第二簇对应的第二簇中心向量。计算设备20以Y个第二簇中心向量中的每个第二簇中心向量为中心,将第一簇中、除第二训练样本以外的其他特征向量聚类至该Y个第二簇中。如此,可降低计算设备20确定出第二簇中心向量的计算量,且可以较快速的确定出第二簇中心向量。

进一步的,计算设备20可先确定该第一簇对应的第二簇的数量Y,然后再根据第二簇的数量Y和第二聚类算法,对第一簇中多个特征向量聚类得到Y个第二簇。

计算设备20在确定第一簇对应的第二簇的数量Y时,具体可根据第一簇中特征向量的个数确定。可认为,在第一簇中特征向量的个数越多时,第一簇对应的第二簇的数量Y则越大。或者,计算设备20还可根据第一簇中特征向量的个数和硬件条件确定,其中,硬件条件包括计算设备20中运行该算法的处理器201的算力,处理器201的算力比如是处理器201中包括的矩阵运算单元的大小(size)和个数。

举例来说,处理器201为NPU,NPU中矩阵运算单元的大小为16×16,即矩阵运算单元每次可计算一个16×16的矩阵。计算设备20可确定第二簇中包含的特征向量的个数是16的倍数,比如,计算设备20确定第二簇中包含的特征向量的个数为64。进一步的,比如当前第一簇中特征向量的个数为640个,则计算设备20可假设将640个特征向量平均划分至每个第二簇中,以得到第二簇的数量Y,即Y等于10。

如上,根据第一簇中特征向量的数量,或者根据第一簇中特征向量的数量和硬件条件,确定第一簇中的第二簇的数量,有助于提高聚类的灵活性。

此外,在计算设备20根据第二簇的数量Y和第二聚类算法,对第一簇中多个特征向量聚类得到Y个第二簇之后,还可进一步动态调整该Y个第二簇。

示例性的,计算设备20中预先设置有第二簇中特征数量的阈值(记为数量阈值)。计算设备20根据数量阈值,从Y个第二簇中选择一个或多个第三簇,其中,第三簇中特征向量的数量小于数量阈值。针对一个第三簇来说,计算设备20可计算第三簇的簇中心向量,分别与除第三簇以外的其他第二簇的簇中心向量之间的相似度,然后从中选择相似度最高的第二簇。计算设备20将该第三簇中的特征向量合并至该选择出的第二簇中,以组成新的第二簇。如此,计算设备20确定出Y’个第二簇,其中Y’为正整数,Y’且小于Y。

举例来说,计算设备20在对第一簇(记为簇1)进行聚类时,确定簇1对应的第二簇的数量Y的取值为5,将簇1中多个特征向量聚类得到5个第二簇,该5个第二簇可分别记为簇1-1至簇1-5,其中,簇1-1至簇1-5中分别包括300个特征向量、200个特征向量、200个特征向量、10个特征向量、20个特征向量。假设数量阈值取值为150,则簇1-4和簇1-5均为第三簇,进一步的,簇1-4与簇1-1最接近,计算设备20可将簇1-4中的10个特征向量合并至簇1-1中;簇1-5与簇1-2最接近,计算设备20可将簇1-5中的20个特征向量合并至簇1-2中。也即,Y’的取值为3,计算设备20对第一簇划分得到3个第二簇,分别是簇1-1至簇1-3,其中,簇1-1中包括310个特征向量,簇1-2中包括220个特征向量,簇1-3中包括200个特征向量。

上述技术方案中,在将第一簇中多个特征向量进行聚类得到第一簇中的多个第二簇之后,还可动态调整该多个第二簇,即将包含特征向量的数量较少的第二簇,合并至与之最接近的包含特征向量的数量较多的第二簇中,有助于提高查询精度。

需要补充的是,本申请中计算设备20还可对其他级聚类之后的簇,进行动态调整,比如对第一级聚类之后得到的第一级簇进行动态调整等,不再赘述。

如此,计算设备20可完成对X个第一簇中每个第一簇的聚类,以得到X个第一簇各自对应的Y个第二簇。举例来说,计算设备20确定出X个第一簇表示为簇1至簇X,其中,簇1中包括的3个第二簇分别表示为簇1-1至簇1-3;簇2中包括的2个第二簇分别表示为簇2-1和簇2-2;簇3中包括的4个第二簇分别表示为簇3-1至簇3-4,等等。

步骤503,计算设备20根据X个第一簇和X个第一簇中每个第一簇中的多个第二簇,建立索引库。

预先说明的是,可认为第二簇是多级聚类中最后一级聚类对应的簇。比如,计算设备20对特征库中特征向量进行三级聚类,则第二簇是三级聚类中第三级聚类对应的簇,第一簇是三级聚类中第二级聚类对应的簇;再比如,计算设备20对特征库中特征向量进行二级聚类,则第二簇是二级聚类中第二级聚类对应的簇,第一簇是二级聚类中第一级聚类对应的簇。其中,计算设备20对特征库中特征向量进行聚类的级数可大于或等于2,具体级数可根据特征库中特征向量的总数量和/或硬件条件确定。

计算设备20在确定出X个第一簇中每个第一簇的多个第二簇之后,可根据X个第一簇的簇标识和簇中心向量(即第一簇中心向量)、每个第一簇中多个第二簇的簇标识和簇中心向量(即第二簇中心向量)、每个第二簇中特征向量,生成索引库。

如下基于计算设备20对特征库中特征向量进行聚类的级数,分两种情况说明:

情况一、计算设备20对特征库中特征向量进行两级聚类。

可以理解,此处的第一簇即第一级簇,第二簇即第二级簇。

计算设备20可先针对X个第一级簇中每个第一级簇执行:根据第一级簇的簇标识和簇中心向量、第一级簇中多个第二级簇的簇标识和簇中心向量,以及每个第二级簇中的特征向量的标识,确定该第一级簇的索引,从而得到X个第一级簇的索引。计算设备20再将X个第一级簇的索引,组成索引库。

以上述计算设备20确定出簇1至簇X(即X个第一级簇)的例子说明:

计算设备20生成簇1的索引可参见表1所示。其中,簇1的簇标识表示为“簇1”,簇1的簇中心向量表示为“簇中心向量1”,簇1中包括簇1-1至簇1-3,其中,簇1-1的簇标识表示为“簇1-1”,簇1-1的簇中心向量表示为“簇中心向量1-1”,在簇1-1中包括100个特征向量,表示为“特征向量1-100”等。

表1

计算设备20还可生成其他第一簇(即簇2至簇X)的索引,并将簇1至簇X的索引,组成索引库,具体可参见表2所示。

表2

情况二、计算设备20对特征库中特征向量进行多级(大于两级)聚类。

可以理解,第一簇是计算设备20根据第一聚类算法对某个簇中特征向量进行聚类得到的。比如,计算设备20对特征库中特征向量进行三级聚类的情况下,计算设备20先对特征库中特征向量进行第一级聚类,得到多个第一级簇;对其中一个第一级簇进行聚类,得到多个第二级簇(即X个第一簇);对其中一个第二级簇(即第一簇)进行聚类,得到多个第三级簇(即Y个第二簇)。

在该情况中,计算设备20可先针对每个第一级簇执行:根据第一级簇的簇标识和簇中心向量、第一级簇中多个第二级簇的簇标识和簇中心向量(即第一簇中心向量)、每个第二级簇中多个第三级簇的簇标识和簇中心向量(即第二簇中心向量)、每个第三级簇中的特征向量的标识,确定该第一级簇的索引。再根据多个第一级簇的索引,确定索引库。具体方式与情况一类似。

仍以上述计算设备20确定的三个第一簇分别是簇1至簇3为例说明,其中,簇1至簇3即三个第二级簇,簇1至簇3的上一级簇即第一级簇,比如该第一级簇为簇0,计算设备20生成的索引库如表3所示,表3相比于表2增加一级索引。

表3

进一步的,在计算设备20对特征库中特征向量进行四级、五级或者更多级的聚类时,生成索引库方式,同样与情况一类似,不再赘述。

需要补充的是,在上述步骤501中,计算设备20除了确定出X个第一簇之外,还可能确定出无需进行下一级聚合的第一簇,计算设备20还可根据这些第一簇的簇中心向量和第一簇中的特征向量,生成这些第一簇的索引,进而生成索引库。

还需要补充的是,在上述多级聚类的任一级聚类中,多数特征向量与其所属簇的簇中心向量的相似度,会明显高于该特征向量与其他簇的簇中心向量的相似度,如此说明,该特征向量所在的簇可以较为准确的表达这个特征向量。

但是有些特征向量,与其所属簇的簇中心向量的相似度,以及与其他簇的簇中心向量的相似度之间的差别不大,此时,需要将该特征向量与多个簇进行绑定,以提高该特征向量在向量检索过程中被选择(或称为被召回)的概率,有助于提高向量检索过程中的精度。为方便描述,将该特征向量称为是冗余特征向量,即表明该特征向量需要被冗余存储。

计算设备20可从特征库包括的所有特征向量中选择冗余特征向量,进而确定冗余特征向量对应的冗余簇,该过程可称为是冗余存储过程。

进一步的,计算设备20可在执行多级聚类中的任一级聚类之后执行该冗余存储过程。如下,以计算设备20执行完第一簇对应的聚类之后,执行冗余存储过程为例说明。

如图6为本申请示例性提供的一种冗余存储过程的实现方式。

步骤601,计算设备20可对特征库中每个特征向量执行:从X个第一簇中,选择特征向量对应的冗余簇。

其中,特征向量与特征向量对应的冗余簇的簇中心向量的相似度符合预设冗余条件。

一个具体实现中,计算设备20在确定X个第一簇之后,可针对每个特征向量执行:确定该特征向量分别与除其所属簇以外的其他(X-1)个第一簇的簇中心向量的相似度,从而得到(X-1)相似度。计算设备20根据该(X-1)相似度,从除其所属簇以外的其他(X-1)个第一簇中选择特征向量对应的冗余簇。

如下基于预设冗余条件的具体表现形式,提供如下2个示例。

示例1,预设冗余条件具体是特征向量与其对应的冗余簇的簇中心向量的相似度,与特征向量与其所属簇的簇中心向量的相似度(记为基准相似度)的比值大于第一冗余阈值。可以理解,该相似度的比值越大,则表明特征向量与其对应的冗余簇的簇中心向量的相似度越大,也即该特征向量越应该被冗余存储至其对应的冗余簇中。

相应的,计算设备20可确定(X-1)相似度分别与基准相似度之间的比值,以得到(X-1)个比值。计算设备20再从该(X-1)个比值中,选择比值大于第一冗余阈值的比值,将选择出的这些比值对应的第一簇确定为该特征向量对应的冗余簇。

示例2,预设冗余条件具体是特征向量与其对应的冗余簇的簇中心向量的相似度,与特征向量与其所属簇的簇中心向量的相似度的比值,是比值从高到低的排序中的前h1个。其中,h1也可认为是预设的阈值,h1为正整数,比值的解释可参见示例1中说明。

相应的,计算设备20可确定(X-1)相似度分别与基准相似度之间的比值,以得到(X-1)个比值。计算设备20再从该(X-1)个比值中,选择比值从高到低的排序中的前h1个,将该h1个比值对应的h1个第一簇确定为该特征向量对应的冗余簇。

此外,预设冗余条件具体还可以是特征向量与特征向量对应的冗余簇的簇中心向量的相似度大于第二冗余阈值,从而计算设备20根据第二冗余阈值,确定特征向量对应的h1个冗余簇。或者,预设冗余条件具体是,特征向量与特征向量对应的冗余簇的簇中心向量的相似度,是相似度从高到低的排序中的前h1个,计算设备20根据(X-1)个相似度的从高到低的排序,确定特征向量对应的h1个冗余簇。具体实现可参见上述示例1和示例2。

如此,计算设备20可确定出特征库中每个特征向量对应的冗余簇,以及每个特征向量与其对应的冗余簇的簇中心向量的相似度。

结合表2和示例2继续举例,比如h1等于2,计算设备20确定特征向量1对应的冗余簇是簇2和簇3,特征向量2对应的冗余簇是簇3和簇4等等。进一步的,假设特征库中特征向量共计有20000个,计算设备20可确定出该20000个特征向量分别对应的2个冗余簇,以及该20000个特征向量分别与各自2个冗余簇的簇中心向量之间的2个相似度,也即,计算设备20共计确定出40000个相似度。

步骤602,计算设备20根据特征库中每个特征向量与各自特征向量对应冗余簇的簇中心向量的相似度,从多个特征向量中选择需要冗余存储的冗余特征向量。

计算设备20在获取到特征库中每个特征向量与各自特征向量对应冗余簇的簇中心向量的相似度之后,将这些相似度进行由高到低的排序。一个示例中,计算设备20从这些相似度的由高到低的排序中选择前h2个相似度,将该前h2个相似度对应的特征向量确定为冗余特征向量。其中,h2可认为是预设的阈值,h2为正整数。再一个示例中,计算设备200从这些相似度的由高到低的排序中,选择比例为前p%的相似度,将该选择出的相似度对应的特征向量确定为冗余特征向量,其中,p是预设的阈值,p为正整数。相应的,这些冗余特征向量需要被冗余存储至其对应的冗余簇中。

结合步骤601中例子继续说明,计算设备20可对该40000个相似度进行由高到低的排序,并从中选择前h2个相似度,比如h2取值为5000,则计算设备20可确定出5000相似度,进而确定5000个相似度分别对应的特征向量(即冗余特征向量),以及特征向量对应的冗余簇。比如,计算设备20确定出冗余特征向量和冗余簇分别是特征向量1和簇2,则表明该特征向量1不仅要存储至簇1中,还需要被冗余存储至簇2中。

需要解释的是,冗余特征向量被冗余存储至冗余簇中,可以认为是,计算设备20不仅将该冗余特征向量划分至其所属的簇中,还将该冗余特征向量划分至其对应的冗余簇中。从而计算设备20在生成索引库时,可生成该冗余特征向量与其对应的冗余簇之间的关系。比如,计算设备20确定冗余特征向量和其对应的冗余簇分别是特征向量1和簇2,计算设备20生成的索引库中关于特征向量1的索引可参见表4所示。

当然,表4仅是示例性说明冗余存储的作用,本申请中,索引库的形式还需要将表4和上述表1至表3结合起来理解。

表4

还需要解释的是,上述X个第一簇可存储至计算设备20的存储器202中,也即,每个第一簇可占用总存储空间的其中一部分。在对某个特征向量进行冗余存储时,需要将该特征向量存储至其所属的簇中,也即存储至其所属簇对应的一部分存储空间中;还需要将该特征向量存储至其对应的冗余簇中,也即存储至其对应的冗余簇对应的一部分存储空间中。可以理解,在一个可能方式中,计算设备20可根据总存储空间和/或剩余存储空间,确定冗余特征向量的总数,以及冗余特征向量对应的冗余簇的总数,也即,计算设备20可根据总存储空间和/或剩余存储空间,确定上述第一冗余阈值、h1、h2、p%、第二冗余阈值中一项或多项。其中,存储空间比如是存储器202中内存。

通过上述冗余存储过程,从特征库中确定出最需要被冗余存储的特征向量,在最合理利用存储空间的同时能够最大程度提高索引库的精度。

需要补充的是,如上是以计算设备20执行完第一簇对应的聚类之后,执行冗余存储过程为例进行说明,本申请还适用于计算设备20在执行完成其他级聚类之后,执行冗余存储过程,可将上述实施例中的“第一簇”替换为其他级聚类之后得到的簇,不再赘述。

此外,在计算设备20执行完冗余存储过程之后,可进一步执行下一级聚类。比如,计算设备20将冗余特征向量划分至其对应的冗余簇之后,对该包含有冗余特征向量的冗余簇进行下一级的聚类,随后再进一步生成索引库。

如上解释说明索引库生成过程和冗余存储过程,此外,本申请还提供一种特征存储的方法,具体的,计算设备20可在多级聚类之后,即在上述步骤502之后,对每个第二簇中的特征向量进行降维处理,然后将降维处理之后的特征向量存储至其所属簇的对应的一部分存储空间中,如此,有助于节省存储空间占用,减少数据搬运的耗时。

具体可参见图7示例性示出的一种特征存储方法的流程示意图。

步骤701,计算设备20对第二簇中每个M维特征向量进行降维处理,得到M维特征向量对应的N维特征向量。

其中,第二簇中每个特征向量具体是M维特征向量(即高维特征向量),M比如等于256。计算设备20对每个M维特征向量进行降维处理,可得到每个M维特征向量对应的N维特征向量(即低维特征向量),其中,N比如等于64维。

其中,M、N均为正整数,且N小于M,或者认为,M是N的整数倍。

如下解释说明降维处理的过程:

步骤a,计算设备20根据第二簇中多个M维特征向量确定向量矩阵;确定向量矩阵中每两个维度之间的相似度。

比如,第二簇中共计包括有J个M维特征向量,计算设备20可将该J个M维特征向量组成一个J行M列的向量矩阵。计算设备20针对该向量矩阵中的每两列(也即每两个维度),根据该两个维度分别包括的J个值,确定该两个维度之间的内积,该内积可用于衡量该两个维度之间的相似度,相似度越大则表明这两个维度越接近。如此,计算设备20可确定出该向量矩阵中每两个维度之间的相似度。

步骤b,计算设备20根据向量矩阵中的每两个维度之间的相似度,将向量矩阵中M个维度平均划分至N个特征维度组中。

也即,每个特征维度组中可包括有M/N个维度。结合上述将256维特征向量降维得到64维特征向量可知,每个特征维度组中包括4个维度。

计算设备20可遍历M个维度中的每个维度,如果这个维度没有被分组,则在其他的所有未分组维度中寻找与这个维度最接近的另外三个维度组成一组;如果这个维度已被划分组,则跳过该维度。直到所有维度都被划分至特征维度组中,即得到N个特征维度组。

可以理解,针对每个M维特征向量,该M维特征向量中的M个元素(也即数值)也分别位于各自的特征维度组中,比如256维特征向量中第1至第4维位于第1个特征维度组中,第5至第8维位于第2个特征维度组中等等。

步骤c,计算设备20针对任一个M维特征向量,将该M维特征向量中位于同一个特征维度组中的维度映射为一个元素,从而将N个特征维度组分别映射为N个元素,组成N维特征向量。

具体的,计算设备20针对N个特征维度组中一个特征维度组执行:将特征维度组中的M/N个维度,通过仿射变换计算,以得到一个元素。随后,计算设备20可获取N个特征维度组分别对应的N个元素,将该N个元素组成N维特征向量。从而实现对M维特征向量降维得到N维特征向量。

此外,上述第二簇中每个M维特征向量的数据格式均是FP32,计算设备20对每个M维特征向量进行降维之后,同样得到FP32的N维特征向量。为了进一步节省存储空间占用和减少数据搬运耗时,计算设备20可采用量化的方式将原本FP32的数据格式量化为INT8的数据格式,即得到INT8的N维特征向量,将该INT8的N维特征向量进行存储。

如图8为本申请示例性提供的一种256维特征向量降维得到64维特征向量的示意图,其中,256维特征向量可参见图8中(a)所示,每个方块代表256维特征向量中的一个值。

计算设备20可选择相似度较高的4个维度组成特征维度组,比如,图8中(a)的四个阴影块表示相似度较高的4个维度,即x

计算设备20对FP32的64维特征向量进行量化处理。仍以元素x

步骤702,计算设备20存储第二簇中每个M维特征向量对应的N维特征向量。

计算设备20将由原来的存储M维特征向量,变为现在的存储N维特征向量,有助于节省存储空间占用和减少数据搬运耗时。进一步的,计算设备20根据第二簇中多个M维特征向量确定向量矩阵,并通过计算向量矩阵中每两个维度之间的内积,实现对每个M维特征向量的降维处理,降维方式简单且计算量少。

此外,基于上述生成的索引库,本申请还提供一种向量检索方法,用于解决现有的基于空间划分(比如IVF)建立的索引应用于向量检索过程时,存在的计算量大、检索速度慢的问题。在该向量检索方法中,计算设备20可根据待查询向量和索引库,从特征库中查找目标特征向量,具体可参见图9示例性示出的流程图。

步骤901,计算设备20获取待查询向量。

计算设备20获取的待查询向量,具体可以是用户输入至计算设备20的某个特征向量,从而计算设备20可向用户返回该特征向量对应的目标特征向量。

或者,计算设备20获取的待查询向量,具体还可以是,特征库中的任一个特征向量。也即,计算设备20可遍历特征库中的每个特征向量,确定每个特征向量对应的目标特征向量,并记录该特征向量对应的目标特征向量。示例性的,计算设备20可确定每个特征向量的K个最邻近的特征向量(即KNN结果),记录特征库中全部特征向量的KNN结果。如此,在用户需要查询某个特征向量对应的目标特征向量时,可直接根据记录返回该特征向量对应的目标特征向量(比如KNN结果),从而有助于提高向量检索的效率。

步骤902,计算设备20根据待查询向量和索引库,从特征库中选择与待查询向量相关的目标特征向量。

索引库具体是上述图5和图6相关实施例中生成的索引库。其中,该索引库中包括多个第一簇的索引,在每个第一簇的索引中进一步包括第一簇的簇标识和簇中心向量(即第一簇中心向量)、第一簇中的多个第二簇的簇标识和簇中心向量(即第二簇中心向量)、每个第二簇中的特征向量。该索引库的具体表现形式,可参见表1至表4中描述。

如下可参见步骤(1)至步骤(4)解释说明计算设备20选择目标特征向量的方式:

步骤(1),计算设备20从索引库中查找与待查询向量对应的第一索引。

可选的,计算设备20将待查询向量与索引库中的多个索引记录的第一簇中心向量做比较,比较结果满足第一预设条件的为第一索引。

一个具体实现中,计算设备20可获取索引库中的n个索引分别记录的n个第一簇中心向量,确定待查询向量分别与该n个第一簇中心向量之间的n个相似度。计算设备20根据待查询向量分别与n个第一簇中心向量之间的n个相似度,从n个索引中选择相似度符合第一预设条件的第一索引,该第一索引对应的第一簇可称为是第一候选簇。

其中,第一预设条件具体可以是,第一簇中心向量与待查询向量之间的相似度大于第一相似度阈值。或者,第一预设条件具体还可以是,待查询向量分别与n个第一簇中心向量之间相似度的从高到低排序中的前K1个,K1为正整数。

步骤(2),计算设备20从第一索引中查找与待查询向量对应的第二簇中心向量。

第一索引可以是一个或多个,每个第一索引中可包括多个第二簇的簇中心向量(即第二簇中心向量)。示例性的,计算设备20在确定出一个或多个第一索引之后,可从该一个或多个第一索引中,确定出m个第二簇中心向量。结合上述表2中例子,比如簇1和簇2的索引都是第一索引,计算设备20可从簇1的索引中确定出3个第二簇中心向量,即簇中心向量1-1、簇中心向量1-2、簇中心向量1-3;计算设备20还可从簇2的索引中确定出2个第二簇中心向量,即簇中心向量2-1、簇中心向量2-2,其中,m=5。

进一步的,计算设备20确定待查询向量分别与m个第二簇中心向量之间的相似度。计算设备20根据待查询向量分别与m个第二簇中心向量之间的相似度,从m个第二簇中心向量中选择符合第二预设条件的第二簇中心向量,作为待查询向量对应的第二簇中心向量。

其中,第二预设条件具体可以是,第二簇中心向量与待查询向量之间的相似度大于第二相似度阈值,示例性的,第二相似度阈值大于第一相似度阈值。或者,第二预设条件还可以是,待查询向量分别与m个第二簇中心向量之间相似度的从高到低排序中的前K2个,K2为正整数。

步骤(3),计算设备20根据待查询向量对应的第二簇中心向量,找到待查询向量对应的第二簇中心向量对应的第二簇(可称为是第二候选簇)。

步骤(4),计算设备20从第二候选簇所包括的多个特征向量中查找目标特征向量。

可选的,目标特征向量与待查询向量的相似度符合第三预设条件。其中,第三预设条件具体可以是,目标特征向量与待查询向量的相似度大于第三相似度阈值,示例性的,第三相似度阈值大于第二相似度阈值。或者,第三预设条件还可以是,目标特征向量与待查询向量的相似度,是待查询向量分别与第二候选簇中的全部特征向量之间相似度的从高到低排序中的前K3个,其中,K3为正整数。

具体的,计算设备20在确定第二候选簇之后,可从索引库中获取第二候选簇中包含的多个特征向量。其中,第二候选簇可以是一个或多个,每个第二候选簇中可包括各自的多个特征向量,示例性的,计算设备20在确定一个或多个第二候选簇之后,从索引库中获取该一个或多个第二候选簇分别对应的多个特征向量。仍结合上述表2中例子,比如簇1-1和簇2-1均是第二候选簇,其中,簇1-1中包括特征向量1-100,簇2-1中包括特征向量301-400,计算设备20可获取到200个特征向量。计算设备20确定待查询向量分别与上述多个特征向量之间的相似度,根据待查询向量分别与该多个特征向量之间的相似度,从多个特征向量中选择相似度符合第三预设条件的特征向量,作为目标特征向量。

可选的,待查询向量可以具有M个维度,可称为是M维待查询向量。计算设备20可先对M维待查询向量进行降维处理,以得到N维待查询向量,具体的,计算设备20可按照存储过程中降维的分组方式(具体可参见上述图7和图8相关实施例中描述),将M维待查询向量对应的M个元素平均划分至N个特征维度组中,进而将N个特征维度组分别映射为N个元素,并组成N维待查询向量。计算设备20在对M维待查询向量进行降维处理得到N维待查询向量之后,计算设备20可获取第二候选簇中的多个N维特征向量,然后确定该N维待查询向量分别与第二候选簇中的多个N维特征向量之间的相似度。如此,在计算两个向量之间的相似度时,有助于降低计算设备20的计算量,从而提高检索效率。

需要补充的是,索引库的表现形式取决于计算设备20对特征库中特征向量进行聚类的级数。当计算设备20对特征库中特征向量进行两级聚类时,索引库的表现形式可参见表2所示。当计算设备20对特征库中特征向量进行多级(比如三级)聚类时,索引库的表现形式可参见表3所示。

如下基于计算设备20对特征库中特征向量进行聚类的级数,分两种情况说明:

情况一、计算设备20对特征库中特征向量进行两级聚类。

可以理解,特征库中的第一簇即为第一级簇,特征库中的第二簇即为第二级簇。

在计算设备20根据待查询向量和索引库,确定目标特征向量时,可将上述步骤(1)至步骤(4)中的“第一簇”替换为“第一级簇”,“第二簇”替换为“第二级簇”,“第一候选簇”替换为“第一级候选簇”,“第二候选簇”替换为“第二级候选簇”。

示例性的,计算设备20从索引库中查找与待查询向量对应的第一索引,该第一索引对应于第一级候选簇,该第一索引中包括第一级候选簇包括的多个第二级簇的簇中心向量(即第二级簇中心向量)。计算设备20从第一索引中查找与待查询向量对应的第二级簇中心向量,根据该第二级簇中心向量,找到该第二级簇中心向量对应的第二级候选簇。从该选择出的第二级候选簇所包括的多个特征向量中查找目标特征向量。

情况二、计算设备20对特征库中特征向量进行多级聚类。

以三级聚类为例,计算设备20在根据待查询向量和索引库,确定目标特征向量时,可将上述步骤(1)至步骤(4)中的“第一簇”替换为“第二级簇”,“第二簇”替换为“第三级簇”,“第一候选簇”替换为“第二级候选簇”,“第二候选簇”替换为“第三级候选簇”。

计算设备在步骤(1)之前先从多个第一级簇中选择第一级候选簇,该第一候选级簇中共计包括有多个第二级簇,该索引库中包括该多个第二级簇分别对应的索引。进一步的,计算设备20根据待查询向量,从多个第二级簇分别对应的索引中查找与待查询向量对应的第一索引,该第一索引对应于第二候选簇。计算设备20从第一索引中查找与待查询向量对应的第三级簇中心向量,根据该第三级簇中心向量,找到该第三级簇中心向量对应的第三级候选簇,从第三级候选簇所包括的多个特征向量中查找目标特征向量。

计算设备20对特征库中特征向量进行更多级聚类时,确定方式与情况一和情况二类似,不再赘述。

可选的,在上述步骤902中,计算设备20获取到的目标特征向量的数据格式为INT8,具体可参见图7和图8相关实施例中描述。随后,计算设备20可先对该INT8的目标特征向量进行反量化处理,以得到数据格式为FP32的N维特征向量。

需要指出的是,上述方法实施例中步骤均是以计算设备20执行为例说明,此外,上述方法实施例中步骤还可以是由计算设备20中的处理器201执行。如图10为本申请示例性提供的一种两级聚类情况下,计算设备20中的处理器201执行向量检索的流程示意图,其中,该计算设备20中的处理器201的结构可参见图3所示。

其中,CPU可用于执行运算指令下发、相似度排序、向量降维等,NPU可用于执行向量之间的相似度计算。具体可参见图10所示:

CPU可通过通信接口203,获取用户输入的待查询向量。

在第一级向量检索中:CPU下发第一级运算指令至NPU中,其中,第一级运算指令中包括相似度算子、待查询向量和多个第一级簇的簇中心向量(即第一簇中心向量),此处,该相似度算子即用于指示NPU计算待查询向量分别与多个第一级簇的簇中心向量之间的相似度。相应的,NPU执行第一级相似度计算,即NPU计算待查询向量分别与多个第一级簇的簇中心向量之间的相似度,将相似度的计算结果上报给CPU。CPU根据相似度的计算结果,进行第一级相似度排序,然后从多个第一级簇中选择一个或多个第一级候选簇(即第一候选簇)。其中,该一个或多个第一级候选簇各自对应于自己的多个第二级簇,即CPU可进一步确定出多个第二级簇。

在第二级向量检索中:CPU下发第二级运算指令至NPU中,其中,第二级运算指令中包括相似度算子、待查询向量和多个第二级簇的簇中心向量(即第二簇中心向量),此处,该相似度算子即用于指示NPU计算待查询向量分别与多个第二级簇的簇中心向量之间的相似度。相应的,NPU执行第二级相似度计算,即NPU计算待查询向量分别与多个第二级簇的簇中心向量之间的相似度,然后将相似度的计算结果上报给CPU。CPU根据相似度的计算结果,进行第二级相似度排序,然后从多个第二级簇中选择一个或多个第二级候选簇(即第二候选簇)。其中,该一个或多个第二级候选簇各自对应于自己的多个特征向量,即CPU可进一步确定出多个特征向量。此外,在该第二级向量检索中,CPU还可对待查询向量进行降维处理,即将M维待查询向量降维成N维待查询向量。

在第三级向量检索中:CPU下发第三级运算指令至NPU中,其中,第三级运算指令中包括相似度算子、待查询向量和第二级向量检索中确定出的多个特征向量,此处,该相似度算子即用于指示NPU计算待查询向量分别与多个特征向量之间的相似度。相应的,NPU执行第三级相似度计算,即NPU计算待查询向量分别与多个特征向量之间的相似度,然后将相似度的计算结果上报给CPU。CPU根据相似度的计算结果,进行第三级相似度排序,然后从多个特征向量中选择出一个或多个特征向量,作为目标特征向量。

CPU将该确定出的目标特征向量,再通过通信接口203反馈给用户。

进一步的,CPU中可包括6个CPU核,分别表示为CPU核0至CPU核5,其中,CPU核0可用于下发第一级运算指令、下发第二级运算指令和下发第三级运算指令,以及通过通信接口203获取用户输入的待查询向量和向用户反馈目标特征向量。CPU核0至CPU核5可用于共同执行第一级相似度排序、第二级相似度排序、第三级相似度排序和向量降维。

NPU中可包括2个NPU核,分别表示为NPU核0和NPU核1,其中,NPU核0和NPU核1可用于共同执行第一级相似度计算、第二级相似度计算和第三级相似度计算。

上述第一级向量检索至第三级向量检索,均可参见图9相关实施例中描述,不再赘述。

基于上述内容和相同构思,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序或指令,当该计算机程序或指令被执行时,使得计算机执行上述方法实施例中方法。

基于上述内容和相同构思,本申请实施例提供一种计算机程序产品,当计算机读取并执行计算机程序产品时,使得计算机执行上述方法实施例中方法。

可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的保护范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

相关技术
  • 一种基于N维向量夹角余弦的相似夹具检索方法
  • 向量索引建立方法及装置和向量检索方法及装置
  • 向量索引建立方法及装置和向量检索方法及装置
技术分类

06120116484207