CN118535611A - 数据搜索方法、装置及相关设备 - Google Patents

数据搜索方法、装置及相关设备 Download PDF

Info

Publication number
CN118535611A
CN118535611A CN202310172029.7A CN202310172029A CN118535611A CN 118535611 A CN118535611 A CN 118535611A CN 202310172029 A CN202310172029 A CN 202310172029A CN 118535611 A CN118535611 A CN 118535611A
Authority
CN
China
Prior art keywords
data
matching
slice
matching degrees
binary heap
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
Application number
CN202310172029.7A
Other languages
English (en)
Inventor
彭席汉
蓝王力
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202310172029.7A priority Critical patent/CN118535611A/zh
Publication of CN118535611A publication Critical patent/CN118535611A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种数据搜索方法,包括:获取用户输入的搜索内容,并确定数据库中的M条数据分别对应的匹配度,每条数据对应的匹配度用于度量搜索内容与该数据之间的相关性;然后,根据M个匹配度的数值分布,利用该M个匹配度中的P个匹配度构建目标二叉堆,P为小于M的正整数,从而根据构建出的目标二叉堆,输出数据库中与该搜索内容相匹配的数据。如此,在搜索过程中,根据M个匹配度的数值分布,利用M个匹配度中的部分匹配度构建目标二叉堆,以此可以有效减少搜索过程中需要向二叉堆插入的数据,也即减少所需执行的入堆操作,从而可以提高搜索效率、减少资源消耗。此外,本申请还提供了对应的装置及相关设备。

Description

