CN114817657A - 待检索数据处理方法、数据检索方法、电子设备及介质 - Google Patents

待检索数据处理方法、数据检索方法、电子设备及介质 Download PDF

Info

Publication number
CN114817657A
CN114817657A CN202210502213.9A CN202210502213A CN114817657A CN 114817657 A CN114817657 A CN 114817657A CN 202210502213 A CN202210502213 A CN 202210502213A CN 114817657 A CN114817657 A CN 114817657A
Authority
CN
China
Prior art keywords
node
data
vector
nodes
retrieved
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
CN202210502213.9A
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.)
Shanghai Xuyu Intelligent Technology Co ltd
Original Assignee
Shanghai Xuyu Intelligent Technology 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 Shanghai Xuyu Intelligent Technology Co ltd filed Critical Shanghai Xuyu Intelligent Technology Co ltd
Priority to CN202210502213.9A priority Critical patent/CN114817657A/zh
Publication of CN114817657A publication Critical patent/CN114817657A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/22Matching criteria, e.g. proximity measures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Computation (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及数据查询领域,尤其涉及一种待检索数据处理方法、数据检索方法、电子设备及介质。在本申请的方法中通过将数据之间相似度满足一定条件的数据存储在连续的存储空间,例如将数据之间相似度满足一定条件的数据存放在硬盘中连续的存储空间,以使在数据检索时,能够一次性读取出这些数据,进而减少数据搜索过程中,访问存储空间的次数,以提高数据检索的效率,减少用户等待时长,提高用户体验。

Description

待检索数据处理方法、数据检索方法、电子设备及介质
技术领域
本申请涉及数据查询领域,尤其涉及一种待检索数据处理方法、数据检索方法、电子设备及介质。
背景技术
信息检索技术广泛用于图像检索、机器学习、数据挖掘等领域,其通过在数据库中查找与查询数据相同或相似的数据实现,具体可为将数据抽象为高维度的向量(例如将图像数据抽象为256维的向量),然后以不同的数据向量在向量空间的距离表示数据之间的相似度,再将数据向量之间的距离满足条件的K个数据作为搜索结果输出,这种方式也称为最近邻向量搜索(Nearest Neighbor Search,NNS)。在大规模的数据检索场景中往往使用近似最近邻搜索(Approximate Nearest Neighbor Search,ANNS)算法,即在可接受的精确度损失的情况下,快速返回与目标数据的特征向量最接近的前k个结果。
目前,ANNS算法有多种实现方法,其中,基于近似近邻图的索引,例如层次导航小世界图(hierarchical navigable small world graphs,HNSW)等算法相对于其他ANNS算法更能够快速且准确地返回搜索结果,在众多索引实现方式中脱引而出。
发明内容
为了进一步提高基于HNSW方法进行数据搜索的搜索效率,减少用户等待时长,提高用户体验,本申请提供一种待检索数据处理方法、数据检索方法、电子设备及介质。在本申请的方法中通过将数据之间相似度满足一定条件的数据存储在连续的存储空间,例如将数据之间相似度满足一定条件的数据存放在硬盘中连续的存储空间,以使在数据检索时,能够一次性读取出这些数据,进而减少数据搜索过程中,访问存储空间的次数,以提高数据检索的效率,减少用户等待时长,提高用户体验。
下面对本申请的技术方案展开介绍。
第一方面,本申请实施例提供了一种待检索数据的处理方法,用于电子设备,包括:
获取待检索数据;基于待检索数据之间的数据相似度,构建待检索数据的图索引结构,其中,图索引结构包括多个节点,多个节点中至少一个节点具有至少一个邻居节点,至少一个节点与至少一个节点对应的至少一个邻居节点之间具有边,边用于表征至少一个节点与至少一个节点的至少一个邻居节点之间的数据相似度满足第一预设条件;基于图索引结构,确定多个节点中每个节点的邻居节点的数量,按照每个节点的邻居节点的数量对多个节点排序;以及按照排序结果,将每个节点的信息存储至第一存储空间连续的存储位置,其中,每个节点的信息包括每个节点对应的数据以及每个节点的邻居节点的标识。
在一种可能的实现方式中,上述待检索数据包括但不限于视频数据、文本数据、图像数据等。
基于待检索数据之间的数据相似度,构建待检索数据的图索引结构,该图索引结构中,每个节点对应一个待检索数据,至少一个节点有其对应的至少一个邻居节点,并且该节点与其邻居节点之间具有边,该边用于表征该节点与该节点的邻居节点之间的数据相似度满足第一预设条件。通过将待检索数据进行上述结构化处理,便于待检索数据的存储以及后续基于图索引结构对待检索数据进行检索,提高数据检索的效率。
可以理解,邻居节点较多的节点之间,更有可能互成邻居节点,因此在访问其中一个节点时,另一个节点作为邻居节点被访问到的可能性也越大。例如下图4a或图4b中,节点A的邻居节点为4个(节点B、节点J、节点K以及节点M),节点B的邻居节点为5个(节点C、节点G、节点I、节点J、节点A),节点A与节点B互成邻居节点,那么在访问节点A时,节点B也会作为邻居节点被访问。
而每个节点的邻居节点的数量称为该节点的度,也即度越大的节点之间,更有可能互成邻居节点,在访问其中一个节点时,另一节点也更有可能被访问。
因此,可按照每个节点的度(邻居节点的数量)的大小,对各节点排序,然后按照度的大小,将各节点依次存储至硬盘连续的存储空间。
通过这样的方式,当针对某个查询数据进行检索时,可一次性将图索引结构中某个节点(例如下文中的起始节点)以及与该节点相似度满足第一预设条件的节点对应的数据均读取出来,可减少电子设备根据起始节点对应的邻居节点的地址访问邻居节点的次数,提高数据检索的效率,进而减少用户等待数据检索结果的时长,提高用户体验。
在一些可能的实现方式中,上述电子设备可以是手机、平板电脑等便携式设备,本申请对此不作限制。
结合第一方面,在第一方面的一种可能的实现方式中,图索引结构的每个节点的数据为待检索数据的向量,至少一个节点与至少一个节点的至少一个邻居节点之间的数据相似度满足第一预设条件,包括:至少一个节点的向量与至少一个节点的至少一个邻居节点的向量的向量欧式距离小于第一距离阈值。
也即上述各节点对应的可以是具体的待检索数据,也可以是该待检索数据经过向量化得到的向量。为便于检索,上述各节点对应的为待检索数据经过向量化的向量。对应地,如果各节点对应的是该待检索数据对应的向量,则上述数据相似度满足第一预设条件指的是各节点与该节点的邻居节点之间的向量欧式距离小于第一距离阈值。
在一些可能的实现方式中,上述数据相似度满足第一预设条件还可以指各节点与该节点的邻居节点之间的向量余弦距离大于某距离阈值。本申请对此不作限制。
通过将待检索数据向量化,比较待检索数据对应的向量之间的距离,而非直接比较待检索数据的相似度,能够提高构建图索引结构的效率。
结合第一方面,在第一方面的一种可能的实现方式中,待检索数据的类型包括文本数据、图像数据、音频数据或视频数据中的至少一种。
第二方面,本申请实施例提供了一种数据检索方法,用于电子设备,该方法包括:获取查询数据;基于待检索数据,针对查询数据进行数据检索,其中,待检索数据构成图索引结构,图索引结构包括多个节点,多个节点中至少一个节点具有至少一个邻居节点,至少一个节点与至少一个节点对应的至少一个邻居节点之间具有边,边用于表征至少一个节点与至少一个节点的至少一个邻居节点之间的数据相似度满足第一预设条件;以及每个节点的信息存储至第一存储空间连续的存储位置,其中,每个节点的信息包括每个节点对应的数据以及每个节点的邻居节点的标识;将预设数量个与查询数据的数据相似度满足第二预设条件的待检索数据作为数据检索的检索结果。
其中,所述待检索数据构成所述图索引结构指的是,根据待检索数据之间的数据相似度,对待检索数据进行结构化处理,得到便于后续存储以及检索的结构。其中,如上所言,该图索引结构中每个节点对应一个待检索数据,至少一个节点有其对应的至少一个邻居节点,并且该节点与其邻居节点之间具有边,该边用于表征该节点与该节点的邻居节点之间的数据相似度满足第一预设条件。
同样如上所言,邻居节点较多的节点之间,更有可能互成邻居节点,因此在访问其中一个节点时,另一个节点作为邻居节点被访问到的可能性也越大。例如下图4a或图4b中,节点A的邻居节点为4个(节点B、节点J、节点K以及节点M),节点B的邻居节点为5个(节点C、节点G、节点I、节点J、节点A),节点A与节点B互成邻居节点,那么在访问节点A时,节点B也会作为邻居节点被访问。
而每个节点的邻居节点的数量称为该节点的度,也即度越大的节点之间,更有可能互成邻居节点,在访问其中一个节点时,另一节点也更有可能被访问。
因此,可按照每个节点的度(邻居节点的数量)的大小,对各节点排序,然后按照度的大小,将各节点依次存储至硬盘连续的存储空间。
通过这样的方式,当针对上述查询数据进行检索时,可一次性将图索引结构中某个节点(例如下文中的起始节点)以及与该节点相似度满足第一预设条件的节点对应的数据均读取出来,可减少电子设备根据起始节点对应的邻居节点的地址访问邻居节点的次数,提高数据检索的效率,进而减少用户等待数据检索结果的时长,提高用户体验。
进一步地,由于与查询数据相似度满足第二预设条件的待检索数据可能会很多,如果将其全部进行显示,反而不利用用户选择,因此仅对上述与查询数据相似度满足第二预设条件的待检索数据中的部分待检索数据进行显示,即仅显示预设数量个与查询数据相似度满足第二预设条件的待检索数据,以便于用户从中选择满意的结果。其中,预设数量个为经验值或实验值,其取值例如可为10个。
结合第二方面,在第二方面的一种可能的实现方式中,图索引结构的每个节点的数据为待检索数据的向量,至少一个节点与至少一个节点的至少一个邻居节点之间的数据相似度满足第一预设条件,包括:至少一个节点的向量与至少一个节点的至少一个邻居节点的向量的向量欧式距离小于第一距离阈值。
也即上述各节点对应的可以是具体的待检索数据,也可以是该待检索数据经过向量化得到的向量。为便于检索,上述各节点对应的为待检索数据经过向量化的向量。对应地,如果各节点对应的是该待检索数据对应的向量,则上述数据相似度满足第一预设条件指的是各节点与该节点的邻居节点之间的向量欧式距离小于第一距离阈值。
在一些可能的实现方式中,上述数据相似度满足第一预设条件还可以指各节点与该节点的邻居节点之间的向量余弦距离大于某距离阈值。本申请对此不作限制。
通过将待检索数据向量化,比较待检索数据对应的向量之间的距离,而非直接比较待检索数据的相似度,能够提高构建图索引结构的效率。
结合第二方面,在第二方面的一种可能的实现方式中,基于待检索数据,针对查询数据进行数据检索,包括:遍历图索引结构的M个节点,从图索引结构的M个节点中,确定预设数量个与查询数据的向量的向量欧式距离小于第二距离阈值的向量作为结果向量,其中,M为正整数。也即电子设备可以遍历图索引结构中的全部节点,以得到完整的检索结果,也可以为了快速返回检索结果,仅遍历图索引结构中的部分节点,本申请对此不作限制。
其中,在一些可能的实现方式中,上述第二预设条件指的是,预设数量个与查询数据的向量的向量欧式距离小于第二距离阈值的向量。也即将查询数据与待检索数据均进行向量化得到它们各自对应的向量,然后通过判断向量之间的距离是否小于第二距离阈值,确定该待检索数据是否与查询数据满足上述第二预设条件。这样做的目的是为了提高数据检索的效率。
并且在遍历图索引结构的M个节点的过程中,基于图索引结构执行以下操作:确定第N次与查询数据的向量进行比较的图索引结构的起始节点,从起始节点在第一存储空间的存储地址开始,读取第一预设大小数据量的多个节点的向量以及与多个节点中各节点对应的邻居节点的信息作为第一节点集,并将第一节点集存储至第二存储空间;根据第一节点集中多个节点的标识,以及根据起始节点对应的邻居节点的存储地址,从第一存储空间读取不在第一节点集的起始节点的邻居节点的向量至第二存储空间;从第二存储空间的多个节点中,确定与查询数据的向量的向量欧式距离最近的向量,作为第N+1次与查询数据的向量进行比较的起始节点;将每次比较过程中与查询数据的向量的向量欧式距离小于第二距离阈值的向量作为结果向量。
也即针对上述查询数据进行检索时,首先与该查询数据的向量进行比较是上述图索引结构中的起始节点。其中,起始节点可以是一个也可以是多个,本申请对此不作限制。并且起始节点的选择可以是随机的,也可以是在构建图索引结构时确定好的。而确定起始节点的方式,可以是研发人员根据某一节点对应的邻居节点的数量,将邻居节点数量最多的节点作为起始节点,也可以是其他方式,本申请对此也不作限制。
与起始节点比较后,电子设备即将起始节点以及该起始节点之后连续第一预设大小数据量的多个节点的向量,以及这些节点中各节点对应的邻居节点的信息一并读取出来,作为第一节点集存储至第二存储空间。可以理解,由于邻居节点较多的节点之间,更有可能互成邻居节点,因此在访问其中一个节点时,另一个节点作为邻居节点被访问到的可能性也越大。故此时第二存储空间中已经存在部分该起始节点的邻居节点对应的向量了。
此后,电子设备仅需根据第一节点集中多个节点的标识,以及起始节点对应的邻居节点的存储地址,从第一存储空间读取不在第一节点集的起始节点的邻居节点的向量至第二存储空间即可。这样做有效减少了电子设备访问第一存储空间的次数,提高了数据检索的效率,减少了用户等待检索结果的时长,提高了用户体验。
最后从第二存储空间中的多个节点中,确定与查询数据的向量的向量欧式距离最近的向量,作为下一次与查询数据进行比较的起始节点。
然后经过数次这样的操作,即可得到M个节点对应的向量中,与查询数据的向量的向量欧式距离小于第二距离阈值的结果向量。然后可以将结果向量作为检索结果显示给用户。
结合第二方面,在第二方面的一种可能的实现方式中,第一预设大小数据量根据第二存储空间的可用空间确定。也即,在第二存储空间足够大的情况下,可以尽可能将足够多的彼此之间相似度满足一定条件的待检索数据读取至第二存储空间,以减少后续访问第一存储空间的次数,提高数据检索的效率。
结合第二方面,在第二方面的一种可能的实现方式中,将预设数量个与查询数据的数据相似度满足第二预设条件的待检索数据作为数据检索的检索结果,包括:将预设数量个与结果向量对应的待检索数据作为检索结果。可以理解,由于向量是一种高维、抽象的数据表现形式,如果直接将结果向量作为检索结果显示,不利用用户理解,因此需要将结果向量还原为对应的待检索数据,然后将这些与结果向量对应的待检索数据展示给用户,以便用户理解,提高用户体验。
第三方面,本申请实施例还提供了一种电子设备,该电子设备包括存储器,存储有计算机程序指令;处理器,处理器和存储器耦合,当存储器存储的计算机程序指令被处理器执行时使得电子设备实现上述第一方面和/或第二方面中任一项的方法。
也即,上述第一方面与第二方面的方法均可在同一电子设备上实现,例如均可在手机上实现。具体地,电子设备可通过上述方法,为其存储的待检索数据构建便于后续存储以及检索的待检索数据的图索引结构,然后基于该图索引结构,当电子设备接收到用户输入的某一个查询数据,并针对上述查询数据进行检索时,可一次性将图索引结构中某个节点(例如下文中的起始节点)以及与该节点相似度满足第一预设条件的节点对应的数据均读取出来,可减少电子设备根据起始节点对应的邻居节点的地址访问邻居节点的次数,提高数据检索的效率,进而减少用户等待数据检索结果的时长,提高用户体验。
第四方面,本申请实施例提供了一种计算机可读介质,计算机可读介质存储有计算机程序,其特征在于,计算机程序被处理器执行时实现上述第一方面和/或第二方面中任一项的方法。
通过上述第一方面以及第二方面的方法,处理器在可实现上述第一方面和/或第二方面的方法的计算机程序时,即可基于待检索数据构建便于后续存储以及检索的待检索数据的图索引结构,然后基于该图索引结构,当处理器针对上述查询数据进行检索时,可一次性将图索引结构中某个节点(例如下文中的起始节点)以及与该节点相似度满足第一预设条件的节点对应的数据均读取出来,可减少电子设备根据起始节点对应的邻居节点的地址访问邻居节点的次数,提高数据检索的效率,进而减少用户等待数据检索结果的时长,提高用户体验。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行上述第一方面和/或第二方面中任一项的方法。通过这样的方法,电子设备在执行上述第一方面和/或第二方面的方法对应的计算机程序时,可基于待检索数据构建便于后续存储以及检索的待检索数据的图索引结构,然后基于该图索引结构,当针对上述查询数据进行检索时,可一次性将图索引结构中某个节点(例如下文中的起始节点)以及与该节点相似度满足第一预设条件的节点对应的数据均读取出来,可减少电子设备根据起始节点对应的邻居节点的地址访问邻居节点的次数,提高数据检索的效率,进而减少用户等待数据检索结果的时长,提高用户体验。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例提供的适用本申请方法的应用场景图;
图2是未采用本申请方案进行数据存储的示意图;
图3是采用本申请方案进行数据存储的示意图;
图4a是基于邻接表的形式,采用目前方案进行数据存储的示意图;
图4b是基于邻接表的形式,采用本申请方案进行数据存储的示意图;
图5是根据本申请实施例提供的一种本申请方法的流程示意图;图6是根据本申请实施例提供的一种图索引结构的构建过程示意图;
图7是根据本申请实施例提供的一种本申请方法的流程示意图;
图8是根据本申请实施例提供的一种本申请方法的流程示意图;
图9是根据本申请实施例提供的一种实现本申请方法的系统结构示意图。
具体实施方式
下面将使用本领域技术人员通常采用的术语来描述说明性实施例的各个方面。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。也应理解,本申请技术方案中涉及的对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
图1示出适用本申请实施例的应用场景示意图。如图1所示,该应用场景中包括终端100和服务器200。服务器200利用上述的HNSW算法等图像检索方法,基于用户从终端100输入的查询数据,对存储于服务器200硬盘的待检索数据进行数据检索,并将与查询数据的向量距离相近的待检索数据作为检索结果返回至终端100显示给用户。其中,向量距离可用欧式距离、余弦距离或汉明距离等来表示,具体地向量之间的欧式距离越近或余弦距离越大表明向量对应的数据相似度越高或差别越小,本申请对此不作限制。为方便描述本文以向量之间的欧式距离表示数据之间的相似度。
需理解,上述终端100包括但不限于手机、平板电脑、笔记本电脑等设备,以下以终端100是手机100为例进行介绍。例如,在一些购物应用中,用户可通过手机100输入想要购买的包括某种物品的图像数据,手机100将图像数据作为查询数据发送至服务器200,由服务器200对该查询数据进行检索,并将检索结果例如与查询数据相同或相近的图像数据、音频数据或视频数据返回手机100。为方便描述下文以手机100为例进行介绍。
在一些实施例中,服务器200也可以利用其他图像检索方法,例如导航小世界图(Navigable Small World graph,NSW)、快速近似最近似近邻图(Fast ApproximateNearest Neighbor Graph,FANNG)等等,本申请对此不作限制。
一般情况下,服务器200处理数据时需将数据从硬盘读取至内存中,然后对内存中的数据进行处理。也即,在上述数据检索过程中,服务器200接收到手机100发送的查询数据后,需将服务器200硬盘存储的待检索数据读取至服务器200内存中,再从内存的待检索数据中将检索结果返回至手机100显示。在此过程中,涉及服务器200从硬盘读取数据的过程。
由于数据在硬盘中存储的方式一般是无规律的随机存储,也就是说,彼此之间相似度较高的数据,有可能分开存储在硬盘不连续的存储空间。例如图2所示,用户输入的查询数据为图像P0,服务器200利用HNSW算法进行图像检索,得到的与图像P0相似的结果为图像1数据、图像P9数据、图像P12数据、图像P17数据,但这些数据却分别存储在硬盘不连续的存储空间中。服务器200将这些数据读取至内存时,需进行多次(6次)读取,才可以将这些数据读取至内存再进行后续操作,降低了数据检索的效率,导致用户等待检索结果的时间较长影响用户体验。其中,图像P1、图像P9、图像P12、图像P17等图像数据仅为示例性的,在一些实现方式中,硬盘中还可以存储其他类型的数据,例如文本数据、视频数据、音频数据等,针对每一种类型数据,均可以使用本申请的方法进行搜索,应理解,本申请对硬盘中所存储的数据类型不作任何限制。
为了解决服务器200多次从硬盘读取数据造成的数据检索效率低下的问题,本申请提供了一种数据检索方法。该方法通过将分散存储在硬盘不同存储空间的、彼此之间向量距离满足一定阈值条件的数据存储在硬盘连续的存储空间中,以在进行数据检索时,这些彼此之间向量距离满足一定阈值条件的数据能够作为某一查询数据的待检索数据,被同时读取至内存,进而减少服务器200从硬盘中读取数据的次数,提高数据检索效率,提升用户的体验。
例如图3所示,经过本申请方法处理后,彼此之间向量距离满足一定阈值条件的图像数据、音频数据、视频数据等可存储在硬盘连续的存储空间,比如图像1数据、图像P9数据、图像P12数据、图像P17数据存储在硬盘连续的存储空间“0X000E0-0X000E4”,图像P3数据、图像P4数据存储在连续的存储空间“0X000E7-0X000E8”,图像P13数据、图像P14数据、图像P15数据存储在连续的存储空间“0X000F0-0X000F3”,图像P20数据、图像P25数据、图像P21数据存储在连续的存储空间“0X000F5-0X000F8”。
如此,当服务器200进行数据检索时,假设查询数据为上述图像P0,服务器200可从硬盘连续的存储空间“0X000E0-0X000E4”中将图像1数据、图像P9数据、图像P12数据、图像P17数据作为待检索数据同时读取至内存,然后对内存中的待检索数据进行后续处理,例如将全部或部分待检索数据作为检索结果返回至手机100并显示,减少了服务器200从硬盘读取数据的次数,提高了数据检索的效率。
需理解,本文各实施例中涉及的数据读取过程为从硬盘读取数据至内存或缓存,但本申请的方法还可适用于将数据从内存读取至缓存的过程,即对于数据原本存储于服务器200或手机100的内存,在进行数据检索时需将数据读取至服务器200或手机100的缓存中的情况,也可对内存中无序、随机存储的数据采用本申请的方法,使彼此之间向量距离满足一定阈值条件的数据能够存放在内存连续的存储空间,以减少服务器200或手机100访问内存的次数,本申请对此也不作限制。
为了进一步理解本申请的实现过程,下面以邻接表形式存储在硬盘的数据为例进行说明。但应理解,本申请的方法也适用于以其他任意存储形式存储数据的场景,在此不作限制。
图4a示出了一种数据以邻接表形式存储在硬盘的示意图。如图4a所示,“0X000E0-0X000F4”代表在硬盘中存储空间的地址。每个存储区间内存储有某个数据的向量以及与该数据的向量距离小于第一距离阈值的数据的标识(ID)。在一些可能的实现方式中,每个存储区间也可以存储某个数据的向量、与该数据的向量距离小于第一距离阈值的数据的ID以及向量存储地址。其中,为便于理解,各数据的标识以该数据对应的字母的小写字母为例,例如,b是数据B的标识。但应理解,本申请对标识的具体形式不作限制。
例如在存储区间0X000E0至0X000E2,存储有数据A对应的向量A,以及与该数据A的向量距离小于第一距离阈值的数据B、J、K、M的标识以及存储地址(0X000E3)、(0X000E9)、(0X000E1)、(0X000E6)。其中,在邻接表中,一般将数据A对应的向量也称为A节点,与数据A的向量距离小于第一距离阈值的数据对应的向量称为A节点的邻居节点,换言之,在存储区间0X000X0至0X000E2,存储有A节点以及A节点的邻居节点的存储地址。
基于上述邻接表的存储方式,在针对某一查询数据进行检索时,会从某一个起始节点(第一起始节点)开始,比较查询数据对应的向量与该第一起始节点及该第一起始节点的邻居节点之间的向量距离,并从中选择向量距离最小的节点作为第二起始节点,再比较该查询数据与第二起始节点及该第二起始节点的向量距离,然后从中选择向量距离最小的节点作为第三起始节点,……以此类推,直至遍历完硬盘中全部或部分数据对应的节点,然后将预设数据量个向量距离小于第二距离阈值的节点对应的数据作为最终的检索结果,返回至手机100显示。其中遍历完硬盘中部分数据指的是遍历完硬盘中预设m个数据,m为经验值或实验值,例如其取值可为2000,其数值远大于最终返回手机100显示的检索结果的数值。预设数量个也可以为经验值或实验值,可根据具体需求由用户自行设置,其取值例如可以为10,第二距离阈值小于或等于第一距离阈值。
在上述过程中,在比较查询数据对应的向量与第一起始节点及该第一起始节点的邻居节点的向量距离之前,服务器200需从硬盘中读取第一起始节点以及第一起始节点的邻居节点的向量,具体地,服务器200首先根据第一起始节点的存储地址,找到第一起始节点的存储区间,然后根据第一起始节点对应的邻居节点的存储地址,分别从硬盘中读取第一起始节点对应的邻居节点的向量,例如根据第一起始节点的存储地址0X000E0,读取第一起始节点的A的向量,然后根据第一起始节点的邻居节点的存储地址(0X000E3)、(0X000E9)、(0X000F1)、(0X000E6)分4次从硬盘中读取B节点、J节点、K节点以及M节点的向量至内存。
然后比较查询数据的向量与这些节点向量之间的距离,找到向量距离最近的节点,作为第二起始节点,然后在按照相同的方法,从硬盘中读取第二起始节点及第二起始节点对应的邻居节点的向量(不再读取已经读取至内存的节点)。例如,假设第一起始节点A及其邻居节点中与查询数据的向量距离最近的节点为M节点,则将M节点作为第二起始节点,然后根据M节点的存储地址,读取M节点的向量,以及根据M节点对应的邻居节点A、K、L的存储地址(0X000E0)、(0X000F1)、(0X000F3),分别读取节点A、K、L的向量,其中,A节点、K节点已经被读取至内存中,故不再读取A节点和K节点的向量。其中,确定节点是否被读取至内存中,可通过内存中节点的标识来确定,如果内存中已经存在某一节点的标识,则表明该节点的向量已被读取至内存中,作为服务器200不再从硬盘中再次读取该节点的向量。在另一些实现方式中,也可以根据操作系统的缺页中断机制确定节点是否被读取至内存中。具体地,对于不在内存中的数据(例如上述节点向量)的地址,操作系统会触发页中断机制,将该地址自动加载至内存,因此如果内存中已有该节点的向量,那么操作系统自然不会触发页中断机制。
可以看出,由于上述数据的存储位置是随机的,所以上述服务器200从硬盘读取数据的过程中,存在很多随机访问,比如基于A节点访问A节点的邻居节点的过程,服务器200必须分4次才可以读取到A节点的全部邻居节点的向量,这样的数据检索过程无疑是低效的。
因此,可以将上述数据按照特定方式进行重新存储,使得向量距离较近的数据存储在连续的存储空间,这样在数据访问时,即可将向量距离较近的数据同时读取至内存中,以减少服务器200访问硬盘的次数,提高数据检索的效率,为用户提供更快的数据检索方法,减少用户等待数据检索结果的时长,提高用户体验。
具体地,邻居节点较多的节点之间,更有可能互成邻居节点,因此在访问其中一个节点时,另一个节点作为邻居节点被访问到的可能性也越大。例如图4a或图4b中,节点A的邻居节点为4个(节点B、节点J、节点K以及节点M),节点B的邻居节点为5个(节点C、节点G、节点I、节点J、节点A),节点A与节点B互成邻居节点,那么在访问节点A时,节点B也会作为邻居节点被访问。其中,将每个节点的邻居节点的数量称为该节点的度,也即度越大的节点之间,更有可能互成邻居节点,在访问其中一个节点时,另一节点也更有可能被访问。
因此,可以按照每个节点的度的大小,对各节点排序,然后按照度的大小,将各节点依次存储至硬盘连续的存储空间中,当针对某个查询数据进行检索时,可将与该查询数据对应的向量进行比较的第一起始节点及之后的每个节点同时读取至内存,由于之后的每个节点有很大可能是第一起始节点的邻居节点,因此可减少服务器200根据第一起始节点对应的邻居节点的地址访问邻居节点的次数,提高数据检索的效率,进而减少用户等待数据检索结果的时长,提高用户体验。
举例来说明,对上图4a中各个节点按照度的大小依次存储至硬盘后的位置如图4b所示。继续以第一起始节点为A节点为例,在针对查询数据进行检索时,服务器200根据第一起始节点A的存储地址0X000E8,从第一起始节点A开始,同时将A节点之后的节点J、L、D、M、E读取至内存。其中,服务器200读取至内存的数据大小为预设大小,该预设大小为经验值或实验值,例如其取值可以为4096KB。
然后比较查询数据的向量与A节点及A节点的邻居节点之间的向量距离,由于在读取A节点的过程中,J节点、M节点作为向量距离较近的节点已经被读取至内存,故在读取A的邻居节点时,只需根据B节点以及K节点的存储地址,分2次读取B节点以及K节点的向量即可。
对比图4a以及图4b对应的数据读取过程,图4b中服务器200在读取A节点及A节点的邻居节点时的次数要比图4a中服务器200读取A节点以及A节点的邻居节点的次数少,数据检索的效率也会越高。
下面结合附图5至图8,详细介绍上述方法在服务器200上的具体实施细节。可以理解,上述方法也可以在手机100或其他具有数据处理能力的设备上实现,本申请对此不作限制。
上述方法可概括为两个主要阶段:(1)硬盘中待检索数据的度的计算,以及(2)按照度的大小存储待检索数据。下面对此展开介绍。
图5示出了硬盘中待检索数据的度的计算过程,包括构建待检索数据的图索引结构,以及根据图索引结构确定每个待检索数据的度等。具体如下:
501,获取待检索数据。在一些实施例中,服务器200获取其硬盘中存储的待检索数据。其中,待检索数据的种类包括但不限于图像数据、音频数据、视频数据以及文本数据等数据种类。在另一些实施例中,服务器200还可通过其他途径获取待检索数据,例如服务器200获取第三方应用平台(诸如购物平台,搜索平台等)数据库中的数据,并将这些数据作为待检索数据。
502,从待检索数据中任意选择一个数据,并以该数据对应的向量作为图索引结构的起始节点。其中,对待检索数据的向量化与现有技术一致,本领域人员可在不付出创造性劳动的情况下知悉。例如图6所示,可以待检索数据A对应的向量A作为图索引结构的第一起始节点。
503,以该起始节点为基础,将待检索数据的向量中与该起始节点对应的向量的距离小于第一距离阈值的待检索数据对应的向量,作为该起始节点的第一邻居节点,并将该起始节点与第一邻居节点之间的连线作为图索引结构的边。例如,假设待检索数据的向量中,与起始节点A的向量距离小于第一距离阈值的待检索数据的向量为M、K、J、B,则如图6所示,M节点、K节点、J节点以及B节点可作为A节点的第一邻居节点。
504,针对起始节点的每个第一邻居节点,将待检索数据的向量中与各第一邻居节点对应的向量的距离小于第一距离阈值的待检索数据对应的向量,作为该第一邻居节点的第二邻居节点,并将该第一邻居节点与第二邻居节点的连线也作为图索引结构的边。例如,以第一邻居节点B为例,假设待检索数据的向量中与节点B的向量距离小于第一距离阈值的向量为A、J、I、G、C,则如图6所示,A节点、J节点、I节点、G节点以及C节点可作为第一邻居节点B的第二邻居节点。
505,利用相同的方法,遍历待检索数据,得到每个待检索数据的邻居节点以及各待检索数据与其邻居节点的边。
506,各待检索数据对应的节点以及各节点对应的邻居节点,及各节点与邻居节点之间的边,构成待检索数据的图索引结构。例如,假设硬盘中存储的待检索数据为A、B、C、D、E、F、G、H、I、J、K、L、M,则利用上述方法构建的这些待检索数据的图索引结构可如图6所示。
507,统计图索引结构中各个节点的邻居节点的数量,得到各个节点的度。示例性地,以图6为例,则图6中每个节点的度(或邻居节点的数量)的大小可如下表1所示:
表1
Figure BDA0003624921260000101
Figure BDA0003624921260000111
通过上图5所示的方法,完成了硬盘数据中图索引结构的构建,并得到每个待检索数据对应的度的大小。之后,便可基于该图索引结构,按照每个节点的度的大小,对各个节点进行排序,并将节点顺次存储至硬盘连续空间,以完成如图4b所示的硬盘中待检索数据的重新存储。
在一些实现方式中,也可以使用其他方式构建上述待检索数据的图索引结构,例如使用有限元带宽优化算法对上述待检索数据进行处理,在相似度高的数据之间建立连通或“边”,以得到待检索数据的图索引结构,本申请对待检索数据图索引结构的构建方式不作限制。
图7示出了基于图5构建的图索引结构,对硬盘中待检索数据的重新存储的流程示意图,包括:
700,构建待检索数据的图索引结构。此处具体细节可参考上图5中501至507的描述,不再赘述。
701,对待检索数据的图索引结构中各个节点,按照度的大小,从大到小进行排序。示例性地,对表1中各节点按照度的大小进行排序后,结果可如表2所示:
表2
节点 邻居节点
I B、G、F、H、L、K、J 7
K A、J、I、L、M 5
B C、G、I、J、A 5
C B、G、F、E、D 5
G B、C、D、F、I 5
F G、C、H、I 4
H E、F、I、L 4
A B、J、K、M 4
J A、B、I、K 4
L M、K、I、H 4
D C、G、E 3
M A、K、L 3
E C、D、H 3
702,将排序后的各节点顺次存储至硬盘连续的存储空间。例如,将表2中的节点,按照I、K、B、c、F、G、H、A、J、L、D、M、E的顺序存储在连续的硬盘连续的空间,同时,将各节点的邻居节点的标识以及存储地址,也存储在该节点对应的存储区间,形成如上图4b所示的存储结构。在一些实现方式中,当硬盘没有足够的连续存储空间存储上述全部数据时,也可将上述数据分开存储至硬盘多个连续的存储空间上,这样,也可确保在读取一个节点的向量时,将与该节点向量距离较近的节点同时读取至内存,也可在一定程度减少服务器200访问硬盘的次数,本申请对此不作限制。
经过上述方法,即完成硬盘数据的重新存储,将硬盘数据存储在连续的存储空间。
基于上述存储方式,如上文所言,即可在对查询数据进行检索时,减少服务器200访问硬盘的次数。具体地,图8示出了针对某一查询数据进行检索时,服务器200从硬盘读取数据的流程示意图。如图8所示,该方法包括:
801,接收查询数据。服务器200从手机100接收用户输入的查询数据,其中查询数据可以是文本数据、图像数据、音频数据、视频数据等,本申请对此不作限制。
802,从图索引结构中选择一个节点作为第一起始节点。第一起始节点为与查询数据的向量比较的第一个节点,可以理解为图索引结构的“入口”。在一些实现方式中,上述第一起始节点的选取可以是任意的,例如以上图6为例,可以从图索引结构中任意选择一个节点,比如选择节点A作为第一起始节点。在另一些实现方式中,上述第一起始节点也可以是预设的。例如,在构建好图索引结构的同时,确定节点A或节点B作为第一起始节点。并且,上述第一起始节点的数量可以使一个也可以是多个,例如仅以节点A作为起始节点,或者以节点A或节点B作为起始节点,本申请对此不作限制,但应理解,在第一起始节点为多个的情况下,针对每个起始节点所做的数据查询过程的是相同的。
803,读取该第一起始节点以及第一起始节点之后的第一预设大小数据量的节点的向量,作为第二节点集。读取第一起始节点之后的第一预设大小数据量的节点的向量,指的是从第一起始节点的存储地址开始,将该存储地址之后的第一预设大小数据量的节点的向量均读取至内存,并作为第二节点集。其中,第一预设大小数据量取决于内存的可用空间,例如如果内存可用空间为512M,则第一预设大小数据量的取值可以为512M。
比如图4b中,服务器200从第一起始节点A节点开始,读取A节点之后的节点J、L、D、M、E直至读取的数据量大小满足第一预设大小数据量。可以理解,当A节点之后的全部节点的向量的数据量大小之和仍小于第一预设大小数据量时,则读取到最后一个节点的向量为止。例如,假设节点J、L、D、M、E的向量的数据量大小之和小于第一预设大小数据量,则服务器200读取到E节点之后,不再继续读取数据。
804,根据第一起始节点的存储区间中,第一起始节点的邻居节点的存储地址,从邻居节点的存储地址读取邻居节点的向量。如上文所言,每个节点的存储区间内还存储有该节点的邻居节点的存储地址,因此,可根据该节点的存储区间内邻居节点的存储地址,读取到邻居节点的向量。
但是应理解,如果该邻居节点的向量已在803中被读取至内存中,也即邻居节点已经在上述第二节点集中时,则不再根据该邻居节点存储地址读取该邻居节点的向量,以减少服务器200访问硬盘的次数。其中,可通过节点的标识,判断某个节点是否已经被读取至内存,例如如果第二节点集中已经存在该节点的标识,则该节点已经被读取至内存,如果第二节点集中没有该节点的标识,则该节点尚未被读取至内存。
例如以图4b为例,在读取A节点时,节点J、M的向量以作为与A节点向量距离小于第一距离阈值的数据被读取至内存(或在第二节点集中已经有节点J的标识j和节点M的标识m),因此在读取A节点的邻居节点时,便不再读取节点J、M的向量。
805,比较查询数据的向量与第一起始节点及第一起始节点的邻居节点之间的向量距离,选择向量距离最小的节点作为第二起始节点。继续以第一起始节点为A节点为例,假设节点A及其邻居节点B、J、K、M中与查询数据的向量距离最小的节点为B,则将节点B作为第二起始节点。其中,向量之间的距离可参考上文关于欧式距离的说明,此处不再赘述。
806,读取该第二起始节点以及第二起始节点之后的第二预设大小数据量的节点的向量,作为第三节点集。其中,第二预设大小数据量取决于当前内存的可用空间,一般情况下,第二预设大小的数据量小于第一预设大小数据量。此处具体实施细节可参考上述803的描述,不再赘述。
807,根据第二起始节点的存储区间中,第二起始节点的邻居节点的存储地址,从邻居节点的存储地址读取邻居节点的向量。此处可参考上述804的描述,不再赘述。
808,比较查询数据的向量与第二起始节点及第二起始节点的邻居节点之间的向量距离,选择向量距离最小的节点作为第三起始节点。此处可参考上述805的描述,不再赘述。
809,利用同样的方法,遍历图索引结构中的节点,将于查询数据的向量距离小于第三距离阈值的节点的向量作为结果节点集。
810,从结果节点集中返回预设数量个节点向量对应的数据至手机100。其中,预设数量可以为经验值或实验值,可由研发人员或用户根据实际需求进行设置,其取值决定在手机100上最终显示的检索结果的数量,例如如果预设数量取值为10,则在手机100上最终显示10个针对于上述查询数据的检索结果。其中,将节点向量还原至数据的过程与现有技术一致,本领域技术人员可在不付出创造性劳动的情况下知悉。
通过上述方法,可有效减少用户针对某一查询数据进行数据检索的时候,服务器200访问硬盘的次数,进而提高数据检索的效率,为用户提供更快的数据检索方法,减少用户等待数据检索结果的时长,提高用户体验。
图9示出了本申请实施例中的一种电子设备900的框图。在一个实施例中,电子设备900可以包括一个或多个处理器904,与处理器904中的至少一个连接的系统控制逻辑908,与系统控制逻辑908连接的系统内存912,与系统控制逻辑908连接的非易失性存储器(NVM)919,以及与系统控制逻辑908连接的网络接口920。
在一些实施例中,处理器904可以包括一个或多个单核或多核处理器。在一些实施例中,处理器904可以包括通用处理器和专用处理器(例如,图形处理器,应用处理器,基带处理器等)的任意组合。
在一些实施例中,系统控制逻辑908可以包括任意合适的接口控制器,以向处理器904中的至少一个和/或与系统控制逻辑908通信的任意合适的设备或组件提供任意合适的接口。
在一些实施例中,系统控制逻辑908可以包括一个或多个存储器控制器,以提供连接到系统内存912的接口。系统内存912可以用于加载以及存储数据和/或指令。在一些实施例中电子设备900的内存912可以包括任意合适的易失性存储器,例如合适的动态随机存取存储器(Dynamic Random Access Memory,DRAM)。
NVM/存储器919可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性的计算机可读介质。在一些实施例中,NVM/存储器919可以包括闪存等任意合适的非易失性存储器和/或任意合适的非易失性存储设备,例如硬盘驱动器(Hard Disk Drive,HDD),光盘(Compact Disc,CD)驱动器,数字通用光盘(Digital Versatile Disc,DVD)驱动器中的至少一个。
NVM/存储器919可以包括安装电子设备900的装置上的一部分存储资源,或者它可以由设备访问,但不一定是设备的一部分。例如,可以经由网络接口920通过网络访问NVM/存储919。
特别地,系统内存912和NVM/存储器919可以分别包括:指令924的暂时副本和永久副本。指令924可以包括:由处理器904中的至少一个执行时导致电子设备900实施上述构建方法的指令。在一些实施例中,指令924、硬件、固件和/或其软件组件可另外地/替代地置于系统控制逻辑908,网络接口920和/或处理器904中。
网络接口920可以包括收发器,用于为电子设备900提供无线电接口,进而通过一个或多个网络与任意其他合适的设备(如前端模块,天线等)进行通信。在一些实施例中,网络接口920可以集成于电子设备900的其他组件。例如,网络接口920可以集成在处理器904,系统内存912,NVM/存储器919,和具有指令的固件设备(未示出)中的至少一种,当处理器904中的至少一个执行所述指令时,电子设备900实现上述图5至图8所示的方法。
网络接口920可以进一步包括任意合适的硬件和/或固件,以提供多输入多输出无线电接口。例如,网络接口920可以是网络适配器,无线网络适配器,电话调制解调器和/或无线调制解调器。
在一个实施例中,处理器904中的至少一个可以与用于系统控制逻辑908的一个或多个控制器的逻辑封装在一起,以形成系统封装(SiP)。在一个实施例中,处理器904中的至少一个可以与用于系统控制逻辑908的一个或多个控制器的逻辑集成在同一管芯上,以形成片上系统(SoC)。
电子设备900可以进一步包括:输入/输出(I/O)设备992。I/O设备992可以包括用户界面,使得用户能够与电子设备900进行交互;外围组件接口的设计使得外围组件也能够与电子设备900交互。在一些实施例中,电子设备900还包括传感器,用于确定与电子设备900相关的环境条件和位置信息的至少一种。
在一些实施例中,用户界面可包括但不限于显示器(例如,液晶显示器,触摸屏显示器等),扬声器,麦克风,一个或多个相机(例如,静止图像照相机和/或摄像机),手电筒(例如,发光二极管闪光灯)和键盘。
在一些实施例中,外围组件接口可以包括但不限于非易失性存储器端口、音频插孔和电源接口。
本申请公开的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(CD-ROMs)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本申请各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本申请所提出的技术问题的关键。此外,为了突出本申请的创新部分,本申请上述各设备实施例并没有将与解决本申请所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的范围。

Claims (10)

1.一种待检索数据的处理方法,用于电子设备,包括:
获取待检索数据;
基于待检索数据之间的数据相似度,构建所述待检索数据的图索引结构,其中,所述图索引结构包括多个节点,所述多个节点中至少一个节点具有至少一个邻居节点,所述至少一个节点与所述至少一个节点对应的所述至少一个邻居节点之间具有边,所述边用于表征所述至少一个节点与所述至少一个节点的所述至少一个邻居节点之间的数据相似度满足第一预设条件;
基于所述图索引结构,确定所述多个节点中每个节点的邻居节点的数量,按照所述每个节点的邻居节点的数量对所述多个节点排序;以及
按照排序结果,将所述每个节点的信息存储至第一存储空间连续的存储位置,其中,所述每个节点的信息包括所述每个节点对应的数据以及所述每个节点的邻居节点的标识。
2.根据权利要求1所述的方法,其特征在于,所述图索引结构的所述每个节点的数据为所述待检索数据的向量,所述至少一个节点与所述至少一个节点的所述至少一个邻居节点之间的数据相似度满足第一预设条件,包括:
所述至少一个节点的向量与所述至少一个节点的所述至少一个邻居节点的向量的向量欧式距离小于第一距离阈值。
3.根据权利要求1所述的方法,其特征在于,所述待检索数据的类型包括文本数据、图像数据、音频数据或视频数据中的至少一种。
4.一种数据检索方法,用于电子设备,其特征在于,包括:
获取查询数据;
基于待检索数据,针对所述查询数据进行数据检索,其中,所述待检索数据构成图索引结构,所述图索引结构包括多个节点,所述多个节点中至少一个节点具有至少一个邻居节点,所述至少一个节点与所述至少一个节点对应的所述至少一个邻居节点之间具有边,所述边用于表征所述至少一个节点与所述至少一个节点的所述至少一个邻居节点之间的数据相似度满足第一预设条件;
以及所述每个节点的信息存储至第一存储空间连续的存储位置,其中,所述每个节点的信息包括所述每个节点对应的数据以及所述每个节点的邻居节点的标识;
将预设数量个与所述查询数据的数据相似度满足第二预设条件的所述待检索数据作为数据检索的检索结果。
5.根据权利要求4所述的方法,其特征在于,所述图索引结构的所述每个节点的数据为所述待检索数据的向量,所述至少一个节点与所述至少一个节点的所述至少一个邻居节点之间的数据相似度满足第一预设条件,包括:
所述至少一个节点的向量与所述至少一个节点的所述至少一个邻居节点的向量的向量欧式距离小于第一距离阈值。
6.根据权利要求5所述的方法,其特征在于,所述基于待检索数据,针对查询数据进行数据检索,包括:
遍历所述图索引结构的M个节点,从所述图索引结构的所述M个节点中,确定所述预设数量个与所述查询数据的向量的向量欧式距离小于第二距离阈值的向量作为结果向量,其中,M为正整数,并且在遍历所述图索引结构的所述M个节点的过程中,基于所述图索引结构执行以下操作:
确定第N次与所述查询数据的向量进行比较的所述图索引结构的起始节点,从所述起始节点在所述第一存储空间的存储地址开始,读取第一预设大小数据量的多个节点的向量以及与所述多个节点中各节点对应的邻居节点的信息作为第一节点集,并将所述第一节点集存储至第二存储空间;
根据所述第一节点集中所述多个节点的标识,以及根据所述起始节点对应的邻居节点的存储地址,从所述第一存储空间读取不在所述第一节点集的所述起始节点的邻居节点的向量至所述第二存储空间;
从所述第二存储空间的所述多个节点中,确定与所述查询数据的向量的向量欧式距离最近的向量,作为第N+1次与所述查询数据的向量进行比较的起始节点;
将每次比较过程中与所述查询数据的向量的向量欧式距离小于第二距离阈值的向量作为结果向量。
7.根据权利要求6所述的方法,其特征在于,所述第一预设大小数据量根据所述第二存储空间的可用空间确定。
8.根据权利要求6所述的方法,其特征在于,所述将预设数量个与所述查询数据的数据相似度满足第二预设条件的所述待检索数据作为数据检索的检索结果,包括:
将所述预设数量个与所述结果向量对应的所述待检索数据作为所述检索结果。
9.一种计算机可读介质,其特征在于,所述计算机可读介质上存储有指令,该指令在电子设备上执行时使电子设备执行权利要求1至8中任一项所述的方法。
10.一种电子设备,其特征在于,所述电子设备包括:
存储器,用于存储由电子设备的一个或多个处理器执行的指令,以及
处理器,是电子设备的处理器之一,用于执行权利要求1至8中任一项所述的方法。
CN202210502213.9A 2022-04-29 2022-04-29 待检索数据处理方法、数据检索方法、电子设备及介质 Pending CN114817657A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210502213.9A CN114817657A (zh) 2022-04-29 2022-04-29 待检索数据处理方法、数据检索方法、电子设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210502213.9A CN114817657A (zh) 2022-04-29 2022-04-29 待检索数据处理方法、数据检索方法、电子设备及介质

Publications (1)

Publication Number Publication Date
CN114817657A true CN114817657A (zh) 2022-07-29

Family

ID=82514178

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210502213.9A Pending CN114817657A (zh) 2022-04-29 2022-04-29 待检索数据处理方法、数据检索方法、电子设备及介质

Country Status (1)

Country Link
CN (1) CN114817657A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116150212A (zh) * 2023-04-24 2023-05-23 苏州映赛智能科技有限公司 数据处理方法及设备
CN116304253A (zh) * 2023-02-28 2023-06-23 北京百度网讯科技有限公司 数据存储方法、数据检索方法和识别相似视频的方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116304253A (zh) * 2023-02-28 2023-06-23 北京百度网讯科技有限公司 数据存储方法、数据检索方法和识别相似视频的方法
CN116304253B (zh) * 2023-02-28 2024-05-07 北京百度网讯科技有限公司 数据存储方法、数据检索方法和识别相似视频的方法
CN116150212A (zh) * 2023-04-24 2023-05-23 苏州映赛智能科技有限公司 数据处理方法及设备

Similar Documents

Publication Publication Date Title
CN114817657A (zh) 待检索数据处理方法、数据检索方法、电子设备及介质
CN106874348B (zh) 文件存储和索引方法、装置及读取文件的方法
US20230161822A1 (en) Fast and accurate geomapping
US20230205822A1 (en) Building a graph index and searching a corresponding dataset
CN108304585B (zh) 一种基于空间关键字搜索的结果数据选取方法及相关装置
CN110297764B (zh) 漏洞测试模型训练方法和装置
CN111488371A (zh) 一种数据查询方法和装置
CN111221827B (zh) 基于图形处理器的数据库表连接方法、装置、计算机设备和存储介质
CN116610840A (zh) 一种相似数据搜索方法、系统及电子设备
WO2019228009A1 (zh) 一种lsm树的优化方法、装置及计算机设备
CN110737678A (zh) 一种数据查找方法、装置、设备和存储介质
CN114463068A (zh) 一种数据处理方法和装置
CN114691612A (zh) 数据写入方法及装置、数据读取方法及装置
CN116108150A (zh) 一种智能问答方法、装置、系统及电子设备
CN114840762A (zh) 推荐内容确定方法、装置和电子设备
CN114691940A (zh) 索引构建方法、装置、向量搜索方法及检索系统
CN112579839B (zh) 大规模特征的多模匹配方法、装置及存储介质
WO2015104591A1 (en) Multiple criteria decision analysis in distributed databases
CN112328630A (zh) 数据查询方法、装置、设备及存储介质
WO2024016789A1 (zh) 日志数据查询方法、装置、设备和介质
CN112860758A (zh) 搜索方法、装置、电子设备及计算机存储介质
CN116541421B (zh) 地址查询信息生成方法、装置、电子设备与计算机介质
CN114461146B (zh) 云存储的数据处理方法、装置、系统、设备、介质及产品
CN114791966A (zh) 索引构建方法、装置、向量搜索方法及检索系统
CN116932935A (zh) 地址匹配方法、装置、设备、介质和程序产品

Legal Events

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