CN118193195A - 数据搜索方法、装置、电子设备、存储介质及程序产品 - Google Patents
数据搜索方法、装置、电子设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN118193195A CN118193195A CN202410257629.8A CN202410257629A CN118193195A CN 118193195 A CN118193195 A CN 118193195A CN 202410257629 A CN202410257629 A CN 202410257629A CN 118193195 A CN118193195 A CN 118193195A
- Authority
- CN
- China
- Prior art keywords
- data
- search
- target
- attribute
- search query
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 115
- 239000013598 vector Substances 0.000 claims abstract description 161
- 238000012545 processing Methods 0.000 claims abstract description 62
- 230000008569 process Effects 0.000 claims abstract description 30
- 238000001914 filtration Methods 0.000 claims description 61
- 230000004044 response Effects 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 6
- 230000006835 compression Effects 0.000 claims description 4
- 238000007906 compression Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 16
- 238000004364 calculation method Methods 0.000 description 12
- 238000010276 construction Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000003064 k means clustering Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例提供一种数据搜索方法、装置、电子设备、存储介质及程序产品,涉及数据检索领域。该方法包括:接收数据搜索请求,生成数据搜索请求的搜索查询向量;根据搜索查询向量选取目标数据子图,根据目标数据子图确定目标图形处理器;将搜索查询向量发送至目标图形处理器,通过目标图形处理器根据搜索查询向量在目标数据子图中进行搜索获得一个或多个邻居节点,利用多线程对一个或多个邻居节点进行并行处理操作,获得处理操作结果,进而确定数据搜索结果。该方法能够基于GPU实现混合搜索,优化了单个GPU上混合搜索过程中的GPU资源利用,降低单个GPU上进行混合搜索的延时,优化了多个GPU协同处理请求时的调度方式,减少GPU任务量,提高整体吞吐率。
Description
技术领域
本公开涉及数据检索技术,具体而言,涉及一种数据搜索方法、数据搜索装置、电子设备、计算机可读存储介质以及计算机程序产品。
背景技术
数据搜索是指在大量数据中筛选出满足给定条件的一部分数据的任务,这里的数据包括非结构化数据和结构化数据。在非结构化数据和结构化数据相结合的场景中,可以将向量搜索和属性过滤融合在一起完成这种场景下的数据搜索任务。相关技术中,可以采用搜索过滤一体的混合搜索方法执行数据搜索,在利用非结构化数据执行数据搜索任务的过程中,同时利用结构化数据执行过滤。
GPU(Graphics Processing Unit,图形处理器)具有强大的计算能力和更高的内存带宽,这使得混合搜索方法在GPU上运行时可以更快地处理数据和计算相似度。然而,搜索过滤一体的混合搜索方法的搜索过程相比于向量搜索过程多出了根据属性进行过滤的操作,这导致直接照搬GGNN(Graph-based GPU Nearest Neighbor Search Algorithm,基于图的GPU最近邻搜索算法)的方法将混合搜索方法部署在GPU上会导致资源利用率低,无法充分发挥GPU的性能,并且在进行大规模搜索时计算量大,难以通过使用更多GPU来达到更高的吞吐率。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开实施例提供一种数据搜索方法、数据搜索装置、电子设备、计算机可读存储介质以及计算机程序产品,能够基于GPU实现混合搜索,优化了单个GPU上混合搜索过程中的GPU资源利用,降低单个GPU上进行混合搜索的延时,优化了多个GPU协同处理请求时的调度方式,减少GPU任务量,提高整体吞吐率。
本公开实施例提供一种数据搜索方法,包括:接收数据搜索请求,生成所述数据搜索请求的搜索查询向量;根据所述搜索查询向量,从数据集的一个或多个数据子图中选取目标数据子图,确定所述目标数据子图对应的目标图形处理器;所述目标数据子图是在所述目标图形处理器上构建的;将所述搜索查询向量发送至所述目标图形处理器,通过所述目标图形处理器根据所述搜索查询向量在所述目标数据子图中进行搜索,获得一个或多个邻居节点,利用所述目标图形处理器的多线程对所述一个或多个邻居节点进行并行处理操作,获得处理操作结果;根据所述处理操作结果,确定所述搜索查询向量的数据搜索结果。
在本公开的一些示例性实施例中,所述利用所述目标图形处理器的多线程对所述一个或多个邻居节点进行并行处理操作,获得处理操作结果,包括:利用所述目标图形处理器的多线程,对所述一个或多个邻居节点进行属性访存操作以及属性过滤操作,获得所述一个或多个邻居节点中的一个或多个候选节点;计算各个所述候选节点的数据向量与所述搜索查询向量之间的距离,保存计算的距离;所述候选节点的数据向量包括所述候选节点对应的数据的特征向量和所述候选节点对应的数据的属性特征,所述搜索查询向量包括所述数据搜索请求中的查询对象的特征向量和所述查询对象的属性特征。
在本公开的一些示例性实施例中,所述数据搜索请求包括属性过滤条件;其中,所述利用所述目标图形处理器的多线程,对所述一个或多个邻居节点进行属性访存操作以及属性过滤操作,获得所述一个或多个邻居节点中的一个或多个候选节点,包括:对于各个所述邻居节点,利用所述目标图形处理器的多线程中的一个线程,根据节点的属性索引读取所述邻居节点的属性数据;所述节点的属性索引是在构建所述数据集的数据子图的过程中构建的,所述节点的属性索引是按照预设压缩格式存储的;响应于所述邻居节点的属性数据满足所述属性过滤条件,将所述邻居节点过滤掉;响应于所述邻居节点的属性数据不满足所述属性过滤条件,确定所述邻居节点为所述候选节点。
在本公开的一些示例性实施例中,所述根据所述处理操作结果,确定所述搜索查询向量的数据搜索结果,包括:从所述一个或多个候选节点中各个所述候选节点的数据向量与所述搜索查询向量之间的距离中选择距离最小值,确定所述距离最小值对应的候选节点为所述搜索查询向量的数据搜索结果。
在本公开的一些示例性实施例中,所述方法还包括:获取所述数据集,生成所述数据集中各个数据的数据向量;所述数据的数据向量包括所述数据的特征向量和所述数据的属性特征;根据所述数据集中各个数据的数据向量,对所述数据集包含的数据进行聚类划分,获得一个或多个数据簇,将所述一个或多个数据簇分配至一个或多个图形处理器;在各个所述图形处理器上构建分配至所述图形处理器的数据簇的数据子图,以获得所述一个或多个数据子图。
在本公开的一些示例性实施例中,所述对所述数据集包含的数据进行聚类划分,包括:获取预设的距离阈值;基于所述预设的距离阈值对所述数据集包含的数据进行聚类划分,以使得划分到各个所述数据簇中的数据与所述数据簇的簇中心之间的距离小于所述预设的距离阈值。
在本公开的一些示例性实施例中,所述根据所述搜索查询向量,从数据集的一个或多个数据子图中选取目标数据子图,包括:确定所述一个或多个数据子图中各个所述数据子图对应的数据簇,获取各个所述数据子图对应的数据簇的簇中心;计算各个所述数据子图对应的数据簇的簇中心与所述搜索查询向量之间的相似度;从计算的相似度中选取相似度最小值,确定所述相似度最小值对应的数据子图为所述目标数据子图。
根据本公开实施例的另一方面,提供一种数据搜索装置,包括:请求接收模块,用于接收数据搜索请求,生成所述数据搜索请求的搜索查询向量;处理器确定模块,用于根据所述搜索查询向量,从数据集的一个或多个数据子图中选取目标数据子图,确定所述目标数据子图对应的目标图形处理器;所述目标数据子图是在所述目标图形处理器上构建的;搜索模块,用于将所述搜索查询向量发送至所述目标图形处理器,通过所述目标图形处理器根据所述搜索查询向量在所述目标数据子图中进行搜索,获得一个或多个邻居节点,利用所述目标图形处理器的多线程对所述一个或多个邻居节点进行并行处理操作,获得处理操作结果;根据所述处理操作结果,确定所述搜索查询向量的数据搜索结果。
本公开实施例提供一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行可执行指令,以实现上述的数据搜索方法。
本公开实施例提供一种计算机可读存储介质,当计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述的数据搜索方法。
本公开实施例提供一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现上述的数据搜索方法。
本公开实施例提供的数据搜索方法中,根据数据搜索请求生成搜索查询向量,然后根据生成的搜索查询向量在数据集的一个或多个数据子图中选取,获得目标数据子图,进而确定构建该目标数据子图的目标GPU,且将搜索查询向量发送至目标GPU,以通过目标GPU根据搜索查询向量在目标数据子图中进行检索获得该搜索查询向量的一个或多个邻居节点,在搜素过程中利用目标GPU的多线程对获得的这些邻居节点进行并行处理,获得处理操作结果,最后根据处理操作结果获得数据搜索结果。如此,该方法能够基于GPU实现混合搜索,在利用单个GPU进行混合搜索查询时,利用单个GPU的多线程对一个或多个邻居节点进行并行处理操作,优化了单个GPU上混合搜索过程中的GPU资源利用,能够降低单个GPU上进行混合搜索的延时;并且,将数据搜索请求的搜索查询向量发送至相应的GPU(即目标GPU)上进行混合搜索查询,避免将数据搜索请求的搜索查询向量发送至所有的GPU上,优化了多个GPU间协同处理请求时的调度方式,以减少GPU任务量从而提高整体吞吐率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了可以应用本公开实施例的数据搜索方法的示例性***架构的示意图;
图2是根据一示例性实施例示出的一种数据搜索方法的流程图;
图3是根据一示例性实施例示出的利用目标GPU的多线程对一个或多个邻居节点进行并行处理操作的流程图;
图4是相关技术和本公开实施例中对邻居节点进行处理操作的对比示意图;
图5是根据一示例性实施例示出的按照属性索引读取属性数据的示意图;
图6是根据一示例性实施例示出的构建一个或多个数据子图的流程图;
图7是根据一示例性实施例示出的根据搜索查询向量从数据集的一个或多个数据子图中选取目标数据子图的流程图;
图8是根据一示例性实施例示出的GPU的调度策略示意图;
图9是相关技术中单个GPU进行数据搜索的结果与本公开实施例中单个GPU进行数据搜索的结果对比图;
图10是相关技术中多个GPU进行数据搜索的结果与本公开实施例中多个GPU进行数据搜索的结果对比图;
图11是根据一示例性实施例示出的一种数据搜索装置的框图;
图12是根据一示例性实施例示出的适于用来实现本公开示例性实施例的电子设备的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
本公开所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
附图仅为本公开的示意性图解,图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在至少一个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和步骤,也不是必须按所描述的顺序执行。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
本说明书中,用语“一个”、“一”、“该”、“所述”和“至少一个”用以表示存在至少一个要素/组成部分/等;用语“多个”是指两个或者两个以上;用语“包含”、“包括”和“具有”用以表示开放式的包括在内的意思并且是指除了列出的要素/组成部分/等之外还可存在另外的要素/组成部分/等;用语“第一”、“第二”和“第三”等仅作为标记使用,不是对其对象的数量限制。
搜索是指在大量数据中筛选出满足给定条件的一部分数据的任务。这里的数据包含非结构化数据和结构化数据,其中,非结构化数据是指没有固定结构模式的数据,如文本、图像、音频和视频等,结构化数据是指具有固定结构模式的数据,通常以表格的形式存在,如数据库中的表格。
在机器学习、模式识别、计算机视觉、推荐或搜索等场景中,可以通过向量搜索完成了非结构化数据的搜索任务,通过属性过滤方式完成结构化数据的搜索任务。但是在非结构化数据和结构化数据相结合的场景中,可以将向量搜索和属性过滤融合在一起完成这种场景下的数据搜索任务。
相关技术中,混合搜索的方法主要可以分为三类:第一类是先过滤后搜索的方法,先对所有数据利用结构化数据执行过滤,再对过滤的结果利用非结构化数据执行搜索任务;第二类是先搜索后过滤的方法,先利用非结构化数据执行搜索任务,再对搜索结果利用结构化数据执行过滤;第三类是搜索过滤一体的方法,这类方法一般在利用非结构化数据执行搜索任务的过程中同时利用结构化数据执行过滤。其中,混合搜索过滤一体的方法将向量搜索和属性过滤两个阶段融合在一起,避免了先过滤后搜索的方法导致的无法在实际中应用的缺陷,还避免了先搜索后过滤方法中两阶段之间的冗余计算开销,可以在短搜索时间内获得高召回率。
GPU具有强大的计算能力和更高的内存带宽,这使得混合搜索方法在GPU上运行时可以更快地处理数据和计算相似度,因此基于GPU的有效实现对于混合搜索方法的发展和应用至关重要。然而,搜索过滤一体的混合搜索方法的搜索过程相比于向量搜索过程多出了根据属性进行过滤的操作,这导致直接照搬GGNN的方法将混合搜索方法部署在GPU上会导致资源利用率低,无法充分发挥GPU的性能,并且在进行大规模搜索时计算量大,难以通过使用更多GPU来达到更高的吞吐率。
为了解决上述问题,本公开实施例提供一种数据搜索技术方案,能够基于GPU实现混合搜索,包括针对单个GPU上进行混合搜索的并行处理策略,即在利用单个GPU进行混合搜索查询时,利用单个GPU的多线程对一个或多个邻居节点进行并行处理操作,优化了单个GPU上混合搜索过程中的GPU资源利用,能够降低单个GPU上进行混合搜索的延时;还包括针对多个GPU同时进行混合搜索的请求调度策略,即将数据搜索请求的搜索查询向量发送至相应的GPU上进行混合搜索查询,避免将数据搜索请求的搜索查询向量发送至所有的GPU上,优化了多个GPU间协同处理请求时的调度方式,以减少GPU任务量从而提高整体吞吐率。
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图及实施例对本公开示例实施例中的数据搜索技术方案进行更详细的说明。
图1示出了可以应用本公开实施例的数据搜索方法的示例性***架构的示意图。
如图1所示,该***架构可以包括GPU 101、GPU 102、网络103、终端设备104、终端设备105和终端设备106。网络103用以在终端设备和GPU之间提供通信链路的介质。网络103可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
GPU 101和GPU 102具有超强的计算功能可应用于海量数据处理方面的运算,如搜索、大数据推荐、智能输入法等,能够为终端设备提供各种服务。例如对用户利用终端设备104、终端设备105或终端设备106所进行操作的装置提供数据搜索服务的后台服务器。GPU101或GPU 102可以对接收到的数据搜索查询请求等数据进行分析等处理,并将处理结果反馈给终端设备104、终端设备105或终端设备106。
终端设备104、终端设备105和终端设备106可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、可穿戴智能设备、虚拟现实设备、增强现实设备等,但并不局限于此。
应该理解,图1中的终端设备104、终端设备105、终端设备106、网络103、GPU 101和GPU 102的数目仅仅是示意性的,GPU 101或GPU 102可以是一个实体的GPU服务器,还可以为多个GPU服务器组成的GPU服务器集群,还可以是云端服务器,根据实际需要,可以具有任意数目的终端设备、网络和GPU。
图2是根据一示例性实施例示出的一种数据搜索方法的流程图,图2实施例提供的方法的执行主体可以是任意的电子设备,例如图1实施例中的GPU 101,又如图1实施例中的GPU 101与GPU 102联合实现数据搜索方法,但本公开并不限定于此。如图2所示,本公开实施例提供的数据搜索方法可以包括以下步骤。
步骤S210,接收数据搜索请求,生成数据搜索请求的搜索查询向量。
本公开实施例中,数据搜索请求是指搜索特定数据的请求,具体可以包括希望搜索返回的数据的特征信息,如希望搜索返回的数据的标签、分类、属性值、数据形式、数据类型等,可以包括希望搜索返回的数据的属性过滤条件,还可以包括其他信息,如返回的数据的排序方式、搜索结果的返回数量等。
本公开实施例中,搜索查询向量包括查询对象的特征向量和查询对象的属性特征,即希望返回的数据的特征向量和希望返回的数据的属性特征。其中,查询对象的特征向量可以根据希望返回的数据中没有固定结构模式的数据生成的;查询对象的属性特征可以由数据搜索请求中的希望返回的数据中具有固定模型的信息生成的。
步骤S220,根据搜索查询向量,从数据集的一个或多个数据子图中选取目标数据子图,确定目标数据子图对应的目标GPU。
本公开实施例中,可以构建数据集对应的一个或多个数据子图。在获取到数据集后,可以对数据集中的数据进行清洗、去重、异常值处理等操作,将数据集划分为一个或多个数据子集,将各个数据子集分配到一个或多个GPU上,进而在GPU上构建分配到该GPU上的数据子集的数据子图,如此可以得到数据集的一个或多个数据子图,且各个数据子图可以是由不同GPU构建的,后续在处理数据搜索查询请求时可以由相应的GPU进行数据搜索查询。
在根据数据子集构建数据子图的过程中,将数据子集中的每个数据表示为图中的一个节点,根据数据之间的相似度关系构建节点之间的边,将所有节点和边组合在一起,形成一个完整的数据子图。其中,数据之间的相似度可以根据数据的特征向量和数据的属性特征计算,如果两个数据之间的相似度大于相似度阈值,则通过边将这两个数据连接在一起,如果两个数据之间的相似度小于等于相似度阈值,则不需要将这两个数据连接在一起。
本公开实施例中,目标数据子图是在目标GPU上构建的。可以根据数据搜索请求的搜索查询向量,从一个或多个数据子图中选取目标数据子图,即说明该数据搜索请求所希望搜索返回的数据位于该目标数据子图中,因此从该目标数据子图中进行搜索查询。在确定目标数据子图后,可以确定构建该目标数据子图的目标GPU,后续通过该目标GPU进行数据搜索查询。
步骤S230,将搜索查询向量发送至目标GPU,通过目标GPU根据搜索查询向量在目标数据子图中进行搜索,获得一个或多个邻居节点,利用目标GPU的多线程对一个或多个邻居节点进行并行处理操作,获得处理操作结果。
本公开实施例中,对一个邻居节点的处理操作可以包括属性预存、属性过滤、距离计算以及结果保存四个步骤,其中属性过滤是一个关键步骤,该步骤可以根据邻居节点的属性来决定是否进行后续的距离计算以及结果保存,用于快速排除那些明显不符合搜索条件的邻居节点。
本公开实施例中,将搜索查询向量发送至目标GPU,以通过目标GPU执行数据搜索请求对应的搜索任务。具体的,目标GPU根据搜索查询向量在其上的目标数据子图中进行搜索,快速定位到该搜索查询向量对应的查询点的一个或多个邻居节点,利用目标GPU的多线程并行这些邻居节点进行属性预存、属性过滤、距离计算以及结果保存这些操作,获得处理操作结果。可见,利用多线程对查询的邻居节点进行并行处理操作,降低了单个GPU上进行混合搜索的延时。
步骤S240,根据处理操作结果,确定搜索查询向量的数据搜索结果。
本公开实施例中,处理操作结果可以包括一个或多个邻居节点中各个邻居节点与搜索查询向量对应的查询点之间的距离,选取其中的距离最小值,确定该距离最小值对应的邻居节点为最近邻节点,即搜索查询向量的数据搜索结果。
本公开实施例中,可以设置距离阈值,如果距离最小值大于距离阈值,则可以根据该距离最小值对应的邻居节点和搜索查询向量对应的查询点为新的搜索点进行新一轮的搜索,直至满足搜索停止条件,例如搜素得到的邻居节点与搜索查询向量对应的查询点之间的距离最小值小于距离阈值,又如搜索的轮数达到预设搜索轮数,获得数据搜索结果。
本公开实施例提供的数据搜索方法能够基于GPU实现混合搜索,在利用单个GPU进行混合搜索查询时,利用单个GPU的多线程对一个或多个邻居节点进行并行处理操作,优化了单个GPU上混合搜索过程中的GPU资源利用,能够降低单个GPU上进行混合搜索的延时;并且,将数据搜索请求的搜索查询向量发送至相应的GPU(即目标GPU)上进行混合搜索查询,避免将数据搜索请求的搜索查询向量发送至所有的GPU上,优化了多个GPU间协同处理请求时的调度方式,以减少GPU任务量从而提高整体吞吐率。
图3是根据一示例性实施例示出的利用目标GPU的多线程对一个或多个邻居节点进行并行处理操作的流程图。如图3所示,具体可以包括以下步骤。
步骤S310,利用目标GPU的多线程,对一个或多个邻居节点进行属性访存操作以及属性过滤操作,获得一个或多个邻居节点中的一个或多个候选节点。
步骤S320,计算各个候选节点的数据向量与搜索查询向量之间的距离,保存计算的距离。
搜索一个邻居节点的过程包括属性访存、属性过滤、距离计算和结果保存这些步骤。其中,在属性访存步骤中会访问邻居节点的属性信息,如邻居节点的位置信息、标签信息等。在属性过滤步骤中会根据某些预定义的规则或条件对属性进行筛选,排除那些不符合预定义的规则或条件的邻居节点,减少后续步骤的计算量。属性过滤的执行结果决定是否需要对邻居节点进行距离计算的步骤,例如某邻居节点不符合预定义的规则,则该邻居节点被过滤掉,后续不需要对该邻居节点进行距离计算操作。
在距离计算步骤中会计算需要进行计算距离的邻居节点与目标节点的距离,例如欧几里得距离、曼哈顿距离等,具体取决于问题的性质和所需的相似度或关联度评估,本公开实施例中目标节点可以是搜索查询向量对应的查询点。在结果保存步骤中会将经过筛选和距离计算的邻居节点以及计算的距离保存起来,这些节点可能被用作进一步搜索的起点,或者直接作为满足查询条件的解。
图4是相关技术和本公开实施例中对邻居节点进行处理操作的对比示意图。图4示出了相关技术中对邻居节点进行并行处理操作的过程和本公开实施例中对邻居节点进行并行处理操作的过程。
如图4所示,相关技术中利用单个线程对邻居节点进行属性访存以及属性过滤操作,利用多线程对邻居节点进行距离计算以及结果保存操作。可以看出,由于属性访存及属性过滤仅使用单个线程导致其他线程被阻塞无法工作。
考虑到对邻居节点进行处理的步骤之间存在数据依赖,即对邻居节点需要依次进行属性访存、属性过滤、距离计算和结果保存这些步骤,但是各个邻居节点之间不存在数据依赖性,因此本公开实施例中可以并行处理邻居节点的属性访存以及属性过滤操作。如图4所示,本公开实施例中利用多线程同时进行不同邻居节点的属性访存以及属性过滤操作,以及利用多线程对邻居进行节点距离计算以及结果保存步骤,能够提高GPU的线程利用率,还能够消除线程阻塞现象,降低数据搜索的延时。
在本公开示例性实施例中,利用目标GPU的多线程,对一个或多个邻居节点进行属性访存操作以及属性过滤操作,获得一个或多个邻居节点中的一个或多个候选节点,可以包括:对于各个邻居节点,利用目标GPU的多线程中的一个线程,根据节点的属性索引读取邻居节点的属性数据;响应于邻居节点的属性数据满足属性过滤条件,将邻居节点过滤掉;响应于邻居节点的属性数据不满足属性过滤条件,确定邻居节点为候选节点。
本公开实施例中,节点的属性索引可以是一种标识或索引,用于快速访问节点的属性数据。具体来说,节点的属性索引可能是一个数组、哈希表或其他数据结构,其中每个索引对应于一个节点的属性数据。通过使用节点的属性索引,可快速定位并读取所需节点的属性数据,从而提高搜索的效率和响应速度。
在本公开实施例中,节点的属性索引是在构建数据集的数据子图的过程中构建的。具体的,可以按照节点邻居顺序存储属性索引,使得节点的邻居节点的属性索引是连续存储的。其中,节点邻居顺序可以是随意设置的,也可以是根据特定条件设置的,如根据距离大小设置。例如,在构建数据子图后确定节点1存在如下邻居节点:节点3、节点6、节点8和节点12,那么可以随意设置节点邻居顺序从为节点6到节点8到节点3到节点12,也可以根据邻居节点与节点1的距离,按照距离从小到大进行排序,最后得到节点邻居顺序为节点8到节点3到节点12到节点6,即节点8与节点1的距离最小,节点6与节点1的距离最大。
相关技术中节点的属性数据是按照节点ID(即,用于唯一标识节点的标识符)顺序存储的,由于数据子图以及图索引构建后节点邻居的随机性,导致每次搜索的若干个邻居节点的ID是不连续的,导致利用GPU的多线程对邻居节点进行属性访存时的速度变慢。
图5是根据一示例性实施例示出的按照属性索引读取属性数据的示意图。如图5所示,邻居节点的属性索引是连续存储的,因此在对邻居节点进行属性访存操作时可以通过属性索引进行连续访存,如此能够获取更快的访存速度。
在本公开实施例中,节点的属性索引是按照预设压缩格式存储的。考虑到属性取值范围有限,可以对属性索引进行压缩以减少存储空间开销。例如,将两个节点的属性索引压缩到一个int类型的空间存储,其中,空间中的高位用于存储一个节点的属性索引,空间中的低位用于存储另一个节点的属性索引。如此可以通过对属性索引进行压缩来减少存储空间开销,且可以根据实际需求将属性索引压缩到更小的取值范围以减少更多的存储空间开销。
本公开实施例中,候选节点是指经过属性访存以及属性过滤操作之后保留的邻居节点。在搜索每个邻居节点的过程中,利用目标GPU的多线程中的一个线程,根据该邻居节点的属性索引读取该邻居节点的属性数据;然后判断该邻居节点的属性数据是否满足数据搜索请求中的属性过滤条件,若满足,则需要将该邻居节点过滤掉,若不满足,则需要保留该邻居节点,确认该邻居节点为候选节点。
其中,数据搜索请求可以包括属性过滤条件,其可以根据具体的应用场景和需求来定义。例如,属性过滤条件是检查邻居节点的属性值是否在设定的范围内,如果属性是年龄,则通过该数据过滤条件可以过滤掉不在特定年龄范围内的邻居节点。又如,属性过滤条件是检查邻居节点的属性值是否符合特定类型的要求,如果属性是日期,则可以过滤掉不是有效日期的邻居节点。
本公开实施例中,对一个或多个邻居节点中的各个邻居节点进行属性预存以及属性过滤操作之后获得这些邻居节点中的候选节点,然后计算各个候选节点进行距离计算以及结果保存操作。具体来说,对于各个候选节点,计算该候选节点的数据向量与搜索查询向量之间的距离,保存计算的距离。
其中,候选节点的数据向量包括候选节点对应的数据的特征向量和候选节点对应的数据的属性特征。具体来说,候选节点对应的数据的特征向量可以根据候选节点对应的数据中没有固定结构模式的数据生成的;候选节点对应的数据的属性特征可以根据候选节点对应的数据中具有固定结构模式的数据生成的。搜索查询向量包括数据搜索请求中的查询对象的特征向量和查询对象的属性特征,上文已详细说明,此处不再累述。
在本公开示例性实施例中,根据处理操作结果,确定搜索查询向量的数据搜索结果,包括:从一个或多个候选节点中各个候选节点的数据向量与搜索查询向量之间的距离中选择距离最小值,确定距离最小值对应的候选节点为搜索查询向量的数据搜索结果。
在计算获得各个候选节点的数据向量与搜索查询向量之间的距离之后,选取距离最小值,确定距离最小值对应的候选节点为搜索查询向量对应的查询点的最近邻节点,即搜索查询向量的数据搜索结果。
本公开实施例中针对单个GPU上进行混合搜索时,可以利用GPU的多线程对一个或多个邻居节点并行进行属性预存以及属性过滤操作,能够提高GPU的线程利用率,还能够消除线程阻塞现象,降低数据搜索的延时;在数据子图构建过程中构建属性索引,进而在属性预存操作中通过属性索引对一个或多个邻居进行的属性进行读取,能够实现顺序访存操作,从而获取更快的访存速度;并且属性索引是压缩存储的,能够减少混合搜索过程造成的额外存储空间开销。
图6是根据一示例性实施例示出的构建一个或多个数据子图的流程图。如图6所示,具体可以包括以下步骤。
步骤S610,获取数据集,生成数据集中各个数据的数据向量;数据的数据向量包括数据的特征向量和数据的属性特征。
步骤S620,根据数据集中各个数据的数据向量,对数据集包含的数据进行聚类划分,获得一个或多个数据簇,将一个或多个数据簇分配至一个或多个GPU。
本公开实施例中,可以通过K-means聚类算法,根据数据的数据向量将数据集中的数据划分为一个或多个数据簇,使得所有数据到其所在数据簇的簇中心的平均距离最小。具体工作原理如下:随机选择K个数据作为初始的簇中心;对于数据集中的每个数据,根据数据的数据向量和各个簇中心的数据向量计算其到各个簇中心的距离,将其分配到最近的簇中;重新计算每个簇的中心;重复上述的数据分配以及簇中心的计算步骤,直到簇中心不再发生显著变化或达到预设的迭代次数,最终将数据集划分为K个数据簇。其中,K的取值为大于等于1的整数,具体取值可以根据数据集中数据的特定特征设置,可以根据实际需求设置,也可以根据提供数据服务的GPU个数设置。
本公开实施例中,通过最小化所有数据的数据向量到簇中心的平均距离将数据进行聚类划分,如此数据搜索请求对应的查询点与该查询点的最近邻节点(即数据搜索结果)位于同一个数据簇中的概率较大。
在本公开示例性实施例中,对数据集包含的数据进行聚类划分,可以包括:获取预设的距离阈值;基于预设的距离阈值对数据集包含的数据进行聚类划分,以使得划分到各个数据簇中的数据与数据簇的簇中心之间的距离小于预设的距离阈值。
具体的,可以为数据的数据向量到簇中心的距离设置阈值,即预设的距离阈值,将数据划分到距离小于预设的距离阈值的数据簇中,该预设的距离阈值可以是数据的数据向量到最近的簇中心的距离乘以一个系数,如系数为1.1。举例说明,数据D1与数据簇1的簇中心的距离最近,该距离为s1,确定预设的距离阈值为1.1*s1,数据D1与数据簇2的簇中心的距离小于1.1*s1,那么数据D1被划分到数据簇1和数据簇2中。
本公开实施例优化了数据的聚类划分方法,通过引入一部分冗余信息来应对聚类边界处数据的划分情况,能够以一定规则将数据划分到若干个簇中,从而可以应对数据搜索请求对应最近邻节点位于多个数据簇中的情况。也就是说,位于数据簇边界处的数据会存在于多个数据簇中,从而可以针对数据搜索请求对应的最近邻节点位于数据簇边界上的情况提供更多正确答案。
步骤S630,在各个GPU上构建分配至GPU的数据簇的数据子图,以获得一个或多个数据子图。
在对数据集进行聚类划分得到一个或多个数据簇之后,可以将各个数据簇分配至不同的GPU上,以通过不同的GPU构建数据子图,得到各个数据簇对应的数据子图。
在根据数据簇构建数据子图的过程中,可以基于向量距离和属性距离定义的混合距离来构建,向量距离通常用于衡量节点间的结构相似度,而属性距离则用于衡量节点间的属性相似度,通过将这两种距离结合起来能够更全面地评估节点间的相似度,从而构建出更加准确的数据子图。其中,混合距离可以有很多种定义方式,例如在传统的向量距离的基础上添加属性距离进行修正。这里的属性距离可以用属性值的差表示,修正可以是简单求和、加权求和、乘积等多种方式。修正的目的是使属性取值相同或者是比较接近的节点相比于属性取值偏差很大的节点具有更小的混合距离。构建图过程中由于属性距离的存在,相同属性的节点会更加容易成为邻居,保证了在搜索过程中容易在具有相同属性的节点构成的子图上快速搜索。
本公开实施例中,通过优化数据集中数据的划分方式降低多GPU进行搜索查询时的总计算量,一方面是根据数据的数据向量对数据集中的数据进行聚类划分,充分利用了数据的向量信息,从而可以简化多GPU的混合搜索过程;另一方面是通过进行边界延拓弥补处于簇边界的数据搜索请求(若数据搜索请求对应的最近邻节点位于数据簇边界,则该数据搜索请求称为处于簇边界的数据搜索请求)可能丢失正确结果,使得数据搜索请求只需要被发送到某一个GPU进行混合搜索即可。
图7是根据一示例性实施例示出的根据搜索查询向量从数据集的一个或多个数据子图中选取目标数据子图的流程图。如图7所示,具体可以包括以下步骤。
步骤S710,确定一个或多个数据子图中各个数据子图对应的数据簇,获取各个数据子图对应的数据簇的簇中心。
步骤S720,计算各个数据子图对应的数据簇的簇中心与搜索查询向量之间的相似度。
步骤S730,从计算的相似度中选取相似度最小值,确定相似度最小值对应的数据子图为目标数据子图。
本公开实施例中,在生成搜索查询向量之后,可以计算各个数据子图对应的数据簇的簇中心与该搜索查询向量之间的相似度,选取相似度最小值,确定该相似度最小值对应的数据子图为目标数据子图,即确定数据搜索请求的正确结果位于该相似度最小值所对应的数据簇中,后续将搜索查询向量发送至构建该目标数据子图的目标GPU中,以通过该目标GPU在目标数据子图中进行搜索查询,避免将搜索查询向量发送至多个GPU中进行搜索查询,能够大幅度提升吞吐率。
图8是根据一示例性实施例示出的GPU的调度策略示意图。图8示出了相关技术中数据划分方式以及GPU的调度策略,以及本公开实施例中数据划分方式以及GPU的调度策略。
如图8所示,相关技术中,将数据进行随机划分得到两个数据分组,将这两个数据分组分别发送至GPU1和GPU2,通过GPU1和GPU2分别构建数据子图。将请求1发送到GPU1和GPU2中,使得GPU1和GPU2分别对请求1进行数据搜索查询,最后合并搜索查询结果得到请求1对应的最近邻节点。以及,将请求2发送到GPU1和GPU2中,使得GPU1和GPU2分别对请求2进行数据搜索查询,最后合并搜索查询结果得到请求2对应的最近邻节点。可见,即使请求1对应的最近邻节点没有被分配到GPU2中,GPU2也需要对请求1进行搜索查询,以及即使请求2对应的最近邻节点没有被分配到GPU1中,GPU1也需要对请求2进行搜索查询,增加了GPU的任务量。
如图8所示,本公开实施例中,根据数据的数据向量将数据进行聚类划分得到两个数据簇,将这两个数据簇分别发送至GPU1和GPU2,通过GPU1和GPU2分别构建数据子图。在获取请求1之后,计算请求1对应的搜索查询向量与两个数据簇的簇中心的距离,根据计算的距离将请求1发送至GPU1进行搜索查询,最终GPU1查询到请求1的最近邻节点。以及,在获取请求2之后,计算请求2对应的搜索查询向量与两个数据簇的簇中心的距离,根据计算的距离将请求2发送至GPU2进行搜索查询,最终GPU2查询到请求2的最近邻节点。
对比可得,相关技术中使用随机划分方式,则数据搜索请求必须被发送到所有GPU,在所有数据簇中进行搜索,然后合并结果;若采用本公开实施例的聚类和边界延拓的数据划分方式,使得数据搜素请求对应的查询点与该查询点的最近邻节点大概率位于同一数据簇中,因此数据搜索请求被发送到距离最近的数据簇中即可,即数据搜索请求被发送到一个GPU进行搜索查询即可,无需进行结果合并,降低了GPU的任务量,大幅度提升了吞吐率。
图9是相关技术中单个GPU进行数据搜索的结果与本公开实施例中单个GPU进行数据搜索的结果对比图。如图9所示,方法一是相关技术中单个GPU进行数据搜索的方法,方法二是本公开实施例中单个GPU进行数据搜索的方法。从图9可以看出,单个GPU部署时,本公开实施例提供的数据搜索方法在不同召回率下的QPS(每秒处理的查询数量)均高于相关技术的数据搜索方法在不同召回率下的QPS。
图10是相关技术中多个GPU进行数据搜索的结果与本公开实施例中多个GPU进行数据搜索的结果对比图。如图10所示,方法一是相关技术中多个GPU进行数据搜索的方法,方法二是本公开实施例中多个GPU进行数据搜索的方法。从图10可以看出,多个GPU部署时,本公开实施例提供的数据搜索方法在不同召回率下的QPS(每秒处理的查询数量)均高于相关技术的数据搜索方法在不同召回率下的QPS。
本公开实施例提供的数据搜索方法能够基于GPU实现混合搜索,在利用单个GPU进行混合搜索查询时,利用单个GPU的多线程对一个或多个邻居节点进行并行属性预存及属性过滤操作,优化了单个GPU上混合搜索过程中的GPU资源利用,能够降低单个GPU上进行混合搜索的延时,并且在数据子图构建过程中构建属性索引,进而在属性预存操作中通过属性索引对一个或多个邻居进行的属性进行读取,能够实现顺序访存操作,从而获取更快的访存速度,还有属性索引是压缩存储的,能够减少混合搜索过程造成的额外存储空间开销。还能够将数据搜索请求的搜索查询向量发送至相应的GPU(即目标GPU)上进行混合搜索查询,避免将数据搜索请求的搜索查询向量发送至所有的GPU上,优化了多个GPU间协同处理请求时的调度方式,以减少GPU任务量从而提高整体吞吐率。
可以理解的是,本说明书中上述方法的各个实施例之间相同/相似的部分可互相参见,每个实施例重点说明的是与其他实施例的不同之处,相关之处参见其他方法实施例的说明即可。
图11是根据一示例性实施例示出的一种数据搜索装置的框图。如图11所示,数据搜索装置1100包括请求接收模块1110、处理器确定模块1120和搜索模块1130。
其中,请求接收模块1110用于:接收数据搜索请求,生成数据搜索请求的搜索查询向量;处理器确定模块1120用于:根据搜索查询向量,从数据集的一个或多个数据子图中选取目标数据子图,确定目标数据子图对应的目标GPU,其中,目标数据子图是在目标GPU上构建的;搜索模块1130用于:将搜索查询向量发送至目标GPU,通过目标GPU根据搜索查询向量在目标数据子图中进行搜索,获得一个或多个邻居节点,利用目标GPU的多线程对一个或多个邻居节点进行并行处理操作,获得处理操作结果,以及根据处理操作结果,确定搜索查询向量的数据搜索结果。
在本公开的一些示例性实施例中,搜索模块1130还用于:利用目标GPU的多线程,对一个或多个邻居节点进行属性访存操作以及属性过滤操作,获得一个或多个邻居节点中的一个或多个候选节点;计算各个候选节点的数据向量与搜索查询向量之间的距离,保存计算的距离;候选节点的数据向量包括候选节点对应的数据的特征向量和候选节点对应的数据的属性特征,搜索查询向量包括数据搜索请求中的查询对象的特征向量和查询对象的属性特征。
在本公开的一些示例性实施例中,数据搜索请求包括属性过滤条件;其中,搜索模块1130还用于:对于各个邻居节点,利用目标GPU的多线程中的一个线程,根据节点的属性索引读取邻居节点的属性数据;节点的属性索引是在构建数据集的数据子图的过程中构建的,节点的属性索引是按照预设压缩格式存储的;响应于邻居节点的属性数据满足属性过滤条件,将邻居节点过滤掉;响应于邻居节点的属性数据不满足属性过滤条件,确定邻居节点为候选节点。
在本公开的一些示例性实施例中,搜索模块1130还用于:从一个或多个候选节点中各个候选节点的数据向量与搜索查询向量之间的距离中选择距离最小值,确定距离最小值对应的候选节点为搜索查询向量的数据搜索结果。
在本公开的一些示例性实施例中,数据搜索装置1100还包括子图构建模块1140,用于:获取数据集,生成数据集中各个数据的数据向量,其中,数据的数据向量包括数据的特征向量和数据的属性特征;根据数据集中各个数据的数据向量,对数据集包含的数据进行聚类划分,获得一个或多个数据簇,将一个或多个数据簇分配至一个或多个GPU;在各个GPU上构建分配至GPU的数据簇的数据子图,以获得一个或多个数据子图。
在本公开的一些示例性实施例中,子图构建模块1140还用于:获取预设的距离阈值;基于预设的距离阈值对数据集包含的数据进行聚类划分,以使得划分到各个数据簇中的数据与数据簇的簇中心之间的距离小于预设的距离阈值。
在本公开的一些示例性实施例中,处理器确定模块1120还用于:确定一个或多个数据子图中各个数据子图对应的数据簇,获取各个数据子图对应的数据簇的簇中心;计算各个数据子图对应的数据簇的簇中心与搜索查询向量之间的相似度;从计算的相似度中选取相似度最小值,确定相似度最小值对应的数据子图为目标数据子图。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图12是根据一示例性实施例示出的适于用来实现本公开示例性实施例的电子设备的结构示意图。需要说明的是,图12示出的电子设备1200仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图12所示,电子设备1200以通用计算设备的形式表现。电子设备1200的组件可以包括但不限于:上述至少一个处理单元1210、上述至少一个存储单元1220、连接不同***组件(包括存储单元1220和处理单元1210)的总线1230。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1210执行,使得所述处理单元1210执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元1210可以执行如图2中所示的步骤S210:接收数据搜索请求,生成数据搜索请求的搜索查询向量;步骤S220:根据搜索查询向量,从数据集的一个或多个数据子图中选取目标数据子图,确定目标数据子图对应的目标GPU;目标数据子图是在目标GPU上构建的;步骤S230:将搜索查询向量发送至目标GPU,通过目标GPU根据搜索查询向量在目标数据子图中进行搜索,获得一个或多个邻居节点,利用目标GPU的多线程对一个或多个邻居节点进行并行处理操作,获得处理操作结果;步骤S240:根据处理操作结果,确定搜索查询向量的数据搜索结果。
存储单元1220可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)12201和/或高速缓存存储单元12202,还可以进一步包括只读存储单元(ROM)12203。
存储单元1220还可以包括具有一组(至少一个)程序模块12205的程序/实用工具12204,这样的程序模块12205包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线1230可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、***总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备1200也可以与一个或多个外部设备1300(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1200交互的设备通信,和/或与使得该电子设备1200能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口1250进行。并且,电子设备1200还可以通过网络适配器1240与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器1240通过总线1230与电子设备1200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
根据本发明实施方式的用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (11)
1.一种数据搜索方法,其特征在于,所述方法包括:
接收数据搜索请求,生成所述数据搜索请求的搜索查询向量;
根据所述搜索查询向量,从数据集的一个或多个数据子图中选取目标数据子图,确定所述目标数据子图对应的目标图形处理器;所述目标数据子图是在所述目标图形处理器上构建的;
将所述搜索查询向量发送至所述目标图形处理器,通过所述目标图形处理器根据所述搜索查询向量在所述目标数据子图中进行搜索,获得一个或多个邻居节点,利用所述目标图形处理器的多线程对所述一个或多个邻居节点进行并行处理操作,获得处理操作结果;
根据所述处理操作结果,确定所述搜索查询向量的数据搜索结果。
2.根据权利要求1所述的方法,其特征在于,所述利用所述目标图形处理器的多线程对所述一个或多个邻居节点进行并行处理操作,获得处理操作结果,包括:
利用所述目标图形处理器的多线程,对所述一个或多个邻居节点进行属性访存操作以及属性过滤操作,获得所述一个或多个邻居节点中的一个或多个候选节点;
计算各个所述候选节点的数据向量与所述搜索查询向量之间的距离,保存计算的距离;所述候选节点的数据向量包括所述候选节点对应的数据的特征向量和所述候选节点对应的数据的属性特征,所述搜索查询向量包括所述数据搜索请求中的查询对象的特征向量和所述查询对象的属性特征。
3.根据权利要求2所述的方法,其特征在于,所述数据搜索请求包括属性过滤条件;
其中,所述利用所述目标图形处理器的多线程,对所述一个或多个邻居节点进行属性访存操作以及属性过滤操作,获得所述一个或多个邻居节点中的一个或多个候选节点,包括:
对于各个所述邻居节点,利用所述目标图形处理器的多线程中的一个线程,根据节点的属性索引读取所述邻居节点的属性数据;所述节点的属性索引是在构建所述数据集的数据子图的过程中构建的,所述节点的属性索引是按照预设压缩格式存储的;
响应于所述邻居节点的属性数据满足所述属性过滤条件,将所述邻居节点过滤掉;
响应于所述邻居节点的属性数据不满足所述属性过滤条件,确定所述邻居节点为所述候选节点。
4.根据权利要求2所述的方法,其特征在于,所述根据所述处理操作结果,确定所述搜索查询向量的数据搜索结果,包括:
从所述一个或多个候选节点中各个所述候选节点的数据向量与所述搜索查询向量之间的距离中选择距离最小值,确定所述距离最小值对应的候选节点为所述搜索查询向量的数据搜索结果。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述数据集,生成所述数据集中各个数据的数据向量;所述数据的数据向量包括所述数据的特征向量和所述数据的属性特征;
根据所述数据集中各个数据的数据向量,对所述数据集包含的数据进行聚类划分,获得一个或多个数据簇,将所述一个或多个数据簇分配至一个或多个图形处理器;
在各个所述图形处理器上构建分配至所述图形处理器的数据簇的数据子图,以获得所述一个或多个数据子图。
6.根据权利要求5所述的方法,其特征在于,所述对所述数据集包含的数据进行聚类划分,包括:
获取预设的距离阈值;
基于所述预设的距离阈值对所述数据集包含的数据进行聚类划分,以使得划分到各个所述数据簇中的数据与所述数据簇的簇中心之间的距离小于所述预设的距离阈值。
7.根据权利要求5所述的方法,其特征在于,所述根据所述搜索查询向量,从数据集的一个或多个数据子图中选取目标数据子图,包括:
确定所述一个或多个数据子图中各个所述数据子图对应的数据簇,获取各个所述数据子图对应的数据簇的簇中心;
计算各个所述数据子图对应的数据簇的簇中心与所述搜索查询向量之间的相似度;
从计算的相似度中选取相似度最小值,确定所述相似度最小值对应的数据子图为所述目标数据子图。
8.一种数据搜索装置,其特征在于,所述装置包括:
请求接收模块,用于接收数据搜索请求,生成所述数据搜索请求的搜索查询向量;
处理器确定模块,用于根据所述搜索查询向量,从数据集的一个或多个数据子图中选取目标数据子图,确定所述目标数据子图对应的目标图形处理器;所述目标数据子图是在所述目标图形处理器上构建的;
搜索模块,用于将所述搜索查询向量发送至所述目标图形处理器,通过所述目标图形处理器根据所述搜索查询向量在所述目标数据子图中进行搜索,获得一个或多个邻居节点,利用所述目标图形处理器的多线程对所述一个或多个邻居节点进行并行处理操作,获得处理操作结果;根据所述处理操作结果,确定所述搜索查询向量的数据搜索结果。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述可执行指令,以实现如权利要求1至7中任一项所述的数据搜索方法。
10.一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1至7中任一项所述的数据搜索方法。
11.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时,实现权利要求1至7中任一项所述的数据搜索方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410257629.8A CN118193195A (zh) | 2024-03-06 | 2024-03-06 | 数据搜索方法、装置、电子设备、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410257629.8A CN118193195A (zh) | 2024-03-06 | 2024-03-06 | 数据搜索方法、装置、电子设备、存储介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118193195A true CN118193195A (zh) | 2024-06-14 |
Family
ID=91413448
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410257629.8A Pending CN118193195A (zh) | 2024-03-06 | 2024-03-06 | 数据搜索方法、装置、电子设备、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118193195A (zh) |
-
2024
- 2024-03-06 CN CN202410257629.8A patent/CN118193195A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109189991B (zh) | 重复视频识别方法、装置、终端及计算机可读存储介质 | |
US11100073B2 (en) | Method and system for data assignment in a distributed system | |
CN104077723B (zh) | 一种社交网络推荐***及方法 | |
CN109597810B (zh) | 一种任务切分方法、装置、介质及电子设备 | |
WO2022043798A1 (en) | Automated query predicate selectivity prediction using machine learning models | |
US11144793B2 (en) | Incremental clustering of a data stream via an orthogonal transform based indexing | |
CN111062431A (zh) | 图像聚类方法、图像聚类装置、电子设备及存储介质 | |
CN111310834B (zh) | 数据处理方法及装置、处理器、电子设备、存储介质 | |
WO2022007596A1 (zh) | 图像检索***、方法和装置 | |
CN113590898A (zh) | 数据检索方法、装置、电子设备、存储介质及计算机产品 | |
US11372846B2 (en) | Generating and utilizing pre-allocated storage space | |
CN113761017A (zh) | 相似性搜索方法和装置 | |
CN110209895B (zh) | 向量检索方法、装置和设备 | |
CN114897666B (zh) | 图数据存储、访问、处理方法、训练方法、设备及介质 | |
CN116089367A (zh) | 动态分桶方法、装置、电子设备和介质 | |
Romero-Gainza et al. | Memory mapping and parallelizing random forests for speed and cache efficiency | |
CN118193195A (zh) | 数据搜索方法、装置、电子设备、存储介质及程序产品 | |
CN110852078A (zh) | 生成标题的方法和装置 | |
CN114565105A (zh) | 处理数据的方法和深度学习模型的训练方法、装置 | |
CN113076197A (zh) | 负载均衡方法及装置、存储介质及电子设备 | |
CN110321435B (zh) | 一种数据源划分方法、装置、设备和存储介质 | |
CN113901278A (zh) | 一种基于全局多探测和适应性终止的数据搜索方法和装置 | |
Antaris et al. | Similarity search over the cloud based on image descriptors' dimensions value cardinalities | |
CN109299112B (zh) | 用于处理数据的方法和装置 | |
CN113190730A (zh) | 一种区块链地址的分类方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |