一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种结合硬盘与内存的近邻图向量检索方法及装置

2022-11-30 22:07:37 来源:中国专利 TAG:


1.本发明属于向量检索领域,具体涉及一种结合硬盘与内存的近邻图向量检索方法及装置。


背景技术:

2.随着人工智能的发展,向量检索技术被广泛使用于人脸识别、文件搜索、语音识别等应用中。其中基于近邻图的向量检索技术凭借出色的搜索导航能力,成为当前学术界和工业界的一个研究热点。
3.但是,由于目前基于近邻图的向量检索技术过于依赖内存,随着数据规模的陡增,过高的内存消耗和计算开销对近邻图向量检索的广泛应用提出了巨大的挑战。为了解决这个问题,目前业界采用的一种主要解决方法是结合硬盘和内存的向量检索,通过将主要占用内存资源的近邻图存储在硬盘中从而大幅减少向量检索时的内存占用,并且,为了减少硬盘存取对检索时延迟的不利影响,主流的方法是为向量数据在内存中构建一份独立于近邻图的乘积量化索引,从而可以作为寻址辅助加速索引定位和读取,然而,这种方法存在因量化计算精度不高、硬盘访存次数仍偏多而引起的性能问题。针对这个问题,本发明面向近邻图向量检索提出了一种结合硬盘与内存的近邻图向量检索方法及装置。


技术实现要素:

4.基于现有技术中存在的上述缺点和不足,本发明提供一种结合硬盘与内存的近邻图向量检索方法:
5.s1,获取向量数据集s,根据向量数据集s中的各个向量之间的相似度距离构建近邻图g
6.s2,根据近邻关系按4k对齐方式调整近邻图g的存储结构并保存在硬盘中,得到近邻图g1;
7.s3,对近邻图g1进行一次采样计算,得到向量数据集s的采样数据集m;
8.s4,根据采样数据集m中的各个向量之间的相似度距离构建采样近邻图n;
9.s5,获取查询对象的特征向量作为查询向量v,在s4中所述采样近邻图n上查询得到最接近查询向量v的c个对象;
10.s6,将所述s5中得到的c个对象作为候选对象集,在s2中所述的近邻图g1中进一步查询得到最接近查询向量v的k个参照对象,输出所述k个参照对象作为向量检索的结果。
11.作为优选方案,步骤s2中提到的4k对齐方法具体为:
12.s2.1,计算按邻接表存储的近邻图g中的单个节点所需的磁盘空间sz,计算方式为(单位为字节):
13.sz=t1d 4p 4
14.其中,t1为单位数据类型所占用的空间,如单精度浮点型占用4字节,双精度浮点型占用8字节等,d为向量数据的维度,p为近邻图每个节点的连边上限;其中,近邻图g中的
每个节点包括:与当前节点唯一对应的向量、当前节点的邻居节点编号以及当前节点本身的编号。
15.s2.2,遍历近邻图g中所有未被选择过的节点x,计算在一个4k块内能存放的节点x的节点规模n,具体计算方式为:
[0016][0017]
若n》0,则将x和距离x最近且未被选择过的x的邻居点存放在同一个4k块中,并将这些点标记为已选择;若n=0,则单独将节点x存放在个连续的4k块中,并将x标记为已选择;
[0018]
s2.3,当近邻图g中的所有节点都被标记为已选择,将近邻图g所占内存释放。
[0019]
作为优选方案,步骤s3具体为:
[0020]
s3.1,设置向量集m’,初始化向量集m

为向量数据集s,即将向量数据集s中的所有向量放入向量集m

中,并设定内存限e;
[0021]
s3.2,随机选择向量集m

中未被选择过的向量v1,将向量v1标记为已选择;
[0022]
s3.3,在s2中得到的所述近邻图g1中,读取向量v1对应的节点x1所在的4k块,获取节点x1的邻居集,去除向量集m’中包含在节点x1的邻居集中的节点所对应的向量;
[0023]
s3.4,重复步骤s3.2和s3.3,直到向量集m