数据搜索方法、装置及相关设备
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据搜索方法、装置及相关设备。
背景技术
随着信息量持续增加,数据搜索已经成为行业内的重要需求,包括网页搜索、文档搜索、图片搜索等。实际应用场景中,用户通常会输入搜索内容,如输入关键词或者图片等;然后,搜索引擎从数据库中搜索出与该搜索内容之间的匹配度较高的文档/图片等数据,并将其反馈给用户。
目前,搜索引擎在数据搜索过程中,通常是利用串行的二叉堆(binary heap)排序的方式对数据库中的数据进行一一排序,进而搜索出与搜索内容匹配度较高的前K条数据。其中,二叉堆排序,是一种用于计算一批数据中最大(或者最小)的前K条数据的排序方法。实际应用场景中,当数据库中的数据量较大时,这种数据搜索方式的性能较低,如数据搜索的耗时较高、资源消耗较大等。
发明内容
有鉴于此,本申请实施例提供了一种数据搜索方法,用于提高数据搜索的性能。本申请还提供了对应的装置、计算设备集群、计算机可读存储介质以及计算机程序产品。
第一方面,本申请实施例提供了一种数据搜索方法,该方法可以由相应的数据搜索装置执行,该方法包括:数据搜索装置获取用户输入的搜索内容,如用户可以输入“院线电影”等文本类型的搜索内容,或者输入其它类型的搜索内容等。然后,数据搜索装置确定数据库中的M条数据分别对应的匹配度,每条数据对应的匹配度用于度量该搜索内容与数据之间的相关性。比如,可以定义数据对应的匹配度越大,表征该数据与搜索内容之间的相关性越高。或者,可以定义数据对应的匹配度越小,表征该数据与搜索内容之间的相关性越高。其中,M为正整数。接着,数据搜索装置根据M个匹配度的数值分布,利用该M个匹配度中的P个匹配度构建目标二叉堆,其中,P为小于M的正整数,并且,P个匹配度满足针对目标二叉堆的构建条件,如可以是选择P个数值最大的匹配度构建目标二叉堆,或者可以是对M个匹配度进行切分后,选择数值较大的匹配度数量相对较多的切片构建目标二叉堆等。这样,数据搜索装置根据构建出的目标二叉堆,输出数据库中与该搜索内容相匹配的数据。
如此,在搜索过程中,并非是基于M个匹配度构建目标二叉堆,而是根据M个匹配度的数值分布,利用M个匹配度中的P个匹配度构建目标二叉堆,以此可以有效减少搜索过程中需要向二叉堆插入的数据,也即减少所需执行的入堆操作,从而可以提高搜索效率、减少资源消耗。
在一种可能的实施方式中,数据搜索装置在构建目标二叉堆时,具体可以是先对M个匹配度进行切分,得到n个切片,每个切片包括多个匹配度,其中,n为正整数,从而,数据搜素装置根据该n个切片中每个切片包括的多个匹配度的数值分布,利用M个匹配度中的P个匹配度构建目标二叉堆。如此,基于各个切片中多个匹配度的数值分布,可以得到M个匹配度的数值分布,以此完成目标二叉堆的构建。
在一种可能的实施方式中,数据搜索装置在根据每个切片包括的多个匹配度的数值分布,利用P个匹配度构建目标二叉堆时,具体可以是先确定每个切片中前k个数值最大的匹配度,其中,k为正整数;然后,数据搜索装置根据每个切片中前(k-1)个数值最大的匹配度,构建初始二叉堆,该初始二叉堆包括的所有节点中位于根节点的匹配度的值最小,也即初始二叉堆为最小堆;接着,数据搜索装置比较每个切片中第k个数值最大的匹配度的值与始二叉堆中位于该根节点的匹配度的值,并且,当切片中第k个数值最大的匹配度的值大于位于根节点的匹配度的值时,数据搜索装置将该切片中剩余的匹配度插入初始二叉堆。如此,数据搜索装置可以利用每个切片中第k个数值最大的匹配度的值,确定该切片中多个匹配度的数值分布情况,从而实现目标二叉堆的构建。
在一种可能的实施方式中,数据搜索装置在确定每个切片中前k个数值最大的匹配度时,具体可以是利用向量计算单元对每个切片包括的多个匹配度进行向量排序,得到每个切片中前k个数值最大的匹配度。如此,数据搜索装置利用向量计算单元提高确定每个切片中前k个数值最大的匹配度的效率,进而可以提高数据搜索的整体效率。
在一种可能的实施方式中,向量计算单元连接缓存,该缓存用于存储每个切片包括的多个匹配度,从而数据搜索装置在利用向量计算单元对每个切片包括的多个匹配度进行向量排序时,具体可以是利用向量计算单元对缓存中的每个切片包括的多个匹配度进行向量排序。如此,数据搜索装置可以利用缓存加快数据读写效率,从而可以进一步提高数据搜索的整体效率。
在一种可能的实施方式中,初始二叉堆以及目标二叉堆是利用通用计算单元完成构建的。
在一种可能的实施方式中,数据搜索装置在对M个匹配度进行切分时,具体可以是基于切片长度L进行切分,L为正整数,从而数据搜索装置还可以预先构建耗时计算函数,该耗时计算函数中的变量包括切片长度L和上述k,然后,数据搜索装置可以求解该耗时计算函数中的变量的最优值,得到L和k的取值。
在一种可能的实施方式中,数据搜索装置数据库中的数据包括文本、图片、音频、视频中的一种或者多种。如此,数据搜索装置可以支持基于多种形式的搜索内容提供数据搜素的服务。
第二方面,本申请实施例还提供了一种数据搜索装置,包括:交互模块,用于获取用户输入的搜索内容;处理模块,用于确定数据库中的M条数据分别对应的匹配度,每条数据对应的匹配度用于度量搜索内容与数据之间的相关性,其中,M为正整数;根据M个匹配度的数值分布,利用M个匹配度中的P个匹配度构建目标二叉堆,其中,P为小于M的正整数,P个匹配度满足针对目标二叉堆的构建条件;交互模块,还用于根据目标二叉堆,输出数据库中与搜索内容相匹配的数据。
在一种可能的实施方式中,处理模块,具体用于:对M个匹配度进行切分,得到n个切片,每个切片包括多个匹配度,其中,n为正整数;根据n个切片中每个切片包括的多个匹配度的数值分布,利用M个匹配度中的P个匹配度构建目标二叉堆。
在一种可能的实施方式中,处理模块,具体用于:确定每个切片中前k个数值最大的匹配度,其中,k为正整数;根据每个切片中前(k-1)个数值最大的匹配度,构建初始二叉堆,初始二叉堆包括的所有节点中位于根节点的匹配度的值最小;比较每个切片中第k个数值最大的匹配度的值与初始二叉堆中位于根节点的匹配度的值;当切片中第k个数值最大的匹配度的值大于位于根节点的匹配度的值时,将切片中剩余的匹配度插入初始二叉堆。
在一种可能的实施方式中,处理模块,具体用于:利用向量计算单元对每个切片包括的多个匹配度进行向量排序,得到每个切片中前k个数值最大的匹配度。
在一种可能的实施方式中,向量计算单元连接缓存,缓存用于存储每个切片包括的多个匹配度;处理模块,具体用于:利用向量计算单元对缓存中的每个切片包括的多个匹配度进行向量排序。
在一种可能的实施方式中,初始二叉堆以及目标二叉堆是利用通用计算单元完成构建的。
在一种可能的实施方式中,M个匹配度基于切片长度L进行切分,数据搜索装置还包括配置模块,用于:构建耗时计算函数,耗时计算函数中的变量包括L以及k;求解耗时计算函数中的变量的最优值,得到L以及k的取值。
在一种可能的实施方式中,数据库中的数据包括文档、图片、音频、视频中的一种或者多种。
值得注意的是,第二方面提供的数据搜索装置,对应于第一方面提供的数据搜索方法,故第二方面以及第二方面中任一实施方式所具有的技术效果,可参见第一方面或者第一方面的相应实施方式所具有的技术效果。
第三方面,本申请提供一种计算设备,计算设备包括通用计算单元、向量计算单元、存储器,通用计算单元、向量计算单元、存储器通过总线连接;存储器,用于存储数据库中的M条数据分别对应的匹配度,每条数据对应的匹配度用于度量用户输入的搜索内容与数据之间的相关性,其中,M为正整数;通用计算单元,用于对存储器中的M个匹配度进行切分,得到n个切片,其中,n为正整数;向量计算单元,用于确定n个切片中每个切片包括的多个匹配度的数值分布;通用计算单元,还用于根据n个切片中每个切片包括的多个匹配度的数值分布,利用M个匹配度中的P个匹配度构建目标二叉堆,P个匹配度满足针对目标二叉堆的构建条件,目标二叉堆用于确定数据库中与搜索内容相匹配的数据。
在一种可能的实施方式中,存储器包括内存以及缓存;内存,用于存储M个匹配度;
缓存,用于存储每个切片包括的多个匹配度;向量计算单元,具体用于对缓存中的每个切片包括的多个匹配度进行向量排序,得到每个切片包括的多个匹配度的数值分布。
在一种可能的实施方式中,向量计算单元,具体用于对缓存中的每个切片包括的多个匹配度进行向量排序,得到每个切片中前k个数值最大的匹配度。
在一种可能的实施方式中,通用计算单元,具体用于:根据每个切片中前(k-1)个数值最大的匹配度,构建初始二叉堆,初始二叉堆包括的所有节点中位于根节点的匹配度的值最小;比较每个切片中第k个数值最大的匹配度的值与初始二叉堆中位于根节点的匹配度的值;当切片中第k个数值最大的匹配度的值大于位于根节点的匹配度的值时,将切片中剩余的匹配度插入初始二叉堆。
在一种可能的实施方式中,通用计算单元包括中央处理器CPU,向量计算单元包括加速处理器APU、大脑处理器BPU、深度学习处理器DPU、数据处理单元DPU、图形处理器GPU、神经网络处理器NPU、张量处理器TPU、矢量处理器VPU中的一种或者多种。
在一种可能的实施方式中,通用计算单元与向量计算单元位于同一芯片。
第四方面,本申请提供一种加速卡,该加速卡包括向量处理单元和通用处理单元,向量处理单元和通用处理单元用于实现上述第三方面或第三方面任意一种可能实现方式中的向量处理单元和通用处理单元实现的功能。
第五方面,本申请提供一种计算设备集群,所述计算设备包括至少一个计算设备,所述至少一个计算设备包括至少一个处理器和至少一个存储器;所述至少一个存储器用于存储指令,所述至少一个处理器执行所述至少一个存储器存储的该指令,以使所述计算设备集群执行上述第一方面或第一方面任一种可能实现方式中的数据搜索方法。需要说明的是,该存储器可以集成于处理器中,也可以是独立于处理器之外。所述至少一个计算设备还可以包括总线。其中,处理器通过总线连接存储器。其中,存储器可以包括可读存储器以及随机存取存储器。
第六方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在至少一个计算设备上运行时,使得所述至少一个计算设备执行上述第一方面或第一方面的任一种实现方式所述的方法。
第七方面,本申请提供了一种包含指令的计算机程序产品,当其在至少一个计算设备上运行时,使得所述至少一个计算设备执行上述第一方面或第一方面的任一种实现方式所述的方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
图1为本申请实施例提供的二叉堆排序的示意图;
图2为本申请实施例提供的一示例性数据搜索装置100的结构示意图;
图3为本申请实施例提供的另一示例性数据搜索装置100的结构示意图;
图4为本申请实施例提供的一种数据搜索的方法的流程示意图;
图5为本申请实施例提供的一种交互界面的示意图;
图6为本申请实施例提供的另一种数据搜索的方法的流程示意图;
图7为本申请实施例提供的一种计算设备集群的结构示意图。
具体实施方式
下面将结合本申请中的附图,对本申请提供的实施例中的方案进行描述。
目前,多种应用具备搜索引擎(search engine)的功能。搜索引擎是一种信息检索系统,用于从数据库中搜索出符合用户期望的数据。在搜索过程中,搜索引擎对用户输入的搜索内容进行特征提取,并根据提取的特征与数据库中的数据的特征进行匹配,例如根据特征距离计算搜索内容与数据之间的匹配度,进而将匹配结果进行排序,最终向用户返回匹配结果TopK的数据作为搜索结果,也即向用户返回前K个最匹配的数据。
其中,搜索引擎主要是利用串行的二叉堆排序的方式确定与用户输入的搜索内容相关性最高的前K个匹配结果。具体地,搜索引擎先计算出用户输入的搜索内容与数据库中各条数据之间的匹配度,该多条数据分别对应的匹配度依次排列,如图1所示。其中,匹配度的大小表征了搜索内容与数据之间的相关性。比如,数据对应的匹配度的数值越大,表征该数据与搜索内容之间的相关性越高。或者,数据对应的匹配度的数值越小,表征该数据与搜索内容之间的相关性越高。
如图1所示,搜索引擎会将计算出的多条数据分别对应的匹配度的值,逐个插入至二叉堆中。其中,二叉堆可以用数组来表示,当二叉堆中的根节点在数组中的位置是1时,第n个位置的子节点在数组中的位置分别在2n和2n+1。
图1所示的二叉堆中,父节点的值大于或等于子节点的值。这样,每次向二叉堆插入一个数值(匹配度的值)时,搜索引擎会先在数组的末尾插入新节点,如在将第一个匹配度0.7插入二叉堆时,可以先将匹配度0.7插入至数组的末尾。然后,由于该新节点的值可能大于上层节点的值,因此,搜索引擎通常会自下而上的调整子节点与父节点,具体可以是通过比较子节点的值与父节点的值,当子节点的值大于父节点的值时,会交换子节点与父节点的值,如图1所示,将0.7与其父节点0.3进行数值交换。然后,搜索引擎继续比较经过数值交换的父节点与上层节点的值大小,直至二叉堆满足父节点的值大于或等于子节点的值的特性,如图1所示。按照上述过程,搜索引擎继续将下一个匹配度的值插入二叉堆中,直至向二叉堆中插入所有匹配度的值。最后,搜索引擎可以将该二叉堆中前K个数值最大的匹配度所对应的数据作为搜索结果并进行反馈。
实际应用场景中,数据库中的数据较多,如可能存在几百万、几千万条数据等。因此,基于上述串行的二叉堆排序的方式,搜索引擎需要将大量的匹配度的值依次插入二叉堆中,这会导致数据搜索的耗时较长、资源消耗较大,从而导致数据搜索性能较低,影响用户的信息查询体验。
基于此,本申请实施例提供了一种数据搜索的方法,用以提高数据搜索的性能,该方法可以由数据搜索装置执行。具体实现时,数据搜索装置获取用户输入的搜索内容,如输入“院线电影”等用于查询信息的关键词;然后,数据搜索装置确定数据库中的M条数据分别对应的匹配度,也即确定出M个匹配度,其中,M为正整数,每条数据对应的匹配度用于度量该数据与搜索内容之间的相关性;这样,数据搜索装置根据该M个匹配度的数值分布,利用M个匹配度中的P个匹配度构建目标二叉堆,该P为小于M的正整数,并且,所确定的P个匹配度满足针对目标二叉堆的构建条件,从而数据搜索装置根据所构建的目标二叉堆,输出数据库中与搜索内容相匹配的数据,如输出目标二叉堆中数值最大的前K个匹配度所对应的数据。如此,数据搜索装置在搜索过程中,并非是基于M个匹配度构建目标二叉堆,而是利用M个匹配度中数值较大的P个匹配度构建二叉堆,以此可以有效减少搜索过程中需要向二叉堆插入的数据,也即减少所需执行的入堆操作,从而可以提高搜索效率、减少资源消耗。
作为一种示例,上述数据搜索装置可以被部署于云端,用于为用户提供数据搜索的云服务。例如,在图2所示的应用场景中,数据搜索装置100部署于云端,如公有云、私有云、边缘云等,并且,可以由云端的计算设备或者计算设备集群实现,能够提供数据搜索的云服务。如图2所示,数据搜索装置100可以按照功能划分为交互模块101、处理模块102。其中,交互模块101用于获取用户201通过客户端202输入的搜索内容,并将该搜索内容提供给处理模块102。处理模块102用于确定数据库中M条数据分别对应的匹配度,并根据M个匹配度中的P个匹配度构建目标二叉堆,再将该目标二叉堆反馈给交互模块101。交互模块101,还用于根据该目标二叉堆,输出数据库中与搜索内容相匹配的K条数据。
进一步地,数据搜索装置100还可以包括其它功能模块,如还可以包括配置模块103等,如图2所示。其中,配置模块103可以用于对数据搜索装置100在数据搜索过程中所涉及的参数进行相应的配置,如配置数据库中的数据与搜索内容相匹配的条件(如配置搜索引擎所反馈的数据的数量等)、配置数据搜索装置100计算搜索内容与数据之间的匹配度的算法、匹配用于确定P个匹配度的构建条件等。
作为另一种示例,上述数据搜索装置100可以被部署于本地,部署于用户侧的计算设备上,从而该计算设备可以为用户提供本地的数据搜索服务。
上述数据搜索装置100可以通过软件实现,或者可以通过硬件实现。
在一种示例中,数据搜索装置100通过软件实现时,可以包括运行在计算实例上的代码。其中,计算实例可以包括主机、虚拟机、容器中的至少一种。数据搜索装置100包括的各个模块可以部署于同一计算实例中,也可以部署于不同计算实例中。需要说明的是,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的区域(region)或者可用区(availability zone,AZ)中,也可以分布在不同的region或者AZ中。同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。
在另一种示例中,数据搜索装置100通过硬件实现时,可以包括至少一个计算设备,如服务器、加速卡等。数据搜索装置100包括的多个计算设备可以分布在相同的region或者AZ中,也可以分布在不同的region或者AZ中。同样,数据搜索装置100包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。或者,数据搜索装置100也可以是利用专用集成电路(application-specific integrated circuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
举例来说,如图3所示,数据搜索装置100通过硬件实现时,可以包括存储器301以及通用计算单元302。进一步地,数据搜索装置100还可以包括向量计算单元303。其中,存储器301、通用计算单元302以及向量计算单元303通过总线进行连接(图3中未示出),并且,通用计算单元302与向量计算单元303可以位于同一芯片,也可以位于不同芯片。
其中,存储器301,用于存储数据库中的M条数据分别对应的匹配度,每条数据对应的匹配度用于度量用户输入的搜索内容与该数据之间的相关性,还用于存储通用计算单元302(以及向量计算单元303)在运行过程中所生成的数据。示例性地,存储器301可以用于实现数据搜索装置100中的内存或者缓存,图3中以存储器301同时包括内存3011以及缓存3012为例进行说明。
通用计算单元302,用于根据存储器301中的M个匹配度所对应的数值分布,利用M个匹配度中的P个匹配度构建目标二叉堆,并根据该目标二叉堆输出数据库中与搜索内容相匹配的数据。示例性地,通用计算单元302,例如可以通过中央处理器(centralprocessing unit,CPU)实现,或者可以通过其它方式实现。
向量计算单元303,用于对通用计算单元302生成目标二叉堆的过程进行加速,如可以通过向量排序等方式加速确定M个匹配度的数值分布,以实现加速生成目标二叉堆。示例性地,向量计算单元303,例如可以通过加速处理器(accelerated processing unit,APU)、大脑处理器(brain processing unit,BPU)、深度学习处理器(deep-learningprocessing unit,DPU)、数据处理单元(data processing unit,DPU)、图形处理器(graphics processing unit,GPU)、神经网络处理器(neural-network processing unit,NPU)、张量处理器(tensor processing unit,TPU)、矢量处理器(vector processingunit,VPU)中的一种或者多种处理器实现,或者可以通过其它具有向量处理能力的设备实现。
需要说明的是,上述针对数据搜索装置100所描述的各种实现方式仅作为一些示例性说明,在其它可能的实施方式中,数据搜索装置100中的功能模块也可以划分为其它形式,或者数据搜索装置100可以通过其它可能的硬件结构实现。
接下来,对数据搜索的过程中各种非限定性的具体实施方式进行详细描述。
参阅图4,为本申请实施例中一种数据搜索方法的流程示意图。该方法可以应用于上述图2或者图3所示的数据搜索装置100中,或者也可以是应用于其它可能结构的数据搜索装置100中。为便于理解,下面以应用于图2所示的数据搜索装置100为例进行说明。图4所示的数据搜索方法具体可以包括:
S401:交互模块101获取用户输入的搜索内容。
其中,用户201输入的搜索内容,可以是文本、语音、图片、视频等任意类型的内容。比如,交互模块101可以将用户201输入“院线电影”等关键词作为搜索内容,或者将用户201输入的任意格式的图片作为搜索内容等。
实际应用时,交互模块101可以对外提供客户端202,客户端202例如可以是交互模块101对外提供的网络浏览器,或者可以是运行在用户终端上的应用程序(application)。并且,客户端202可以向用户201呈现交互界面,例如可以向用户201呈现如图5所示的交互界面。这样,用户201可以在该交互界面中的文本框中输入用于查询信息的关键词等文本,或者通过点击热门搜索的其中一个候选项输入搜索内容;或者,用户201通过点击该交互界面上的录音按钮实现语音输入搜索内容;或者,用户201通过在该交互界面上导入图片或者视频,实现输入图片或者视频等格式的搜索内容。客户端202检测到交互界面上的搜索按钮被触发,并将用户201输入的搜索内容发送给交互模块201。
交互模块101在接收到客户端202发送的搜索内容后,可以将该搜索内容提供给处理模块102。
S402:处理模块102确定数据库中的M条数据分别对应的匹配度,其中,每条数据对应的匹配度用于度量搜索内容与该数据之间的相关性,M为正整数。
本实施例中,数据搜索装置100在为用户201提供查询服务时,具体可以是从数据库中搜索出用户201所需查询的数据。其中,数据库中可以存储有多条数据,如存储10万条数据等,并且,处理模块102在获得搜索内容后,可以计算该搜索内容分别与数据库中的M条数据之间的匹配度,每个匹配度用于度量搜索内容与一条数据之间的相关性。为便于理解,本实施例中定义匹配度越大,指示搜索内容与数据之间的相关性越高,该数据也就越可能是用户201在查询过程中所需获知的数据。其中,M条数据可以是数据库中的全部数据,或者可以是数据库中的部分数据(如用户201仅具有查询数据库中部分数据的权限等)。
作为一种实现示例,处理模块102在计算搜索内容与数据a(数据a为M条数据中的一条数据)之间的匹配度时,可以先对搜索内容以及数据a进行特征提取。比如,当搜索内容以及数据a均为图片类型的数据时,处理模块102可以利用局部二值模式(local binarypatterns,LBP)、定向梯度直方图(histogram of oriented gradient,HOG)、尺度不变特征变换(scale-invariant feature transform,SIFT)等算法,提取搜索内容与数据a的图片向量,并计算搜索内容的图片向量与数据a的图片向量之间的距离,并根据这两个图片向量的距离计算出搜索内容与数据a之间的匹配度。其中,这两个图片向量之间的距离越小,搜索内容与数据库a之间的匹配度的值越大;反之,距离越大,搜索内容与数据库a之间的匹配度的值越小。如此,按照上述类似过程,处理模块102可以计算出搜索内容分别与M条数据中各条数据之间的匹配度。
类似地,当用户201输入的搜索内容为文档、音频或者视频等类型的数据时,处理模块102也可以基于类似的方式提取该搜索内容的特征向量,并进一步计算该搜索内容的特征向量与数据库中的数据的特征向量之间的距离,以此得到搜索内容与数据库中的各个数据之间的匹配度,在此不做赘述。
S403:处理模块102根据M个匹配度的数值分布,利用M个匹配度中的P个匹配度构建目标二叉堆,其中,P为小于M的正整数,并且,P个匹配度满足针对目标二叉堆的构建条件。
通常情况下,数据库存储的M条数据中,可能仅存在一部分数据与搜索内容具有较高的相关性,因此,处理模块102在构建目标二叉堆时,可以根据M个匹配度的数值分布,过滤部分数值较低的匹配度,也即过滤该匹配度所对应的数据,从而基于满足构建条件的P个匹配度构建目标二叉堆。这样,可以减少参与构建目标二叉堆的匹配度的数量,进而实现减少处理模块102所需执行的将匹配度的值插入二叉堆的操作。其中,M个匹配度的数值分布,用于指示该M个不同大小的匹配度数值的分布情况,例如可以表现为部分匹配度的数值大于剩余部分匹配度的数值。构建条件,能够实现对所度量的相关性较小的匹配度进行过滤,在保证查询准确度的情况下,实现提高数据检索效率。
示例性地,本实施例中提供了以下几种构建目标二叉堆的实现示例。
在第一种实现示例中,处理模块102可以将M个匹配度的值分别与阈值进行比较,并将数值大于或者等于该阈值的匹配度,确定为用于构建目标二叉树的匹配度,以此可以从M个匹配度中筛选出数值较大的P个匹配度(P为大于1的整数),也即得到M个匹配度的数值分布。此时,构建条件,具体为匹配度的数值大于或者等于阈值。其中,阈值,可以预先由技术人员进行配置,如可以预先在数据搜索装置100中配置阈值为75%等。或者,阈值,可以由处理模块102根据M个匹配度的值进行计算得到。比如,处理模块102可以计算M个匹配度的平均值,并将计算出的平均值确定为阈值等。然后,处理模块102可以利用数值大于阈值的P个匹配度构建目标二叉堆。
如此,用于构建目标二叉堆的P个匹配度所度量的相关性较高,表征该匹配度所对应的数据与该搜索内容之间的相关性较高,因此,基于该P个匹配度所最终搜索出的数据,通常也能符合用户对于数据的查询需求,从而实现较高的查询准确度。
在第二种实现示例中,M个匹配度的数值分布具体可以是基于M个匹配度所得到的各个切片所包括的匹配度的数值分布,从而处理模块102可以根据各个切片中的多个匹配度的数值分布,利用数值相对较大的P个匹配度来构建目标二叉堆。
具体实现时,处理模块102可以按照固定长度L对M个匹配度进行切分,得到多个切片,假设切片数量为n(n为大于1的整数)。其中,每个切片中可以包括多个匹配度,长度L(也即切片中包括的匹配度的数量)可以预先通过求解函数最优值等方式进行确定,具体可参见下文描述,在此不做赘述。然后,针对每个切片,处理模块102可以确定出该切片中前k个数值最大的匹配度(k为大于1的整数),该切片中其余匹配度的数值均小于或者等于该第k个匹配度的数值,也即可以得到每个切片包括的多个匹配度的数值分布。其中,k的取值,可以预先通过求解函数最优值等方式进行确定,具体可参见下文描述,在此不做赘述。
举例来说,处理模块102可以利用冒泡排序、希尔排序等算法,对每个切片中的多个匹配度进行排序,并根据排序结果确定该切片中前k个数值最大的匹配度。又比如,处理模块102中可以配置有向量计算单元1021,如图2所示,从而处理模块102可以将每个切片包括的多个匹配度的值读取至缓存(buffer),并利用向量计算单元1021对缓存中的多个匹配度的值进行向量排序,如通过双调排序(bitonic sort)算法对多个匹配度的值进行向量排序等,以便利用向量计算单元1021加速对多个匹配度的排序过程。最后,处理模块102可以根据向量排序结果确定该切片中前k个数值最大的匹配度。
在确定出各个切片中前k个数值最大的匹配度后,处理模块102可以根据每个切片中前(k-1)个数值最大的匹配度,构建初始二叉堆,该初始二叉堆包括的所有节点中位于根节点的匹配度的值最小(此时,初始二叉堆为最小堆:父节点的值小于或等于子节点的值)。实际应用时,处理模块102中可以配置有通用计算单元1022,如图2所示,从而处理模块102可以利用该通用计算单元1022根据每个切片中前(k-1)个数值最大的匹配度构建初始二叉堆。
在构建出初始二叉堆后,每个切片中剩余未被插入初始二叉堆(以下简称“剩余未入堆”)的匹配度的最大值,即为该切片中的第k个数值最大的匹配度。如此,针对每个切片,处理模块102可以比较该切片的第k个匹配度的值与该初始二叉堆的根节点的值。若该切片的第k个数值最大的匹配度的值小于该根节点的匹配度的值,表征该切片中剩余未入堆的匹配度的值均小于该根节点的匹配度的值;相应地,剩余未入堆的各个匹配度所对应的数据与搜索内容的相关性较低,该数据为用户201所要查询的数据的可能性较小。此时,处理模块102可以无需利用通用计算单元1022将该切片中的剩余未入堆的匹配度的值插入初始二叉堆中,即跳过该切片并继续判断是否将下一切片中剩余未入堆的匹配度的值插入初始二叉堆中。而若该切片的第k个数值最大的匹配度的值大于该根节点的匹配度的值,表征该切片包括的剩余未入堆的多个匹配度中很可能存在部分匹配度的值也大于该根节点的匹配度的值;相应地,剩余未入堆的多个匹配度中可能存在部分匹配度所对应的数据与搜索内容的相关性较高,该数据为用户201所要查询的数据的可能性较大。则,处理模块102可以利用通用计算单元1022将该切片中剩余未入堆的全部匹配度的值插入初始二叉堆中。此时,构建条件,具体为切片中第k个数值最大的匹配度的值大于初始二叉堆中根节点的匹配度的值。如此,处理模块102可以基于上述过程,将n个切片中确定需要插入初始二叉堆的切片中的剩余未入堆的多个匹配度的值插入初始二叉堆。在完成针对所有切片的处理后,即可生成得到目标二叉堆。其中,所生成的目标二叉堆中根节点的值为最小值。
处理模块102在生成目标二叉堆后,可以将该目标二叉堆提供给交互模块101。
S404:交互模块101根据目标二叉堆,输出数据库中与搜索内容相匹配的数据。
实际应用场景中,数据搜索装置100向用户201反馈的搜索结果的数量通常有限,如向用户201反馈20条搜索出的数据等。因此,交互模块101可以遍历目标二叉堆,确定目标二叉堆中数值最大的前K个匹配度(K为大于1的整数,如K为20等,可以根据实际应用的需求进行设定),如可以通过遍历目标二叉堆的叶子节点筛选出数值最大的前K个匹配度等,然后,交互模块101进一步确定该K个匹配度在数据库中所对应的K个数据。示例性地,目标二叉堆中每个节点可以对应记录匹配度的值、该匹配度所对应的数据的标识,比如,目标二叉堆中每个节点所记录的信息可以为<匹配度,数据标识>等,从而交互模块101可以根据与K个匹配度对应记录的数据标识,确定数据库中的K个数据。这样,交互模块101可以将该K个数据作为与搜索内容相匹配的搜索结果反馈给用户201,具体可以是将其发送给客户端202,并由客户端202将接收到的K个数据呈现给用户201。
如此,数据搜索装置100在为用户201搜索数据的过程中,利用数值较大的P个匹配度构建目标二叉堆,而并非是利用所有匹配度构建目标二叉堆,这可以有效减少搜索过程中需要向二叉堆插入的数据,也即减少所需执行的入堆操作,从而可以提高搜索效率、减少资源消耗。同时,用于构建目标二叉堆的P个匹配度所度量的相关性较高,表征该匹配度所对应的数据与该搜索内容之间的相关性较高,因此,基于该P个匹配度所最终搜索出的数据,通常也能符合用户对于数据的查询需求,从而实现较高的查询准确度。
值得注意的是,本实施例中,是以匹配度的数值越大,表征搜索内容与该匹配度对应的数据之间的相关性越高为例进行说明。在其它实施例中,处理模块102也可以将搜索内容的特征向量与数据的特征向量之间的向量距离作为匹配度。此时,匹配度的数值越小,表征搜索内容与该匹配度对应的数据之间的相关性越高。则,处理模块102在构建目标二叉堆的过程中,可以先将按照固定长度对M个匹配度进行切分,得到n个切片。然后,针对每个切片,处理模块102可以确定出该切片中前k个数值最小的匹配度,并根据每个切片中前(k-1)个数值最小的匹配度,构建初始二叉堆,此时,初始二叉堆包括的所有节点中位于根节点的匹配度的值最大(此时,初始二叉堆为最大堆:父节点的值大于或等于子节点的值)。在构建出初始二叉堆后,针对每个切片,处理模块102可以比较该切片的第k个匹配度的值与该初始二叉堆的根节点的值,并且,若该切片的第k个匹配度的值大于该根节点的值,处理模块102可以无需将该切片中的剩余未入堆的匹配度的值插入初始二叉堆中,而若该切片的第k个匹配度的值小于或者等于该根节点的值,处理模块102可以将该切片中的剩余未入堆的匹配度的值插入初始二叉堆中。如此,处理模块102可以基于上述过程,将n个切片中确定需要插入初始二叉堆的切片中的剩余未入堆的多个匹配度的值插入初始二叉堆,以此生成目标二叉堆。这样,交互模块101可以将目标二叉堆中数值最小的前K个匹配度所对应的数据作为搜索结果进行输出。
下面,对上述切片长度L、从每个切片中所选取的数值最大(或者最小)的匹配度的数量k的取值的确定过程进行介绍。
作为一种实现示例,数据搜索装置100可以包括如图2所示的配置模块103,并且,该配置模块103可以构建下述公式(1)所示的耗时计算函数:
其中,T(L,k)为耗时计算函数,用于计算处理模块102生成目标二叉堆所需的耗时;L为切片长度;k为从每个切片中所选取的数值最大(或者最小)的匹配度的数量,其取值小于或等于L;M为匹配度的总数;t为每个匹配度的值插入初始二叉堆所需的耗时;F1(L)为处理模块102利用向量计算单元1021对切片内的多个匹配度进行向量排序所需的耗时,F1函数可以预先通过实验数据进行拟合得到;F2(L,k)为确定需要插入初始二叉堆的切片数量,其与L、k有关,F2函数可以通过实验数据进行拟合得到。
其中,所构建的耗时计算函数T包括L和k两个变量。则,配置模块103可以设定计算目标是耗时计算函数的取值最小,并可以以此求解得到耗时计算函数T取值最小时L、k的取值,例如可以是通过分别对L和k进行求导计算得到最优的L和k的值。这样,在数据搜索装置100提供数据搜索服务之前,配置模块103可以预先将L和k配置于处理模块102中,以便处理模块102基于所确定的L和k的取值生成目标二叉堆。
在其它实施例中,L与k的取值,也可以通过其它方式进行确定。比如,L与k的取值也可以是由技术人员直接设定。或者,处理模块102可以在一段时间段内基于L和k的多组取值为用户提供数据搜索服务,并记录每组L和k的取值所对应的搜索耗时;然后,处理模块102可以根据相同数量的匹配度的情况下,通过神经网络或者数学模型分析出L和k的最优取值(使得搜索耗时尽可能短)。
上述图4所示的实施例中,是以数据搜索方法应用于图2所示的数据搜索装置100为例进行示例性说明。当数据搜索方法应用于图3所示的数据搜索装置100时,数据搜索方法100可以由图3中的通用计算单元302与向量计算单元303执行,该数据搜索装置100也可以称之为异构计算平台。
参见图6,示出了本申请实施例提供的另一种数据搜索方法的流程示意图。基于图3所示的数据搜索装置100,图6所示的数据搜索方法具体可以包括:
S601:通用计算单元302对内存3011中存储的M个匹配度进行切分,得到n个切片,其中,M和N均为正整数。
本实施例中,内存3011中可以存储有数据库中的M条数据分别对应的匹配度,每条数据对应的匹配度用于度量该条数据与用户输入的搜索内容之间的相关性。M条数据可以是数据库中的全部数据,或者可以是数据库中的部分数据。
示例性地,在进行数据搜索之前,用户可以预先向数据搜索装置100输入搜索内容,如可以输入文本、语音、图片、视频等任意类型的搜索内容。然后,通用计算单元302可以计算用户输入的搜索内容分别与数据库中的M条数据之间的匹配度。比如,通用计算单元302可以先对搜索内容以及数据库中的各条数据进行特征提取,并计算搜索内容对应的特征向量分别与M条数据对应的特征向量之间的距离。接着,通用计算单元302可以将两个特征向量之间的距离,作为搜索内容与数据之间的匹配度;此时,匹配度越小,指示搜索内容与数据之间的相关性越高。或者,通用计算单元302可以基于两个特征向量之间的距离计算出搜索内容与数据之间的匹配度;并且,匹配度越大,指示搜索内容与数据之间的相关性越高,该数据也就越可能是用户在查询过程中所需获知的数据。最后,通用计算单元302将计算出的M条数据对应的匹配度写入内存3011中进行存储。可选地,在其它可能的实施方式中,也可以是由其它设备预先完成M个匹配度的计算,然后再将其写入内存3011中。
其中,内存3011,例如可以是随机存取存储器(random access memory,缩RAM)、双倍数据率同步动态随机存取存储器(double data rate synchronous dynamic randomaccess memory,DDR SDRAM)等,或者可以通过其它类型的存储介质实现。
对于内存3011中的M个相关度,通用计算单元302可以按照固定长度L对M个匹配度进行切分,得到n个切片,切片中包括的匹配度的数量即为L。其中,L的取值,可以预先通过求解函数最优值等方式进行确定,或者由技术人员预先进行确定,具体可参见前述相关之处描述,在此不做赘述。
对于内存3011中各个切片,向量计算单元303可以通过执行下述步骤确定各个切片包括的多个匹配度的数值分布。
S602:向量计算单元303将内存3011中每个切片包括的多个匹配度的值读取至缓存3012中。
其中,缓存3012,例如可以是静态随机存取存储器(static random accessmemory,SRAM)等,或者可以通过其它类型的存储介质实现。
实际应用时,缓存3012的尺寸通常较小,如可能为126千字节等,从而向量计算单元303可以基于缓存3012的尺寸,每次将内存3011中的部分切片(如1个切片)包括的多个匹配度读取至缓存3012中。
S603:向量计算单元303对缓存3012中的多个匹配度的值进行向量排序,得到每个切片中前k个数值最大的匹配度,k为正整数。
也即,向量计算单元303通过向量排序的方式,获得每个切片中的多个匹配度的数值分布。
其中,k的取值,可以预先通过求解函数最优值等方式进行确定,具体可参见前述相关之处描述,在此不做赘述。
S604:向量计算单元303将各个切片中前k个数值最大的匹配度写入内存3011中。
然后,通用计算单元302可以通过执行下述步骤,根据向量计算单元303确定出的各个切片中的多个匹配度的数值分布,构建目标二叉堆。
S605:通用计算单元302根据内存3011中存储的每个切片中前(k-1)个数值最大的匹配度,构建初始二叉堆,该初始二叉堆包括的所有节点中位于根节点的匹配度的值最小。
本实施例中,定义数据对应的匹配度的数值越大,指示该数据与搜索内容之间的相关性越大。因此,通用计算单元302所构建的初始二叉堆,为最小堆,即父节点的值小于或等于子节点的值。
可以理解,在其他实施例中,也可以定义数据对应的匹配度的数值越小,指示该数据与搜索内容之间的相关性越大。此时,通用计算单元302所构建的初始二叉堆,为最大堆,即父节点的值大于或等于子节点的值。
在构建出初始二叉堆后,每个切片中剩余未被插入初始二叉堆(以下简称“剩余未入堆”)的匹配度的最大值,即为该切片中的第k个数值最大的匹配度。
S606:通用计算单元302比较每个切片中第k个数值最大的匹配度的值与该初始二叉堆中位于根节点的匹配度的值。
S607:当切片中第k个数值最大的匹配度的值大于位于初始二叉堆中的根节点的匹配度的值时,通用计算单元302将该切片中剩余的匹配度插入初始二叉堆。
可以理解,当切片中的第k个数值最大的匹配度的值大于位于初始二叉堆中的根节点的匹配度的值时,表征该切片包括的剩余未入堆的多个匹配度中,除了第k个数值最大的匹配度之外,很可能还存在部分匹配度的值也大于该根节点的匹配度的值,并且,该部分匹配度所对应的数据与搜索内容的相关性较高,从而该部分匹配度所对应的数据为用户所要查询的数据的可能性较大。因此,通用计算单元302可以将该切片中的剩余未入堆的所有匹配度全部插入初始二叉堆中,以便后续基于插入初始二叉堆中的匹配度确定用户所需查询的数据。
而当该切片的第k个数值最大的匹配度的值小于初始二叉堆中根节点的匹配度的值,表征该切片中剩余未入堆的匹配度的值均小于该根节点的匹配度的值,则剩余未入堆的各个匹配度所对应的数据为用户所要查询的数据的可能性较小。此时,通用计算单元302可以无需将该切片中剩余未入堆的匹配度的值插入初始二叉堆中,具体为跳过该切片并继续判断是否将下一切片中剩余未入堆的匹配度的值插入初始二叉堆中。
按照上述过程遍历完所有切片后,即可得到目标二叉堆。
S608:通用计算单元302将生成的目标二叉堆写入内存3011中。
如此,后续通用计算单元302或者其它设备可以基于内存3011中的目标二叉堆,确定数据库中与用户输入的搜索内容相匹配的数据。
比如,通用计算单元302可以遍历目标二叉堆,确定目标二叉堆中数值最大的前K个匹配度(如K为20等)。然后,通用计算单元302进一步确定该K个匹配度在数据库中所对应的K个数据,并将该K个数据作为搜索结果反馈给用户,具体可以是将其发送给客户端,并由客户端将接收到的K个数据呈现给用户,以此实现为用户提供数据搜索服务。
如此,在搜索过程中,通用计算单元302利用M个匹配度中的部分匹配度构建二叉堆,以此可以有效减少搜索过程中需要向二叉堆插入的数据,也即减少所需执行的入堆操作,从而可以提高搜索效率、减少资源消耗。并且,利用向量计算单元303对各个切片中的多个匹配度进行向量排序,可以提高确定各个切片中前k个数值最大的匹配度的速率,以此可以进一步提高数据搜索的整体效率。
上述图3所示的数据搜索装置100,是以包括存储器301、通用计算单元302以及向量计算单元303为例进行示例性说明,当数据搜索装置部署于云端时,该数据搜索装置可以是包括一个或者多个计算设备的集群,并且,数据搜索装置的功能可以通过计算设备集群实现。
参见图7,示出了一种计算设备集群的结构示意图。其中,图7所示的计算设备集群70包括多个计算设备,上述数据搜索装置可以分布式地部署在该计算设备集群70中的多个计算设备上。如图7所示,计算设备集群70包括多个计算设备700,每个计算设备700包括存储器720、处理器710、通信接口730以及总线740,其中,存储器720、处理器710、通信接口730通过总线740实现彼此之间的通信连接。
处理器710可以采用CPU、GPU、ASIC或者一个或多个集成电路。处理器710还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,数据搜索装置的部分功能可用通过处理器710中的硬件的集成逻辑电路或者软件形式的指令完成。处理器710还可以是DSP、FPGA、通用处理器、其他可编程逻辑器件,分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的部分方法、步骤及逻辑框图。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器、闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器720,在每个计算设备700中,处理器710读取存储器720中的信息,结合其硬件可以完成数据搜索装置的部分功能。
存储器720可以包括ROM、RAM、静态存储设备、动态存储设备、硬盘(例如SSD、HDD)等。存储器720可以存储程序代码,例如,用于实现上述交互模块101的部分或者全部程序代码、用于实现处理模块102的部分或者全部程序代码、用于实现配置模块103的部分或者全部程序代码等。针对每个计算设备700,当存储器720中存储的程序代码被处理器710执行时,处理器710基于通信接口730执行数据搜索装置所执行的部分方法,如其中一部分计算设备700可以用于执行上述交互模块101、处理模块102所执行的方法,另一部分计算设备700用于执行上述配置模块103所执行的方法。存储器720还可以存储数据,例如:处理器710在执行过程中产生的中间数据或结果数据,例如,上述M个匹配度、初始二叉堆、目标二叉堆等。
每个计算设备700中的通信接口703用于与外部通信,例如与其它计算设备700进行交互等。
总线740可以是外设部件互连标准总线或扩展工业标准结构总线等。为便于表示,图7中每个计算设备700内的总线740仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
上述多个计算设备700之间通过通信网络建立通信通路,以实现数据搜索装置的功能。任一计算设备可以是云环境中的计算设备(例如,服务器),或边缘环境中的计算设备,或终端设备。
此外,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在一个或者多个计算设备上运行时,使得该一个或者多个计算设备执行上述实施例数据搜索装置的各个模块所执行的方法。
此外,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品被一个或者多个计算设备执行时,所述一个或者多个计算设备执行前述数据搜索方法中的任一方法。该计算机程序产品可以为一个软件安装包,在需要使用前述数据搜索方法的任一方法的情况下,可以下载该计算机程序产品并在计算机上执行该计算机程序产品。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,训练设备,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、训练设备或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、训练设备或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的训练设备、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。

Claims (16)

1.一种数据搜索方法,其特征在于,所述方法包括:
获取用户输入的搜索内容;
确定数据库中的M条数据分别对应的匹配度,每条数据对应的匹配度用于度量所述搜索内容与所述数据之间的相关性,其中,M为正整数;
根据所述M个匹配度的数值分布,利用所述M个匹配度中的P个匹配度构建目标二叉堆,其中,P为小于M的正整数,所述P个匹配度满足针对所述目标二叉堆的构建条件;
根据所述目标二叉堆,输出所述数据库中与所述搜索内容相匹配的数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述M个匹配度的数值分布,利用所述M个匹配度中的P个匹配度构建目标二叉堆,包括:
对所述M个匹配度进行切分,得到n个切片,每个切片包括多个匹配度,其中,n为正整数;
根据所述n个切片中每个切片包括的多个匹配度的数值分布,利用所述M个匹配度中的P个匹配度构建目标二叉堆。
3.根据权利要求2所述的方法,其特征在于,所述根据所述n个切片中每个切片包括的多个匹配度的数值分布,利用所述M个匹配度中的P个匹配度构建目标二叉堆,包括:
确定每个切片中前k个数值最大的匹配度,其中,k为正整数;
根据所述每个切片中前(k-1)个数值最大的匹配度,构建初始二叉堆,所述初始二叉堆包括的所有节点中位于根节点的匹配度的值最小;
比较每个切片中第k个数值最大的匹配度的值与所述初始二叉堆中位于所述根节点的匹配度的值;
当切片中第k个数值最大的匹配度的值大于位于所述根节点的匹配度的值时,将所述切片中剩余的匹配度插入所述初始二叉堆。
4.根据权利要求3所述的方法,其特征在于,所述确定每个切片中前k个数值最大的匹配度,包括:
利用向量计算单元对每个切片包括的多个匹配度进行向量排序,得到每个切片中前k个数值最大的匹配度。
5.根据权利要求4所述的方法,其特征在于,所述向量计算单元连接缓存,所述缓存用于存储每个切片包括的多个匹配度;
所述利用向量计算单元对每个切片包括的多个匹配度进行向量排序,包括:
利用所述向量计算单元对所述缓存中的每个切片包括的多个匹配度进行向量排序。
6.根据权利要求3至5任一项所述的方法,其特征在于,所述初始二叉堆以及所述目标二叉堆是利用通用计算单元完成构建的。
7.根据权利要求3至6任一项所述的方法,其特征在于,所述M个匹配度基于切片长度L进行切分,L为正整数,所述方法还包括:
构建耗时计算函数,所述耗时计算函数中的变量包括所述L以及所述k;
求解所述耗时计算函数中的变量的最优值,得到所述L以及所述k的取值。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述数据库中的数据包括文本、图片、音频、视频中的一种或者多种。
9.一种计算设备,其特征在于,所述计算设备包括通用计算单元、向量计算单元、存储器,所述通用计算单元、所述向量计算单元、所述存储器通过总线连接;
所述存储器,用于存储数据库中的M条数据分别对应的匹配度,每条数据对应的匹配度用于度量用户输入的搜索内容与所述数据之间的相关性,其中,M为正整数;
所述通用计算单元,用于对所述存储器中的M个匹配度进行切分,得到n个切片,其中,n为正整数;
所述向量计算单元,用于确定所述n个切片中每个切片包括的多个匹配度的数值分布;
所述通用计算单元,用于根据所述n个切片中每个切片包括的多个匹配度的数值分布,利用所述M个匹配度中的P个匹配度构建目标二叉堆,所述P个匹配度满足针对所述目标二叉堆的构建条件,所述目标二叉堆用于确定所述数据库中与所述搜索内容相匹配的数据。
10.根据权利要求9所述的计算设备,其特征在于,所述存储器包括内存以及缓存;
所述内存,用于存储所述M个匹配度;
所述缓存,用于存储所述每个切片包括的多个匹配度;
所述向量计算单元,具体用于对所述缓存中的所述每个切片包括的多个匹配度进行向量排序,得到每个切片包括的多个匹配度的数值分布。
11.根据权利要求10所述的计算设备,其特征在于,所述向量计算单元,具体用于对所述缓存中的所述每个切片包括的多个匹配度进行向量排序,得到每个切片中前k个数值最大的匹配度。
12.根据权利要求11所述的计算设备,其特征在于,所述通用计算单元,具体用于:
根据所述每个切片中前(k-1)个数值最大的匹配度,构建初始二叉堆,所述初始二叉堆包括的所有节点中位于根节点的匹配度的值最小;
比较每个切片中第k个数值最大的匹配度的值与所述初始二叉堆中位于所述根节点的匹配度的值;
当切片中第k个数值最大的匹配度的值大于位于所述根节点的匹配度的值时,将所述切片中剩余的匹配度插入所述初始二叉堆。
13.根据权利要求9至12任一项所述的计算设备,其特征在于,所述通用计算单元包括中央处理器CPU,所述向量计算单元包括加速处理器APU、大脑处理器BPU、深度学习处理器DPU、数据处理单元DPU、图形处理器GPU、神经网络处理器NPU、张量处理器TPU、矢量处理器VPU中的一种或者多种。
14.根据权利要求9至13任一项所述的计算设备,其特征在于,所述通用计算单元与所述向量计算单元位于同一芯片。
15.一种加速卡,其特征在于,所述加速卡包括向量处理单元和通用处理单元,所述向量处理单元和所述通用处理单元用于实现如权利要求9-14中的向量处理单元和通用处理单元实现的功能。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在至少一个计算设备上运行时,使得所述至少一个计算设备执行如权利要求1至8任一项所述的方法。
CN202310172029.7A 2023-02-21 2023-02-21 数据搜索方法、装置及相关设备 Pending CN118535611A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310172029.7A CN118535611A (zh) 2023-02-21 2023-02-21 数据搜索方法、装置及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310172029.7A CN118535611A (zh) 2023-02-21 2023-02-21 数据搜索方法、装置及相关设备

Publications (1)

Publication Number Publication Date
CN118535611A true CN118535611A (zh) 2024-08-23

Family

ID=92381340

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310172029.7A Pending CN118535611A (zh) 2023-02-21 2023-02-21 数据搜索方法、装置及相关设备

Country Status (1)

Country Link
CN (1) CN118535611A (zh)

Similar Documents

Publication Publication Date Title
CN108804641B (zh) 一种文本相似度的计算方法、装置、设备和存储介质
US10452691B2 (en) Method and apparatus for generating search results using inverted index
US11526799B2 (en) Identification and application of hyperparameters for machine learning
US10579661B2 (en) System and method for machine learning and classifying data
US9747305B2 (en) Image search device, image search method, program, and computer-readable storage medium
US10482146B2 (en) Systems and methods for automatic customization of content filtering
US9940366B2 (en) Image search device, image search method, program, and computer-readable storage medium
CN111325245B (zh) 重复图像识别方法、装置、电子设备及计算机可读存储介质
CN109558533B (zh) 一种基于多重聚类的个性化内容推荐方法及装置
US10579616B2 (en) Data search system, data search method, and program product
CN110825894A (zh) 数据索引建立、数据检索方法、装置、设备和存储介质
CN111143597A (zh) 图像检索方法、终端及存储装置
US20180276244A1 (en) Method and system for searching for similar images that is nearly independent of the scale of the collection of images
WO2022007596A1 (zh) 图像检索系统、方法和装置
CN110110119B (zh) 图像检索的方法、装置及计算机可读存储介质
CN110209895B (zh) 向量检索方法、装置和设备
US20230259761A1 (en) Transfer learning system and method for deep neural network
US20220066988A1 (en) Hash suppression
CN118535611A (zh) 数据搜索方法、装置及相关设备
CN110852078A (zh) 生成标题的方法和装置
CN109783816B (zh) 短文本聚类方法及终端设备
CN111090743B (zh) 一种基于词嵌入和多值形式概念分析的论文推荐方法及装置
CN111930883A (zh) 一种文本聚类方法、装置、电子设备和计算机存储介质
WO2020237511A1 (zh) 相似性搜索方法、装置、服务器及存储介质
CN107622129B (zh) 一种知识库的组织方法及装置、计算机存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination