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

相似性搜索方法和装置与流程

2021-12-07 20:22:00 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,尤其涉及一种相似性搜索方法和装置。


背景技术:

2.相似性搜索指的是在大量的待匹配目标中获取与输入的查询目标最为相似的一个或多个目标。在目前的相似性搜索领域,由于创建索引较慢、查询qps(queries per second,每秒查询率)较低等技术原因,无法支持针对数十亿量级的待匹配目标以及数百万量级的查询目标的搜索,同时,现有的相似性搜索系统会在较长时间占用大量内存,导致无法应用在离线查询业务或者内存有限的场景。


技术实现要素:

3.有鉴于此,本发明实施例提供一种相似性搜索方法和装置,能够提高搜索效率,支持针对数十亿量级的待匹配目标以及数百万量级的查询目标的相似性搜索。
4.为实现上述目的,根据本发明的一个方面,提供了一种相似性搜索方法。
5.本发明实施例的相似性搜索方法包括:获取多个待匹配目标的特征向量,按照所述待匹配目标所属的类别将所述特征向量分配到预设的计算机集群中的多个计算节点;其中,每一计算节点对应于一个或多个类别;在每一计算节点为每一类别的待匹配目标的特征向量创建索引,具有同一索引的特征向量处在对应于该索引的同一索引分区;建立每一类别与该类别待匹配目标的特征向量所在索引分区的映射关系;获取查询目标的特征向量,依据查询目标所属类别和所述映射关系确定查询目标对应的索引分区;在确定的索引分区中利用查询目标的特征向量进行搜索,得到与查询目标相似的预设第一数量的待匹配目标作为搜索结果。
6.可选地,所述索引为基于预设的相似性搜索工具的索引;以及,所述在确定的索引分区中利用查询目标的特征向量进行搜索,包括:对于确定的任一索引分区,将查询目标的特征向量输入所述相似性搜索工具进行搜索,得到该索引分区中的候选目标以及所述候选目标与查询目标的相似度;其中,所述候选目标是该索引分区中与查询目标相似度最大的预设第二数量的待匹配目标。
7.可选地,所述得到与查询目标相似的预设第一数量的待匹配目标作为搜索结果,包括:将确定的每一索引分区中的候选目标按照所述相似度降序排列,将排列在前的第一数量的候选目标确定为搜索结果。
8.可选地,所述计算机集群为spark集群,所述相似性搜索工具为faiss,所述相似度为基于欧式距离或向量内积的相似度。
9.为实现上述目的,根据本发明的另一方面,提供了一种相似性搜索装置。
10.本发明实施例的相似性搜索装置可以包括:分配单元,用于获取多个待匹配目标的特征向量,按照所述待匹配目标所属的类别将所述特征向量分配到预设的计算机集群中的多个计算节点;其中,每一计算节点对应于一个或多个类别;索引创建单元,用于在每一
计算节点为每一类别的待匹配目标的特征向量创建索引,具有同一索引的特征向量处在对应于该索引的同一索引分区;建立每一类别与该类别待匹配目标的特征向量所在索引分区的映射关系;索引分区确定单元,用于获取查询目标的特征向量,依据查询目标所属类别和所述映射关系确定查询目标对应的索引分区;搜索单元,用于在确定的索引分区中利用查询目标的特征向量进行搜索,得到与查询目标相似的预设第一数量的待匹配目标作为搜索结果。
11.可选地,所述索引为基于预设的相似性搜索工具的索引;以及,所述搜索单元可进一步用于:对于确定的任一索引分区,将查询目标的特征向量输入所述相似性搜索工具进行搜索,得到该索引分区中的候选目标以及所述候选目标与查询目标的相似度;其中,所述候选目标是该索引分区中与查询目标相似度最大的预设第二数量的待匹配目标。
12.可选地,所述搜索单元可进一步用于:将确定的每一索引分区中的候选目标按照所述相似度降序排列,将排列在前的第一数量的候选目标确定为搜索结果。
13.可选地,所述计算机集群为spark集群,所述相似性搜索工具为faiss,所述相似度为基于欧式距离或向量内积的相似度。
14.为实现上述目的,根据本发明的又一方面,提供了一种电子设备。
15.本发明的一种电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明所提供的相似性搜索方法。
16.为实现上述目的,根据本发明的再一方面,提供了一种计算机可读存储介质。
17.本发明的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明所提供的相似性搜索方法。
18.根据本发明的技术方案,上述发明中的实施例具有如下优点或有益效果:
19.执行搜索之前,预先根据待匹配目标所属的类别将待匹配目标的特征向量分配到计算机集群(如spark集群)的多个计算节点,并为每一计算节点的待匹配目标特征向量创建基于相似性搜索工具(如faiss)的索引,以及建立待匹配目标所属类别与相应索引分区的映射关系。执行搜索时,首先根据查询目标所属的类别和上述映射关系确定一个或多个索引分区,之后在每一索引分区基于相似性搜索工具进行查询,最后综合确定的每一索引分区的查询结果得到最终的相似性搜索结果。这样,可以将相似性搜索工具与计算机集群有效结合以提高相似性搜索效率,在搜索之前首先定位查询目标对应的索引分区从而减小搜索范围,搜索在多个计算节点以及多个索引分区并行展开从而提高计算效率。另外,由于本发明实施例基于例如spark的计算机集群实现,内存资源即用即申请,不用则释放,不需要额外申请资源,由此解决现有的相似性搜索技术在较长时间内占用大量内存的问题。根据以上设置,本发明实施例能够支持针对数十亿量级的待匹配目标以及数百万量级的查询目标的相似性搜索。
20.上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
21.附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
22.图1是本发明实施例中相似性搜索方法的主要步骤示意图;
23.图2是本发明实施例中相似性搜索方法的具体实现示意图;
24.图3是本发明实施例中相似性搜索装置的组成部分示意图;
25.图4是根据本发明实施例可以应用于其中的示例性系统架构图;
26.图5是用来实现本发明实施例中相似性搜索方法的电子设备结构示意图。
具体实施方式
27.以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
28.需要指出的是,在不冲突的情况下,本发明的实施例以及实施例中的技术特征可以相互结合。
29.图1是根据本发明实施例中相似性搜索方法的主要步骤示意图。
30.如图1所示,本发明实施例的相似性搜索方法可具体按照如下步骤执行:
31.步骤s101:获取多个待匹配目标的特征向量,按照待匹配目标所属的类别将特征向量分配到预设的计算机集群中的多个计算节点。
32.在本发明实施例中,待匹配目标指的是用于与输入的查询目标进行匹配的目标,相似性搜索的最终搜索结果存在于待匹配目标之中,以上目标可以是物品、用户等各种对象,以下将主要以物品为例进行说明。例如,当需要在数十亿量级的物品中查询输入的某一物品的相似物品时,数十亿量级的物品即为待匹配目标,输入的某一物品即为查询目标。
33.在本步骤中,首先可以根据每一待匹配目标的名称、描述信息等数据获取其特征向量,上述特征向量可用于标识相应的待匹配目标。具体地,可以对每一待匹配目标的名称、描述信息等数据进行分词处理,并将分词处理后的数据输入预先训练完成的词向量生成模型word2vec,从而得到待匹配目标的特征向量。可以理解,以上分词处理可以采用现有的各种分词算法,特征向量也可以采用其它的向量化模型实现,本发明并不对此进行限制。
34.得到待匹配目标的特征向量之后,可以按照待匹配目标所属的类别将上述特征向量分配到预设的计算机集群中的多个计算节点。具体应用中,以上类别可以是各种粒度的类目或品类,本步骤中采用的类别粒度可以根据需求设置。例如,对于作为待匹配目标的一件女式风衣,女式上衣、女装、服装这几种不同粒度的类别均可以作为其所属类别。
35.在本步骤中的计算机集群指的是能够执行大数据计算和分析的集群,例如spark集群(spark是一种已知的快速通用的计算引擎),计算机集群由多个计算节点组成,并利用各计算节点的协作完成计算任务。可以理解,上述计算机集群不限于spark集群,还可以是基于twister、haloop等已知计算引擎的集群。
36.在本步骤中,可以根据预设的单计算节点的最大数据处理量以及每一类别(待匹配目标所属类别)包含的特征向量数量执行分配,分配完成之后,一个计算节点能够对应一个或多个类别。例如,若单计算节点的最大数据处理量为100万,类别a的数据量为100万,则可为类别a分配一个计算节点;若类别b、c的数据量都为50万,则可为类别b、c分配一个计算节点;若类别d的数据量为200万,则可为类别d分配两个计算节点。
37.步骤s102:在每一计算节点为每一类别的待匹配目标的特征向量创建索引,具有同一索引的特征向量处在对应于该索引的同一索引分区;建立每一类别与该类别待匹配目标的特征向量所在索引分区的映射关系。
38.在本步骤中,可以为分配到每一计算节点的数据创建索引。特别地,该索引为基于预设的相似性搜索工具的索引。示例性地,以上相似性搜索工具可以是已知的聚类和相似性搜索工具faiss,也可以是其它适用的相似性搜索工具,以下以faiss为例进行说明。
39.faiss的索引能够指示数据的分割方式和编码方式并帮助实现具体的查询。索引类型包括以下几种:indexflatl2(基于欧式距离计算的索引类型)、indexflatip(基于点积计算的索引类型)、indexhnswf lat(基于分层的索引类型)、indexivfflat(基于精确检验的索引类型)、indexlsh(基于局部敏感哈希的索引类型)、indexscalarquantizer(基于标量量化的索引类型)、indexpq(基于量化的索引类型)、indexi vfscalarquantizer(一种组合方式的索引类型)、indexivfpq(另一种组合方式的索引类型)、indexivfpqr(indexivfpq的优化版)。
40.较佳地,可以依据预设的单索引数据量为每一计算节点中的特征向量数据创建索引,并根据实际需求确定每一索引的索引类型。承接上例,若单索引数据量为20万,则需要为一个计算节点的数据创建5个索引;若需要对某计算节点中某类别的20万数据进行精确匹配,则可以创建indexflatl2索引;若需要对某计算节点中某类别的20万数据进行模糊匹配,则可以创建indexlsh索引。
41.索引创建完成之后,具有同一索引的特征向量处在对应于该索引的同一索引分区,以上索引分区指的是对应于同一索引的计算节点中的数据存储空间。此后,可以建立每一类别与该类别待匹配目标的特征向量所在索引分区的映射关系,用于确定每一待匹配目标以及每一查询目标对应的索引分区。实际应用中,可使用以下路由表表示上述映射关系。
[0042][0043][0044]
基于上述路由表,可以获取任一类别对应的索引分区、索引类型以及搜索结果数量(即索引分区返回的候选目标数量,候选目标将在下文说明),索引分区标识用于唯一指示索引分区,可以由相应的计算节点标识和索引分区id组成,例如l1_03表示该索引分区为计算节点l1中id为03的索引分区。可以理解,上述路由表中也可以只存储类别字段和索引分区标识字段。
[0045]
步骤s103:获取查询目标的特征向量,依据查询目标所属类别和映射关系确定查询目标对应的索引分区。
[0046]
在本发明实施例中,首先可以对查询目标的名称、描述信息等进行分词处理,并将分词处理后的数据输入word2vec等向量化模型,得到查询目标的特征向量。这一动作可以执行在步骤s101之前、之后或同时。此后,在上述路由表中确定查询目标所属类别对应的索引分区,后续的数据搜索即在确定的索引分区中执行。通过以上设置,能够减小搜索范围,
从而提高计算效率。
[0047]
步骤s104:在确定的索引分区中利用查询目标的特征向量进行搜索,得到与查询目标相似的预设第一数量的待匹配目标作为搜索结果。
[0048]
在本步骤中,可以利用相似性搜索工具faiss在确定的每一索引分区中进行搜索,从而得到最终的搜索结果。具体而言,对于确定的任一索引分区,将查询目标的特征向量输入相似性搜索工具faiss进行搜索,得到该索引分区中的候选目标以及每一候选目标与查询目标的相似度。上述候选目标是该索引分区中与查询目标相似度最大的预设第二数量的待匹配目标,上述相似度可以采用欧式距离的函数(如倒数)或向量内积来表示。可以理解,欧式距离越大,相似度越小;向量内积越大,相似度越大(在对向量进行了归一化的情况下)。
[0049]
在得到每一索引分区返回的候选目标之后,如果不同索引分区返回的候选目标中存在相同的候选目标,则首先将多条候选目标数据合并为一条,合并后数据中的相似度可以是合并前多条数据中相似度的最大值。此后,可以将这些候选目标按照相似度降序排列,即如果使用欧式距离表示相似度,等同于将候选目标按照欧式距离升序排列;如果使用向量内积表示相似度,等同于将候选目标按照向量内积降序排列。最后,将排列在前的第一数量的候选目标确定为最终的搜索结果。以上第一数量可以与第二数量相等,也可以不相等。
[0050]
通过以上步骤,即可基于相似性搜索工具与计算机集群的有效结合实现高效的相似性搜索,同时不需要长时间占用内存支持,从而能够满足具有数十亿量级待匹配目标以及数百万量级查询目标的相似性搜索场景。
[0051]
以下将结合图2说明本发明的一个实施例。
[0052]
如图2所示,首先可以对待匹配目标、查询目标以及训练样本目标的名称、描述信息等进行分词,利用分词后的训练样本目标数据对word2vec模型进行训练。接着,根据训练完成的word2vec以及池化算法生成待匹配目标和查询目标的特征向量。得到上述特征向量之后,可以对待匹配目标的特征向量数据进行过滤,将不活跃目标的相关数据去除。
[0053]
此后,根据待匹配目标、查询目标的数据量和所属类别数量以及匹配方式(精确匹配还是模糊匹配)确定spark集群的cpu(中央处理器)、内存等计算资源,并对待匹配目标、查询目标编号(即确定待匹配目标、查询目标的id,可以使用faiss的功能编号,也可以自定义编号),以及根据计算节点的最大数据处理量和各类别数据量将各类别待匹配目标的特征向量分配到各计算节点(可使用现有的负载均衡方法执行分配),并根据单索引数据量和索引类型为每一节点的待匹配目标特征向量数据创建索引,最后形成反映每一类别与该类别待匹配目标特征向量所在索引分区的映射关系的路由表。在以上过程中,可以使用spark的groupbykey方法对待匹配目标进行分类。此后,可以利用路由表确定查询目标对应的索引分区,并将查询目标的特征向量输入faiss进行搜索,每一索引分区搜索完成之后返回候选目标数据,最后综合每一索引分区的候选目标数据即可得到最终的搜索结果。
[0054]
通过以上设置,本实施例能够满足具有数十亿量级待匹配目标以及数百万量级查询目标的相似性搜索需求,同时实现相似性搜索的paas(platform as a service,平台即服务)化(即向其它应用系统提供本发明实施例的相似性搜索方法的接口);在内存资源方面,即用即申请,不用则释放,不需要额外申请;在效果方面,通过性能测试给出默认的最优搜索策略,用户输入待匹配目标数量、查询目标数量等参数之后,按照系统提示的默认策略
进行配置即可使用。
[0055]
经过测试,当待匹配目标为15亿、查询目标为1万、第一数量为10时,能够在半小时内完成精确匹配。当待匹配目标为15亿、查询目标为100万、第一数量为10时,能够在2小时内完成精确匹配。可以看到,本发明实施例的相似性搜索方法能够满足具有数十亿量级待匹配目标以及数百万量级查询目标的相似性搜索需求,同时能够实现搜索策略、spark集群资源随业务场景的自适应调节。
[0056]
在本发明实施例的技术方案中,执行搜索之前,预先根据待匹配目标所属的类别将待匹配目标的特征向量分配到计算机集群(如spark集群)的多个计算节点,并为每一计算节点的待匹配目标特征向量创建基于相似性搜索工具(如faiss)的索引,以及建立待匹配目标所属类别与相应索引分区的映射关系。执行搜索时,首先根据查询目标所属的类别和上述映射关系确定一个或多个索引分区,之后在每一索引分区基于相似性搜索工具进行查询,最后综合确定的每一索引分区的查询结果得到最终的相似性搜索结果。这样,可以将相似性搜索工具与计算机集群有效结合以提高相似性搜索效率,在搜索之前首先定位查询目标对应的索引分区从而减小搜索范围,搜索在多个计算节点以及多个索引分区并行展开从而提高计算效率。另外,由于本发明实施例基于例如spark的计算机集群实现,内存资源即用即申请,不用则释放,不需要额外申请资源,由此解决现有的相似性搜索技术在较长时间内占用大量内存的问题。
[0057]
需要说明的是,对于前述的各方法实施例,为了便于描述,将其表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,某些步骤事实上可以采用其它顺序进行或者同时进行。此外,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是实现本发明所必须的。
[0058]
为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。
[0059]
请参阅图3所示,本发明实施例提供的相似性搜索装置300可以包括:分配单元301、索引创建单元302、索引分区确定单元303和搜索单元304。
[0060]
分配单元301可用于获取多个待匹配目标的特征向量,按照所述待匹配目标所属的类别将所述特征向量分配到预设的计算机集群中的多个计算节点;其中,每一计算节点对应于一个或多个类别;索引创建单元302可用于在每一计算节点为每一类别的待匹配目标的特征向量创建索引,具有同一索引的特征向量处在对应于该索引的同一索引分区;建立每一类别与该类别待匹配目标的特征向量所在索引分区的映射关系;索引分区确定单元303可用于获取查询目标的特征向量,依据查询目标所属类别和所述映射关系确定查询目标对应的索引分区;搜索单元304可用于在确定的索引分区中利用查询目标的特征向量进行搜索,得到与查询目标相似的预设第一数量的待匹配目标作为搜索结果。
[0061]
在本发明实施例中,所述索引为基于预设的相似性搜索工具的索引;以及,所述搜索单元304可进一步用于:对于确定的任一索引分区,将查询目标的特征向量输入所述相似性搜索工具进行搜索,得到该索引分区中的候选目标以及所述候选目标与查询目标的相似度;其中,所述候选目标是该索引分区中与查询目标相似度最大的预设第二数量的待匹配目标。
[0062]
作为一个优选方案,所述搜索单元304可进一步用于:将确定的每一索引分区中的候选目标按照所述相似度降序排列,将排列在前的第一数量的候选目标确定为搜索结果。
[0063]
此外,在本发明实施例中,所述计算机集群为spark集群,所述相似性搜索工具为faiss,所述相似度为基于欧式距离或向量内积的相似度。
[0064]
在本发明实施例的技术方案中,执行搜索之前,预先根据待匹配目标所属的类别将待匹配目标的特征向量分配到计算机集群(如spark集群)的多个计算节点,并为每一计算节点的待匹配目标特征向量创建基于相似性搜索工具(如faiss)的索引,以及建立待匹配目标所属类别与相应索引分区的映射关系。执行搜索时,首先根据查询目标所属的类别和上述映射关系确定一个或多个索引分区,之后在每一索引分区基于相似性搜索工具进行查询,最后综合确定的每一索引分区的查询结果得到最终的相似性搜索结果。这样,可以将相似性搜索工具与计算机集群有效结合以提高相似性搜索效率,在搜索之前首先定位查询目标对应的索引分区从而减小搜索范围,搜索在多个计算节点以及多个索引分区并行展开从而提高计算效率。另外,由于本发明实施例基于例如spark的计算机集群实现,内存资源即用即申请,不用则释放,不需要额外申请资源,由此解决现有的相似性搜索技术在较长时间内占用大量内存的问题。
[0065]
图4示出了可以应用本发明实施例的相似性搜索方法或相似性搜索装置的示例性系统架构400。
[0066]
如图4所示,系统架构400可以包括终端设备401、402、403,网络404和服务器405(此架构仅仅是示例,具体架构中包含的组件可以根据申请具体情况调整)。网络404用以在终端设备401、402、403和服务器405之间提供通信链路的介质。网络404可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等。
[0067]
用户可以使用终端设备401、402、403通过网络404与服务器405交互,以接收或发送消息等。终端设备401、402、403上可以安装有各种通讯客户端应用,例如相似性搜索应用(仅为示例)。
[0068]
终端设备401、402、403可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
[0069]
服务器405可以是提供各种服务的服务器,例如对用户利用终端设备401、402、403所操作的相似性搜索应用提供支持的后台服务器(仅为示例)。服务器405可以对接收到的查询请求等进行处理,并将处理结果(例如查询到的相似目标数据
‑‑
仅为示例)反馈给终端设备401、402、403。
[0070]
需要说明的是,本发明实施例所提供的相似性搜索方法一般由服务器405执行,相应地,相似性搜索装置一般设置于服务器405中。
[0071]
应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
[0072]
本发明还提供了一种电子设备。本发明实施例的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明所提供的相似性搜索方法。
[0073]
下面参考图5,其示出了适于用来实现本发明实施例的电子设备的计算机系统500的结构示意图。图5示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范
围带来任何限制。
[0074]
如图5所示,计算机系统500包括中央处理单元(cpu)501,其可以根据存储在只读存储器(rom)502中的程序或者从存储部分508加载到随机访问存储器(ram)503中的程序而执行各种适当的动作和处理。在ram503中,还存储有计算机系统500操作所需的各种程序和数据。cpu501、rom 502以及ram 503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。
[0075]
以下部件连接至i/o接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至i/o接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便从其上读出的计算机程序根据需要被安装入存储部分508。
[0076]
特别地,根据本发明公开的实施例,上文的主要步骤图描述的过程可以被实现为计算机软件程序。例如,本发明实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行主要步骤图所示的方法的程序代码。在上述实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元501执行时,执行本发明的系统中限定的上述功能。
[0077]
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。在本发明中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
[0078]
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也
要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0079]
描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括分配单元、索引创建单元、索引分区确定单元和搜索单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,分配单元还可以被描述为“向索引创建单元提供计算节点中特征向量的单元”。
[0080]
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中的。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该设备执行时,使得该设备执行的步骤包括:获取多个待匹配目标的特征向量,按照所述待匹配目标所属的类别将所述特征向量分配到预设的计算机集群中的多个计算节点;其中,每一计算节点对应于一个或多个类别;在每一计算节点为每一类别的待匹配目标的特征向量创建索引,具有同一索引的特征向量处在对应于该索引的同一索引分区;建立每一类别与该类别待匹配目标的特征向量所在索引分区的映射关系;获取查询目标的特征向量,依据查询目标所属类别和所述映射关系确定查询目标对应的索引分区;在确定的索引分区中利用查询目标的特征向量进行搜索,得到与查询目标相似的预设第一数量的待匹配目标作为搜索结果。
[0081]
在本发明实施例的技术方案中,执行搜索之前,预先根据待匹配目标所属的类别将待匹配目标的特征向量分配到计算机集群(如spark集群)的多个计算节点,并为每一计算节点的待匹配目标特征向量创建基于相似性搜索工具(如faiss)的索引,以及建立待匹配目标所属类别与相应索引分区的映射关系。执行搜索时,首先根据查询目标所属的类别和上述映射关系确定一个或多个索引分区,之后在每一索引分区基于相似性搜索工具进行查询,最后综合确定的每一索引分区的查询结果得到最终的相似性搜索结果。这样,可以将相似性搜索工具与计算机集群有效结合以提高相似性搜索效率,在搜索之前首先定位查询目标对应的索引分区从而减小搜索范围,搜索在多个计算节点以及多个索引分区并行展开从而提高计算效率。另外,由于本发明实施例基于例如spark的计算机集群实现,内存资源即用即申请,不用则释放,不需要额外申请资源,由此解决现有的相似性搜索技术在较长时间内占用大量内存的问题。
[0082]
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献