中的向量全被标记为已选择;
[0024]
s3.5,计算按向量集m

生成的近邻图的预期大小sg=|m

|
×
sz,其中|m

|为向量集m

所包含的向量个数,sz为步骤s2.1中所述单个节点所需的磁盘空间;
[0025]
s3.6,比较近邻图的预期大小sg与设定的内存限e的大小,若近邻图的预期大小sg大于内存限e,则将向量集m

中所有向量标记为未选择,重复步骤s3.2~s3.5,否则,结束采样,返回当前向量集m

,作为采样数据集m。
[0026]
作为进一步优选的方案,根据搜索空间的特征,即向量数据集s的聚集情况可调整步骤s3中采样处理的具体方式;若向量数据集s未知分布或偏均匀分布,可按上述步骤s3.1到s3.6的中所述方式采样;若向量数据集s经kmeans聚类发现存在聚类簇集ci满足条件则采样处理的具体处理方式包括以下步骤:
[0027]
s’3.1,设置候选向量集mc和向量集m0,初始化候选向量集mc为向量数据集s,初始化向量集m0为空集,设定内存限e;
[0028]
s’3.2,随机选择候选向量集mc中未被选择过的向量v2,将向量v2标记为已选择;
[0029]
s’3.3,在s2中得到的所述近邻图g1中,读取向量v2所对应的节点x2所在的4k块,获取节点x2的邻居集,去除候选向量集mc中包含在节点x2的邻居集中的节点所对应的向量;
[0030]
s’3.4,重复步骤s’3.2和s’3.3,直到候选向量集mc中的元素全被标记为已选择;
[0031]
s’3.5,计算按候选向量集mc生成的近邻图的预期大小sg=|mc|
×
sz,其中|mc|为候选向量集mc所包含的向量个数,sz为步骤s2.1中所述单个节点所需的磁盘空间;
[0032]
s’3.6,比较近邻图的预期大小sg与设定的内存限e的大小,若近邻图的预期大小sg大于内存限e,则将候选向量集mc中所有向量标记为未选择,重复步骤
[0033]
s’3.2~s’3.5,否则,更新向量集m0=m0∩mc,更新内存限e=e-sg;
[0034]
s’3.7,初始化候选向量集mc为所有满足条件的聚类簇集的交集重复步骤s’3.2~s’3.6,结束采样,返回当前向量集m0,作为采样数据集m。
[0035]
其中|ci|为聚类簇集ci内向量个数,|s|为向量数据集s内向量个数;
[0036]
除此之外,若用户提前知晓待查询向量的近邻范围或用户对向量数据集s的某个子集cs有更精确的查询需求,也可按s’3的采样方法视cr和cs为满足条件的向量集做采样。
[0037]
本发明还提供一种结合硬盘与内存的近邻图向量检索装置,包括:
[0038]
根据向量数据集s中的各个向量之间的相似度距离构建近邻图g的装置;
[0039]
根据近邻关系按4k对齐方式调整近邻图g的存储结构并保存在硬盘中,得到近邻图g1的装置;
[0040]
对近邻图g1进行一次采样处理,得到向量数据集s的采样数据集m的装置;
[0041]
根据采样数据集m中的各个向量之间的相似度距离构建采样近邻图n的装置;
[0042]
获取查询对象的特征向量作为查询向量v,在所述采样近邻图n上查询得到最接近查询向量v的c个对象的装置;
[0043]
将所述c个对象作为候选对象集,在所述的近邻图g1中进一步查询得到最接近查询向量v的k个参照对象,输出所述k个参照对象作为向量检索的结果的装置。
[0044]
本发明与现有技术相比,有益效果是:本发明的方法通过步骤s2,根据近邻图的节点邻居信息在硬盘中做聚集节点的存放,减少了内存占用且提高了在硬盘中读取近邻图的效率;通过步骤s3和s4,按照数据集的分布特征在内存中建立小规模的近邻图作为导航,加快查询结果的定位速度;通过步骤s5和s6,将搜索过程分为粗略导航阶段和精确搜索阶段,减少了搜索时在硬盘中的路由次数,在保证搜索结果准确率的情况下缩短了延迟。
附图说明
[0045]
图1是本发明实施例的一种结合硬盘与内存的近邻图向量检索方法的流程图;
[0046]
图2是本发明实施例的一种结合硬盘与内存的近邻图向量检索方法的举例流程图。
[0047]
为了更清楚地说明本发明实施例,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
[0048]
实施例1:
[0049]
本实施例提供的一种结合硬盘与内存的近邻图向量检索方法及装置,其方法流程图如图1所示,本实施例中以基于近邻图对类型分布未知的专利数据进行搜索举例,进一步举例说明的流程图如图2所示。
[0050]
在进行步骤s1之前,首先为获取的专利数据集生成对应的特征向量集。特征向量的生成采用预训练模型进行,对于专利说明书等文本数据可采用现有的bert模型进行训练提取特征转变为专利特征向量集s;
[0051]
然后进行步骤s1,根据专利特征向量集s中的各个向量的相似度距离构建专利近
邻图g1,相似度距离的计算方式可以为向量之间的拉格朗日距离:其中,a,b为任意d维向量,ai为a向量的第i个分量,bi为b向量的第i个分量,dis函数返回a,b的相似度距离;
[0052]
进一步地,构建专利近邻图g的具体过程可以参考层数为1的hnsw图的构建方式:
[0053]
s1.1,从专利特征向量集s中选取一个专利向量ei,选取与其距离最小或者与其距离大于与它当前所连接的所有邻居专利向量距离的efc个对象作为向量集sa,设定连边上限p;
[0054]
s1.2,从向量集sa中选取一个与专利向量ei距离最小的专利向量与其连接;
[0055]
s1.3,以由距离专利向量ei近到远的顺序依次从向量集sa中选取专利向量ej与专利向量ei连边,直到所述对象向量ei的连边数量达到连边上限p或尝试完向量集sa中的全部专利向量;
[0056]
s1.4,判断是否仍有专利向量没在步骤s1.1中被选取,若是则返回步骤s1.1,若否则完成专利近邻图g(vt,eg)的生成,其中vt为节点集,eg为边集;
[0057]
然后进行步骤s2,根据专利近邻图g的近邻结构,以4k对齐方式调整其存储并保存在硬盘中得到近邻图g1;
[0058]
进一步地,4k对齐方式具体过程为:
[0059]
s2.1,计算按邻接表存储的近邻图中的单个专利节点所需的磁盘空间sz,计算方式为(单位为字节):
[0060]
sz=t1d 4p 4
[0061]
其中,t1为单位数据类型所占用的空间,如单精度浮点型占用4字节,双精度浮点型占用8字节等,d为向量数据的维度,p为近邻图每个节点的连边上限;其中,近邻图g中的每个节点包括:与当前节点唯一对应的向量、当前节点的邻居节点编号以及当前节点本身的编号。
[0062]
s2.2,随机选取一个近邻图g中未被选择过的点x,计算在一个4k块内能存放的关于节点x的节点规模n,具体计算方式为:
[0063][0064]
若n》0,则将x和距离x最近且未被选择过的x的邻居点存放在同一个4k块中,并将这些点标记为已选择;若n=0,则单独将节点x存放在个连续的4k块中,并将x标记为已选择;
[0065]
s2.3,当近邻图中的所有点都被标记为已选择,将专利近邻图g所占内存释放。
[0066]
然后进行步骤s3,对s2中所述专利近邻图g1进行一次采样计算,得到专利特征向量集s的采样专利特征向量集m;
[0067]
进一步地,采样专利特征向量集m的生成过程为:
[0068]
s3.1,设置向量集m’,初始化向量集m

为专利特征向量集s,设定内存限e;
[0069]
s3.2,随机选择向量集m

中未被选择过的向量v1,将向量v1标记为已选择;
[0070]
s3.3,在s2中所述得到的专利近邻图g1中读取向量v1所对应的节点x1所在的4k块,
获取节点x1的邻居集,去除向量集m

中包含在x1邻居集中的节点所对应的向量;
[0071]
s3.4,重复步骤s3.2和s3.3,直到向量集m

中的向量全被标记为已选择;
[0072]
s3.5,计算按向量集m’生成的近邻图预期大小sg=|m

|
×
sz,其中|m

|为向量集m

所包含的向量个数,sz为步骤s2.1中所述单个节点所占用的空间;
[0073]
s3.6,比较近邻图的预期大小sg与设定的内存限e的大小,若近邻图的预期大小sg大于内存限e,则将向量集m

中所有向量标记为未选择,重复步骤s3.2~s3.5,否则,结束采样,返回当前向量集m

,作为采样专利特征向量集m。
[0074]
然后进行步骤s4,根据采样专利特征向量集m中的各向量间的相似度距离按照s1中的方法,构建采样专利近邻图n;这个方法和上述s1步骤中的方法是一样的,区别在于参数不同,s1是对特征向量集s构建图,s4对采样特征向量集构建图。
[0075]
到此近邻图生成阶段结束,即可以使用近邻图g1和n进行查询,在进行步骤s5之前,先将待查询的专利内容生成一个查询对象作为查询向量v,即由预训练模型生成的关于待查询专利说明书等文本数据的特征向量。
[0076]
当待查询专利数据的特征向量生成完成后,进行步骤s5,使用查询向量v在采样专利近邻图n上查询得到最接近的c个专利特征向量对象;
[0077]
最后进行步骤s6,使用上一个步骤中得到的c个专利特征向量对象作为候选对象集,在近邻图g1中进一步查询得到最接近的k个专利特征向量对象,所得到的专利特征向量所对应的专利对象即待查询专利对象的前k个最相似专利对象。
[0078]
进一步地,查询算法采用常用的贪心算法,具体为:
[0079]
s5.1,随机选取一个采样专利近邻图n的节点作为查询起始节点es,加入候选节点集合b中,设定候选节点集合b最大容量ef;
[0080]
s5.2,从b中选取与v距离最小的未访问节点x2,获取所述x2的邻居节点集nei(x)=(y1,y2,

,y
l
),其中y
l
为x2的第l个邻居节点,l为x2的邻居个数;标记所述x2为已访问节点;
[0081]
s5.3,将nei(x)中的每个邻居节点加入到b中,并只保留b中与v距离最小的前ef个节点;
[0082]
s5.4,判断b中是否存在未被访问过的节点,若是则返回步骤s5.2,若否则结束查询并返回b中的与v距离最小的前c个节点作为查询结果。
[0083]
另外需要额外说明的是,上述实施例1的方法在步骤s3中提到的采样方法可以根据场景需求灵活调整,本实施例1中采用的采样方法是考虑到本专利特征向量集s的分布未知,否则可根据数据的聚集化情况对高度聚集的数据簇着重采样,举例如实施例2。
[0084]
实施例2
[0085]
本实施例提供的一种结合硬盘与内存的近邻图向量检索方法及装置,其方法流程图如图1所示,本实施例中以基于近邻图对包含专利内容大部分为软件相关的专利数据进行搜索举例,进一步举例说明的流程图如图2所示。
[0086]
在进行步骤s1之前,首先为获取的专利数据集生成对应的特征向量集。特征向量的生成采用预训练模型进行,对于专利说明书等文本数据可采用现有的bert模型进行训练提取特征转变为专利特征向量集s;
[0087]
然后进行步骤s1,根据专利特征向量集s中的各个向量的相似度距离构建专利近邻图g1,相似度距离的计算方式可以为向量之间的拉格朗日距离:
其中,a,b为任意d维向量,ai为a向量的第i个分量,bi为b向量的第i个分量,dis函数返回a,b的相似度距离;
[0088]
进一步地,构建专利近邻图g的具体过程可以参考层数为1的hnsw图的构建方式:
[0089]
s1.1,从专利特征向量集s中选取一个专利向量ei,选取与其距离最小或者与其距离大于与它当前所连接的所有邻居专利向量距离的efc个对象作为向量集sa,设定连边上限p;
[0090]
s1.2,从向量集sa中选取一个与专利向量ei距离最小的专利向量与其连接;
[0091]
s1.3,以由距离专利向量ei近到远的顺序依次从向量集sa中选取专利向量ej与专利向量ei连边,直到所述对象向量ei的连边数量达到连边上限p或尝试完向量集sa中的全部专利向量;
[0092]
s1.4,判断是否仍有专利向量没在步骤s1.1中被选取,若是则返回步骤s1.1,若否则完成专利近邻图g(vt,eg)的生成,其中vt为节点集,eg为边集;
[0093]
然后进行步骤s2,根据专利近邻图g的近邻结构,以4k对齐方式调整其存储并保存在硬盘中得到近邻图g1;
[0094]
进一步地,4k对齐方式具体过程为:
[0095]
s2.1,计算按邻接表存储的近邻图中的单个专利节点所需的磁盘空间sz,计算方式为(单位为字节):
[0096]
sz=t1d 4p 4
[0097]
其中,t1为单位数据类型所占用的空间,如单精度浮点型占用4字节,双精度浮点型占用8字节等,d为向量数据的维度,p为近邻图每个节点的连边上限;其中,近邻图g中的每个节点包括:与当前节点唯一对应的向量、当前节点的邻居节点编号以及当前节点本身的编号。
[0098]
s2.2,随机选取一个近邻图g中未被选择过的点x,计算在一个4k块内能存放的关于节点x的节点规模n,具体计算方式为:
[0099][0100]
若n》0,则将x和距离x最近且未被选择过的x的邻居点存放在同一个4k块中,并将这些点标记为已选择;若n=0,则单独将节点x存放在个连续的4k块中,并将x标记为已选择;
[0101]
由于已知获取的专利数据集的大部分专利内容为软件相关,因此对生成的专利特征向量集s做kmeans聚类可以发现存在一个软件簇集c0满足条件因此调整步骤s3,对s2中所述专利近邻图g进行一次采样计算,得到专利特征向量集s的采样专利特征向量集m;
[0102]
进一步地,采样专利特征向量集m的生成过程为:
[0103]
s’3.1,设置候选向量集mc和向量集m0,初始化候选向量集mc为向量数据集s,初始化向量集m0为空集,设定内存限e;
[0104]
s’3.2,随机选择候选向量集mc中未被选择过的向量v2,将向量v2标记为已选择;
[0105]
s’3.3,在s2中得到的所述近邻图g1中,读取向量v2所对应节点x2所在的4k块,获取节点x2的邻居集,去除候选向量集mc中包含在节点x2的邻居集中的节点所对应的向量;
[0106]
s’3.4,重复步骤s’3.2和s’3.3,直到候选向量集mc中的向量全被标记为已选择;
[0107]
s’3.5,计算按候选向量集mc生成的近邻图的预期大小sg=|mc|
×
sz,其中|mc|为候选向量集mc所包含的向量个数,sz为步骤s2.1中所述单个节点所需的磁盘空间;
[0108]
s’3.6,比较近邻图的预期大小sg与设定的内存限e的大小,若近邻图的预期大小sg大于内存限e,则将候选向量集mc中所有向量标记为未选择,重复步骤
[0109]
s’3.2~s’3.5,否则,更新向量集m0=m0∩mc,更新内存限e=e-sg;
[0110]
s’3.7,初始化候选向量集mc为聚类簇集c0,重复步骤s’3.2~s’3.6,结束采样,返回当前向量集m0作为采样专利特征向量集m。
[0111]
其中|ci|为聚类簇集ci内元素个数,|s|为向量数据集s内元素个数;
[0112]
然后进行步骤s4,根据采样专利特征向量集m中的各向量间的相似度距离按照s1中的方法,构建采样专利近邻图n;
[0113]
到此近邻图生成阶段结束,即可以使用近邻图g1和n进行查询,在进行步骤s5之前,先将待查询的专利内容生成一个查询对象作为查询向量v,即由预训练模型生成的关于待查询专利说明书等文本数据的特征向量。
[0114]
当待查询专利数据的特征向量生成完成后,进行步骤s5,使用查询向量v在采样专利近邻图n上查询得到最接近的c个专利特征向量对象;
[0115]
最后进行步骤s6,使用上一个步骤中得到的c个专利特征向量对象作为候选对象集,在近邻图g1中进一步查询得到最接近的k个专利特征向量对象,所得到的专利特征向量所对应的专利对象即待查询专利对象的前k个最相似专利对象。
[0116]
进一步地,查询算法采用常用的贪心算法,具体为:
[0117]
s5.1,随机选取一个采样专利近邻图n的节点作为查询起始节点es,加入候选节点集合b中,设定候选节点集合b最大容量ef;
[0118]
s5.2,从b中选取与v距离最小的未访问节点x2,获取所述x2的邻居节点集nei(x)=(y1,y2,

,y
l
),其中y
l
为x2的第l个邻居节点,l为x2的邻居个数;标记所述x2为已访问节点;
[0119]
s5.3,将nei(x)中的每个邻居节点加入到b中,并只保留b中与v距离最小的前ef个节点;
[0120]
s5.4,判断b中是否存在未被访问过的节点,若是则返回步骤s5.2,若否则结束查询并返回b中的与v距离最小的前c个节点作为查询结果。
[0121]
一种实施上述结合硬盘与内存的近邻图向量检索方法的结合硬盘与内存的近邻图向量检索装置,包括以下装置:
[0122]
获取向量数据集s,根据向量数据集s中的各个向量之间的相似度距离构建近邻图g的近邻图构建装置;
[0123]
根据近邻关系按4k对齐方式调整近邻图g的存储结构并保存在硬盘中,得到近邻图g1的调整装置;
[0124]
对近邻图g1进行采样处理,得到向量数据集s的采样数据集m的采样装置;
[0125]
根据采样数据集m中的各个向量之间的相似度距离构建采样近邻图n的近邻图构建装置;
[0126]
获取查询对象的特征向量作为查询向量v,在所述采样近邻图n上查询得到最接近查询向量v的c个对象的查询装置;
[0127]
将所述c个对象作为候选对象集,在所述的近邻图g1中进一步查询得到最接近查询向量v的k个参照对象,输出所述k个参照对象作为向量检索的结果的输出装置。
[0128]
本装置执行上述结合硬盘与内存的近邻图向量检索方法,能实现以下有益效果:能根据所设定内存限调整近邻图导航效果,在搜索时节约大量的内存,并缩短搜索的延迟且保持结果的准确率,还能通过提前在内存中计算采样近邻图的查询结果来扩大初始候选对象集,并且根据节点邻居信息在硬盘中做聚集节点的存放,从而提高了硬盘读取效率,进一步加快了搜索的速度。
[0129]
应当说明的是,以上仅是对本发明的优选实施例及原理进行了详细说明,对本领域的普通技术人员而言,依据本发明提供的思想,在具体实施方式上会有改变之处,而这些改变也应视为本发明的保护范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献