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

面向大规模高维数据的索引生成及相似性搜索方法和装置

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


面向大规模高维数据的索引生成及相似性搜索方法和装置

技术领域

本发明涉及数据处理的技术领域,具体而言,涉及一种面向大规模高维数据的索引生成及相似性搜索方法和装置。

背景技术

现今,高维数据广泛存在,常具有高达TB级别的数据量以及高达几千的数据特征维度。从这样的大规模数据中提取出有价值的信息需要复杂的数据分析方法和技术。如何高效地从这种纷繁复杂的数据中提取有效信息仍是一项饱含挑战性的任务。由此战胜可扩展数据科学这一研究领域。相似性搜索(SimilaritySearch)是上述领域中的一项关键技术。相似性搜索主要通过寻找数据集中与所查询数据最近邻的数据点,进而有效提高数据处理的速度,可应用到包括缺失数据补全、信息找回、信息分类以及离群值检测等任务。

对于相似性检索问题,早起多直接采用进行暴力搜索(Brute Force)的方法,但由于计算查询向量与其余所有点的相似性产生了的资源消耗过高的问题。因此,后续提出了多种通过牺牲一定精确性换取计算效率的近似方法。上述近似方法按照所提出的解的性质可划分为两类,不对结果提供任何质量保证的近似解为

针对上述的问题,目前尚未提出有效的解决方案。

发明内容

本发明实施例提供了一种面向大规模高维数据的索引生成及相似性搜索方法和装置,以至少解决设备进程未被监控导致设备运行异常无法及时解决的技术问题。

根据本发明实施例的一个方面,提供了一种面向大规模高维数据的索引生成及相似性搜索方法,包括:利用现有数据序列生成索引树,并将上述索引树的信息写入到相关文件;在接收到给定查询的情况下,遍历索引树得到与上述给定查询相邻的多个候选类别;利用多个线程并行处理多个候选类别,得到与上述给定查询最接近的目标结果。

优选地,上述利用现有数据序列生成索引树,包括:利用分层树结构对现有数据序列进行划分,形成多个叶;在分层树结构的各个叶中并行构建图结构,生成索引树。

优选地,上述利用分层树结构对现有数据序列进行划分,形成多个叶,包括:利用分层树结构按批从磁盘中将数据序列读入内存,并将已缓存在内存中的数据插入到树结构中;利用线程遍历二叉索引树,确定数据序列对应的叶。利用分层树结构对现有数据序列进行划分,形成多个叶。

优选地,上述在分层树结构的各个叶中并行构建图结构,生成索引树,包括:在主协调器线程初始化多个叶协调器线程的情况下,利用每个叶协调器线程读取叶数据,并将叶数据插入到图结构中;利用全部叶各自的图结构生成索引树。

优选地,上述将上述索引树的信息写入到相关文件,包括:将上述索引树的信息写入到HTree、LRDFile和LSDFile文件中,其中,HTree文件用于存储已生成树结构,LRDFile用于存储原始数据序列,LSDFile用于存储摘要信息。

优选地,上述遍历索引树得到与上述给定查询相邻的多个候选类别,包括:遍历上述索引树,查找与上述给定查询相似度满足预设条件的多个候选叶。

优选地,上述利用多个线程并行处理多个候选类别,得到与上述给定查询最接近的目标结果,包括:利用多个线程对多个叶并行进行束搜索,得到与上述给定查询距离最近的目标结果。

根据本发明实施例的另一方面,还提供了一种面向大规模高维数据的索引生成及相似性搜索装置,包括:索引生成模块,用于利用现有数据序列生成索引树,并将上述索引树的信息写入到相关文件;查询回复模块,用于在接收到给定查询的情况下,遍历索引树得到与上述给定查询相邻的多个候选类别;利用多个线程并行处理多个候选类别,得到与上述给定查询最接近的目标结果。

根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述面向大规模高维数据的索引生成及相似性搜索方法。

根据本发明实施例的又一方面,还提供了一种电子设备,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为通过所述计算机程序执行上述的面向大规模高维数据的索引生成及相似性搜索方法。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种可选的面向大规模高维数据的索引生成及相似性搜索方法的流程示意图;

图2是根据本发明实施例的一种可选的面向大规模高维数据的索引生成及相似性搜索方法的流程示意图;

图3是根据本发明实施例的HNSW示意图;

图4是根据本发明实施例的EAPCA索引生成流程示意图;

图5是根据本发明实施例的EAPCA查询回复流程示意图;

图6是根据本发明实施例的一种可选的面向大规模高维数据的索引生成及相似性搜索装置的结构示意图;

图7是根据本发明实施例的一种可选的电子设备的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

根据本发明实施例的一个方面,提供了一种面向大规模高维数据的索引生成及相似性搜索方法,该面向大规模高维数据的索引生成及相似性搜索方法广泛应用于大规模高维数据的索引生成和相似性搜索。

作为一种可选的实施方式,如图1所示,上述面向大规模高维数据的索引生成及相似性搜索方法包括:

S102,利用现有数据序列生成索引树,并将索引树的信息写入到相关文件;

S104,在接收到给定查询的情况下,遍历索引树得到与给定查询相邻的多个候选类别;

S106,利用多个线程并行处理多个候选类别,得到与给定查询最接近的目标结果。

作为一种可选的实施方式,利用现有数据序列生成索引树,包括:利用分层树结构对现有数据序列进行划分,形成多个叶;在分层树结构的各个叶中并行构建图结构,生成索引树。

作为一种可选的实施方式,利用分层树结构对现有数据序列进行划分,形成多个叶,包括:利用分层树结构按批从磁盘中将数据序列读入内存,并将已缓存在内存中的数据插入到树结构中;利用线程遍历二叉索引树,确定数据序列对应的叶。利用分层树结构对现有数据序列进行划分,形成多个叶。

作为一种可选的实施方式,在分层树结构的各个叶中并行构建图结构,生成索引树,包括:在主协调器线程初始化多个叶协调器线程的情况下,利用每个叶协调器线程读取叶数据,并将叶数据插入到图结构中;利用全部叶各自的图结构生成索引树。

作为一种可选的实施方式,将索引树的信息写入到相关文件,包括:将索引树的信息写入到HTree、LRDFile和LSDFile文件中,其中,HTree文件用于存储已生成树结构,LRDFile用于存储原始数据序列,LSDFile用于存储摘要信息。

作为一种可选的实施方式,遍历索引树得到与给定查询相邻的多个候选类别,包括:遍历索引树,查找与给定查询相似度满足预设条件的多个候选叶。

作为一种可选的实施方式,利用多个线程并行处理多个候选类别,得到与给定查询最接近的目标结果,包括:利用多个线程对多个叶并行进行束搜索,得到与给定查询距离最近的目标结果。

具体的,面向大规模高维数据的索引生成及相似性搜索方法为了实现在构建索引以及内存中寻求

步骤一:生成索引树。利用索引生成将现有数据序列读入;

步骤二:写入索引树到相关文件中。将生成后的索引树的相关信息写入到相关文件中,相关文件不限于不包括HTree、LRDFile和LSDFile三个文件;

步骤三:获取给定查询。

步骤四:遍历索引树得到与给定查询最近邻的

步骤五:多线程并行处理候选类别,将与给定查询最近邻的结果作为目标的类别。

索引生成及相似性搜索方法不限于主要包含两个部分,索引生成和查询回复。索引生成具体包括以下部分:

第一步,将现有数据集使用DLS(deep level search,分层树结构)进行划分,形成多个簇,也就是叶。现有数据序列

第二步,在上述第一步中的各个叶中并行构建图结构。并行地在每个叶中构建出一个HNSW分层可导航小世界图。首先,主协调器线程初始化

更具体的,介绍DLS树的生成过程。DLS树中的每个节点

叶节点与文件位置

在水平划分H-split中,

DLS树中的索引生成方法如图3所示,索引生成的工作流程包含读取、插入和刷新等三个阶段。其中,使用一个线程作为协调器,使用多个InsertWorker线程作为工作者,共同基于一种称为DBuffer的双缓冲方案处理原始数据。DLS利用DBuffer将从磁盘读取原始数据的

在读取(Read)阶段,协调器将数据集分批加载到内存中,从原始文件中读取一批数据到DBuffer的第一部分中。当第一部分的DBuffer存满后,将放弃第一部分的DBuffer,并将后续到来的数据存储到第二部分DBuffer前置工作

在插入(Insert)阶段中,

在刷新(Flush)阶段中,HBuffer中的数据被刷新到磁盘。此过程通过将其中一个

在索引写入阶段(IndexWriting)中,并行计算内部节点(叶)的

算法1,Coordinator中运行的索引生成方法的伪代码如下:

输入:数据集大小

初始化工作者集Workers;

定义触发器

定义

从文件中读取数据到

定义

对于

每一个工作者集中的Worker执行一个插入工作

定义

定义

从文件中读取数据到

定义

定义

协调器

等待左右的插入工作者

算法2,新数据插入工作者

输入:标签

根节点

触发器

整数

初始化浮点数

如果

定义

定义

执行插入序列

定义

上的插入工作者/>

如果

否则:

执行刷新工作者的流程FlushWorker(算法5);

定义

算法3,插入数据到节点

输入:

获取

释放

获取

使用

如果节点

使用当前最佳的划分策略作为节点

依据划分策略生成

如果触发了刷新过程,则提取内存和磁盘中的所有数据序列;

分配数据序列到两个子节点中,并且更新节点对应的摘要信息;

释放

算法4,刷新协调器

输入:标签

初始化整数

初始化整数

定义

对于工作者集

定义

执行

如果

定义为/>

在/>

算法5,刷新工作者

输入:

一个工作节点

如果

计算

定义

在/>

定义

如果

在/>

查询回复具体包括以下部分:

第一步,遍历DLS树,找到

具体的,对于数据序列

具体的,

(1)

其中,

第二步,在图结构上,对第一步的

在本申请实施例中,采用两阶段缓存的形式从磁盘数据集中读取数据,在进行索引生成时,采用分层可导航小世界HNSW,同时使用协调器Coordinator和工作者Worker节点,实现算法的并行操作,结合使用了现有的基于树和基于图的方法,整合两方面的优点,使用束搜索的方法遍历索引树,实现并行运算并且加快搜索过程。

在本申请实施例中,使用两阶段缓存的方法可以使得DLS树的形成过程更高效。在索引创建开始时分配大型内存缓冲区(HBuffer),并在插入所有系列后释放它,比每个叶子预先分配自己的内存缓冲区并在分裂时释放它速度更快。特别是在索引生成开始时频繁发生分裂的情况下,这种设计减少了系统调用次数以及内存管理问题的发生次数(当程序发出大量内存清理操作时,内存可以被进程保留以供以后重用)。采用分层处理的方法可以大幅加快模型的运算速度,并且避免在大型数据集上遍历全部数据点而产生过多的资源消耗。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

根据本发明实施例的另一个方面,还提供了一种用于实施上述面向大规模高维数据的索引生成及相似性搜索方法的面向大规模高维数据的索引生成及相似性搜索装置。如图6所示,该装置包括:

索引生成模块602,用于利用现有数据序列生成索引树,并将索引树的信息写入到相关文件;

查询回复模块604,用于在接收到给定查询的情况下,遍历索引树得到与给定查询相邻的多个候选类别;利用多个线程并行处理多个候选类别,得到与给定查询最接近的目标结果。

可选地,上述索引生成模块602利用现有数据序列生成索引树,包括:利用分层树结构对现有数据序列进行划分,形成多个叶;在分层树结构的各个叶中并行构建图结构,生成索引树。

可选地,上述索引生成模块602利用分层树结构对现有数据序列进行划分,形成多个叶,包括:利用分层树结构按批从磁盘中将数据序列读入内存,并将已缓存在内存中的数据插入到树结构中;利用线程遍历二叉索引树,确定数据序列对应的叶。利用分层树结构对现有数据序列进行划分,形成多个叶。

可选地,上述索引生成模块602在分层树结构的各个叶中并行构建图结构,生成索引树,包括:在主协调器线程初始化多个叶协调器线程的情况下,利用每个叶协调器线程读取叶数据,并将叶数据插入到图结构中;利用全部叶各自的图结构生成索引树。

可选地,上述索引生成模块602将索引树的信息写入到相关文件,包括:将索引树的信息写入到HTree、LRDFile和LSDFile文件中,其中,HTree文件用于存储已生成树结构,LRDFile用于存储原始数据序列,LSDFile用于存储摘要信息。

可选地,上述查询回复模块604遍历索引树得到与给定查询相邻的多个候选类别,包括:遍历索引树,查找与给定查询相似度满足预设条件的多个候选叶。

可选地,上述查询回复模块604利用多个线程并行处理多个候选类别,得到与给定查询最接近的目标结果,包括:利用多个线程对多个叶并行进行束搜索,得到与给定查询距离最近的目标结果。

在本申请实施例中,使用两阶段缓存的方法可以使得DLS树的形成过程更高效。在索引创建开始时分配大型内存缓冲区(HBuffer),并在插入所有系列后释放它,比每个叶子预先分配自己的内存缓冲区并在分裂时释放它速度更快。特别是在索引生成开始时频繁发生分裂的情况下,这种设计减少了系统调用次数以及内存管理问题的发生次数(当程序发出大量内存清理操作时,内存可以被进程保留以供以后重用)。采用分层处理的方法可以大幅加快模型的运算速度,并且避免在大型数据集上遍历全部数据点而产生过多的资源消耗。

根据本发明实施例的又一个方面,还提供了一种用于实施上述面向大规模高维数据的索引生成及相似性搜索方法的电子设备,该电子设备可以是终端设备或服务器。如图7所示,该电子设备包括存储器702和处理器704,该存储器702中存储有计算机程序,该处理器704被设置为通过计算机程序执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述电子设备可以位于计算机网络的多个网络设备中的至少一个网络设备。

可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:

S1,利用现有数据序列生成索引树,并将索引树的信息写入到相关文件;

S2,在接收到给定查询的情况下,遍历索引树得到与给定查询相邻的多个候选类别;

S3,利用多个线程并行处理多个候选类别,得到与给定查询最接近的目标结果。

可选地,本领域普通技术人员可以理解,图7所示的结构仅为示意,电子设备也可以是任意终端设备。图7其并不对上述电子设备的结构造成限定。例如,电子设备还可包括比图7中所示更多或者更少的组件(如网络接口等),或者具有与图7所示不同的配置。

其中,存储器702可用于存储软件程序以及模块,如本发明实施例中的智能设备的监控方法和装置对应的程序指令/模块,处理器704通过运行存储在存储器702内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的面向大规模高维数据的索引生成及相似性搜索方法。存储器702可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器702可进一步包括相对于处理器704远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。作为一种示例,如图7所示,上述存储器702中可以但不限于包括上述面向大规模高维数据的索引生成及相似性搜索装置中的索引生成模块602和查询回复模块604。此外,还可以包括但不限于上述面向大规模高维数据的索引生成及相似性搜索装置中的其他模块单元,本示例中不再赘述。

可选地,上述的传输装置706用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置706包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置706为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。

此外,上述电子设备还包括:显示器708和连接总线710,用于连接上述电子设备中的各个模块部件。

在其他实施例中,上述终端设备或者服务器可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(P2P,Peer To Peer)网络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。

根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述面向大规模高维数据的索引生成及相似性搜索方面的各种可选实现方式中提供的方法。其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述计算机可读的存储介质可以被设置为存储用于执行以下步骤的计算机程序:

S1,利用现有数据序列生成索引树,并将索引树的信息写入到相关文件;

S2,在接收到给定查询的情况下,遍历索引树得到与给定查询相邻的多个候选类别;

S3,利用多个线程并行处理多个候选类别,得到与给定查询最接近的目标结果。

可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

相关技术
  • 搜索引擎中网站数据的更新方法、装置和搜索引擎
  • 生成索引信息的数据库的存档方法及装置、包含索引信息的存档的数据库的搜索方法及装置
  • 面向大规模高维空间数据的分布式索引方法
技术分类

06120116504605