CN111868710B - 搜索大规模非结构化数据的随机提取森林索引结构 - Google Patents
搜索大规模非结构化数据的随机提取森林索引结构 Download PDFInfo
- Publication number
- CN111868710B CN111868710B CN201980016647.4A CN201980016647A CN111868710B CN 111868710 B CN111868710 B CN 111868710B CN 201980016647 A CN201980016647 A CN 201980016647A CN 111868710 B CN111868710 B CN 111868710B
- Authority
- CN
- China
- Prior art keywords
- combined
- node
- sequence
- query
- index table
- 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.)
- Active
Links
- 238000000605 extraction Methods 0.000 title description 19
- 239000013598 vector Substances 0.000 claims abstract description 253
- 238000000034 method Methods 0.000 claims abstract description 88
- 238000012545 processing Methods 0.000 claims description 47
- 238000003860 storage Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 5
- 230000006870 function Effects 0.000 description 38
- 230000008569 process Effects 0.000 description 21
- 239000011159 matrix material Substances 0.000 description 7
- 238000011946 reduction process Methods 0.000 description 7
- 238000002910 structure generation Methods 0.000 description 7
- 230000009467 reduction Effects 0.000 description 3
- 238000010845 search algorithm Methods 0.000 description 3
- 239000002131 composite material Substances 0.000 description 2
- 238000000354 decomposition reaction Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000005304 joining Methods 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 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
- 230000003287 optical effect Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/906—Clustering; Classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2413—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
- G06F18/24147—Distances to closest patterns, e.g. nearest neighbour classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/74—Image or video pattern matching; Proximity measures in feature spaces
- G06V10/761—Proximity, similarity or dissimilarity measures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Multimedia (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种生成索引多个非结构性数据对象的索引结构的***和方法,包括:生成一组紧凑特征向量,其中,所述组包括每个所述数据对象的紧凑特征向量,每个数据对象的所述紧凑特征向量包括表征所述数据对象的哈希值的序列;为每组紧凑特征向量生成多组扭曲紧凑特征向量,其中,每组所述扭曲紧凑特征向量通过对所述紧凑特征向量组采用各自随机的组合排列生成;对于每组扭曲紧凑特征向量,为所述数据对象生成检索,其中,在所述检索中,基于在所述扭曲紧凑特征向量组的哈希值的序列为所述数据对象分配槽位。
Description
相关申请案交叉申请
本申请要求于2018年3月1日递交的第62/637,248号美国临时专利申请案以及于2018年7月24日递交的第16/044,286号美国实用专利申请案的在先申请优先权,该在先申请的内容以引入的方式并入本文。
技术领域
本发明大体涉及数据库的索引和搜索,尤其涉及非结构化数据的基于索引的搜索。
背景技术
非结构化多媒体数据对象的量正在飞速增长,这种数据对象包括存储在例如线上互联网以及基于云技术的数据库的数字信息库中的图像数据、视频数据、音频数据、文本数据以及其它复杂的数字对象。对非结构化数据的搜索查询进行准确而资源高效处理提出了技术挑战。
相似性搜索是一种数据搜索。在相似性搜索中,基于比较搜索数据库中查询对象和所述数据对象的相同点,对非结构性数据对象进行搜索。相似性搜索通常涉及为存储在数据库的每个所述数据对象创建元数据,为查询对象创建元数据,然后,把所述查询对象的所述元数据与所述数据对象的所述元数据进行对比。每个对象的所述元数据可以特征向量的形式呈现,所述特征向量是表征所述对象的有数值特征的多维向量。在这方面,相似性搜索可以被定义成从存储在数据库中的多个特征向量之中找到与所给特征向量(比如:查询向量)最相似的特征向量的搜索。相似性搜索算法可以用在模式识别和分类、推荐***、统计机器学习以及其它许多领域。
所以,相似性搜索通常涉及使用特征提取算法把查询对象(比如:图像、视频样本、音频样本或者文档)转换(转化)成表征所述查询对象的查询特征向量。随后,所述查询特征向量被用于搜索特征向量的数据库,以定位一个或者多个与所述查询特征向量最相似的数据对象特征向量(例如,存储在所述数据库的数据对象的特征向量)。
在非结构化数据对象的背景下,所述特征向量通常是高维向量。在高维特征空间里,特定数据集的数据变得稀少,所以距离和相似性失去数据显著性,结果导致随着维度越来越多,查询性能呈指数级下滑。这被称为“维度灾难”问题。
为处理所述“维度灾难”问题,一种方法包括对每个存储在所述数据库的特征向量采用降维算法,以生成每个特征向量的较短版本(例如,紧凑特征向量)。在为存储在所述数据库的每个对象的每个特征向量生成紧凑特征向量之后,使用索引生成算法从所述紧凑特征向量中生成搜索索引。所述降维算法也用于所述查询特征向量,以生成所述查询特征向量的较短版本(例如,紧凑查询特征向量)。然后,通过给搜索算法提供所述紧凑查询向量和所述搜索索引,可以执行相似性搜索,以找到与所述查询特征向量最相似的候选数据对象特征向量。
为把有许多向量维度的特征向量转化为减少了向量维度的紧凑特征向量,并生成对应的搜索索引,一种方法是采用基于哈希法的近似最近邻(approximate nearestneighbor,简称ANN)算法。例如,可以使用局部敏感哈希法(locality sensitive hashing,简称LSH)来减少高维数据的维度。LSH对输入项进行哈希,从而相似项大概率会映射到同“桶”(桶的数量比可能的输入项的全集小得多)。特别地,使用LSH算法可以对特征向量进行哈希,以产生作所述紧凑特征向量用的LSH哈希值。
然而,现有的基于LSH-ANN的索引和搜索算法存在一个问题:这些算法会产生过于偏向所述紧凑特征向量最高有效位(most significant bit,简称MSB)之间相似性的搜索查询。特别地,现有的索引生成方法可使用紧凑特征向量的最前几位比特(或者,例如最后几位比特的其它连续比特位组),以标识相似的特征向量。然而,这些比特可能无法有效地指示相似性,导致搜索不准确以及计算资源的低效使用。
图1描述了此MSB问题的示例,图1提供了基于LSH的索引和搜索法100的示例。在图1的示例中,根索引102指向不同的槽位或者桶104(1)和桶104(2),其中,每个桶104(1)和桶104(2)都包括以紧凑特征向量Ki形式呈现的各自哈希值组。所述紧凑特征向量Ki基于共同最长前缀(longest length of common prefix,简称LLCP)或者其它定义的测距方法在各自的桶104(1)和桶104(2)中分组。如图1所述,基于欧式距离,比起紧凑特征向量K3,所述紧凑特征向量K1与紧凑特征向量K2更相似。然而,基于所述紧凑特征向量K1前2个成分(比如最前2位比特)与紧凑特征向量K2和K3的对比,图1中的所述索引生成方法把所述紧凑特征向量K1和K2分开在不同的桶104(1)和桶104(2)中,把紧凑特征向量K1和K3组合到相同的桶104(2)中。当紧凑查询特征向量q加入进来时,基于最前面的两个成分,所述紧凑查询特征向量q将会更接近于第一个桶,由此紧凑特征向量K1和K3作为候选最近邻居返回,其中,在理想状态下,紧凑特征向量K1和K2应作为紧凑查询特征向量q的最近邻居返回。虽然当挑选所述哈希函数时,没有对所述成分或者比特的偏好,但是左边的成分或者比特仍然被授予分割优先级,这一事实导致了这个错误。当使用所述生成的搜索索引进行相似性搜索时,这会影响搜索准确度。
相应地,在此处公开了处理前面提到的MSB问题的方法和***,以提高搜索存储在数字信息库中的大规模非结构化数据的准确度和效率,包括能够提高搜索时的计算效率和搜索准确度的***和方法。
发明内容
示例性实施例通过示例在说明书和权利要求书中公开。
根据第一示例方面,描述了一种生成索引多个数据对象的索引结构的方法,所述方法包括,对于每个数据对象:为所述数据对象生成紧凑特征向量,其中,所述紧凑特征向量包括表征所述数据对象的哈希值的序列;使用多个组合排列组合所述哈希值序列,为每个数据对象生成多个组合序列,其中,每个组合序列包括根据所述组合排列中的一个各自的组合排列组合获得的所述紧凑特征向量的所述哈希值;基于所述组合序列,在多个索引表中索引所述数据对象,其中,每个索引表都对应所述组合排列中的一个各自的组合排列。所述多个索引表存储为所述多个对象的索引结构。
在示例性实施例中,所述排列组合的每个排列组合都是为各自组合序列中的所述哈希值指定随机次序的随机组合排列。在一些示例中,所述哈希值是二进制值,每个组合排列包括一个随机生成的组合数值序列,每个组合数值都在各自组合序列中为所述哈希值指定序列地址。
在所述第一示例方面的实施例中,每个数据对象由各自的包括多个从所述数据对象提取出来的特征值的原始特征向量表征,生成所述紧凑特征向量包括哈希法所述原始特征向量,以生成所述哈希值序列。在一些示例中,所述哈希法是使用接近最近邻哈希法(approximate nearest neighbour,简称ANN)函数的局部敏感哈希法(localitysensitivehashing,简称LSH)。
在示例性实施例中,对应每个组合排列的所述索引表都是包括d-节点和k-节点的树状结构,每个d-节点包括一组槽位,其中每个槽位都有各自的槽位ID,至少一些所述槽位或者被与所述槽位关联的k-节点的指针占用,或者被下一级别的d-节点的指针占用;每个k-节点包括所述数据对象中的一个对应的数据对象的指针,其中,至少一些所述k-节点也包括另一个k-节点的指针。
在一些示例中,对于每个索引表,每个k-节点都基于所述k-节点对应的数据对象的所述组合序列的第一子序列与根d-节点的槽位相关联,其中,所述第一子序列使用所述索引表对应的所述组合排列生成。
在一些示例中,对于每个索引表,当与所述根d-节点的槽位关联的k-节点数量超过阈值,会在所述索引表中加入下一级别的d-节点,与所述根d-节点的槽位相关联;随后,每个与所述根d-节点的槽位相关联的k-节点都基于所述k-节点对应的数据对象的所述组合序列的第二子序列与所述下一级别d-节点的槽位相关联,其中,所述第二子序列使用所述索引表对应的所述组合排列生成;
在一些示例中,所述方法还包括执行所述多个数据对象的搜索,步骤如下:为查询对象生成紧凑查询特征向量,其中,所述紧凑查询特征向量包括表征所述查询对象的哈希值的序列;使用所述多个组合排列组合所述哈希值序列,为所述查询对象生成多个组合查询序列;基于使用所述索引表对应的所述组合排列生成的所述组合查询序列,搜索每个索引表,以标识与所述查询对象相似的候选数据对象。
根据第二示例方面,描述了一种索引多个数据对象的***,所述***包括:一个或者多个处理单元;***存储设备,耦合至所述一个或者多个处理单元的每个处理单元,其中,所述***存储设备有形地存储可执行指令,当这些可执行指令被所述一个或者多个处理单元执行时,会使得所述***:生成多个组合排列,其中,每个组合排列都与各自的索引表相关联。对于在所述多个数据对象的每个数据对象,所述处理***能够:(i)为所述数据对象生成紧凑特征向量,其中,所述紧凑特征向量包括表征所述数据对象的哈希值的序列;(ii)为所述数据对象生成多个组合序列,其中,每个组合序列通过对所述数据对象的所述紧凑特征向量的所述哈希值序列采用所述组合排列的各自的组合排列生成;(iii)基于使用与所述索引表相关联的所述组合排列,在每个索引表中索引所述数据对象。所述索引表由所述***存储为所述数据对象的索引结构。
在所述第二示例方面的实施例中,当所述可执行指令被所述***的所述一个或者多个处理单元执行时,进一步使得所述***去执行所述数据结构的搜索,步骤如下:为查询对象生成紧凑查询特征向量,其中,所述紧凑查询特征向量包括表征所述查询对象的哈希值的序列;使用所述多个组合排列组合所述哈希值序列,为所述查询对象生成多个组合查询序列;基于使用与所述索引表相关联的所述组合排列生成的所述组合查询序列搜索每个索引表,以标识与所述查询对象相似的候选数据对象。
根据第三示例方面,描述了一种计算机程序产品,所述计算机程序产品包括有形地存储可执行指令的介质,当这些可执行指令被数字处理***执行时,会使得所述数字处理***:生成多个组合排列,其中,每个组合排列都与各自的索引表相关联;对于多个数据对象中的每个数据对象:(i)为所述数据对象生成紧凑特征向量,其中,所述紧凑特征向量包括表征所述数据对象的哈希值的序列;(ii)为所述数据对象生成多个组合序列,其中,每个组合序列通过对所述数据对象的所述紧凑特征向量的所述哈希值序列采用所述组合排列中的各自的组合排列生成;(iii)基于使用与所述索引表相关联的所述组合排列生成的所述组合序列,在每个索引表中索引所述数据对象。所述索引表被存储为所述数据对象的索引结构。
根据第四示例方面,描述了一种搜索与查询对象相似的数据对象的方法。所述数据对象的每个数据对象都在多个索引表中被索引,每个索引表都与各自的组合排列相关联。所述方法包括:为查询对象生成紧凑查询特征向量,其中,所述紧凑查询特征向量包括表征所述查询对象的哈希值的序列;通过对表征所述查询对象的哈希值的序列采用与所述索引表相关联的所述组合排列,为每个索引表生成组合查询序列;使用为所述索引表生成的所述组合查询序列搜索每个索引表,以标识与所述查询对象相似的候选数据对象。
根据第五示例方面,描述了一种使能搜索与查询对象相似的数据对象的***。所述数据对象的每个数据对象都在多个索引表中被索引,每个索引表都与各自的组合排列相关联。所述***包括:一个或者多个处理单元;***存储设备,耦合至所述一个或者多个处理单元的每个处理单元,其中,所述***存储设备有形地存储可执行指令,当这些可执行指令被所述一个或者多个处理单元执行时,会使得所述***:为查询对象生成紧凑查询特征向量,其中,所述紧凑查询特征向量包括表征所述查询对象的哈希值的序列;通过对表征所述查询对象的哈希值序列采用与所述索引表相关联的所述组合排列,为每个索引表生成组合查询序列;使用为所述索引表生成的所述组合查询序列搜索每个索引表,以标识与所述查询对象相似的候选数据对象。
根据第六示例方面,描述了一种计算机程序产品,所述计算机程序产品包括有形地存储可执行指令的介质,当这些可执行指令被数字处理***执行时,会使得所述数字处理***去搜索与查询对象相似的数据对象,其中,所述数据对象的每个数据对象都在多个索引表中被索引,每个索引表都与各自的组合排列相关联。执行所述搜索,通过使得所述处理***执行以下操作加以实现:为查询对象生成紧凑查询特征向量,其中,所述紧凑查询特征向量包括表征所述查询对象的哈希值的序列;通过对表征所述查询对象的哈希值的序列采用与所述索引表相关联的所述组合排列,为每个索引表生成组合查询序列;使用为所述索引表生成的所述组合查询序列搜索每个索引表,以标识与所述查询对象相似的候选数据对象。
根据另一个示例方面,描述了为生成索引多个非结构性数据对象的索引结构的***和方法,所述***和方法包括:生成一组紧凑特征向量,其中,所述组包括每个所述数据对象的紧凑特征向量,每个数据对象的所述紧凑特征向量包括表征所述数据对象的哈希值的序列;为每组紧凑特征向量生成多组扭曲紧凑特征向量,其中,每组所述扭曲紧凑特征向量通过对所述紧凑特征向量组采用各自随机的组合排列生成;对于每组扭曲紧凑特征向量,为所述数据对象生成索引,其中,在所述检索中,基于在所述扭曲紧凑特征向量组的哈希值的序列为所述数据对象分配槽位。
在一些示例中,执行所述非结构性数据对象的搜索,步骤如下:为查询对象生成紧凑查询特征向量,其中,所述紧凑查询特征向量包括表征所述查询对象的哈希值的序列;为所述紧凑查询特征向量生成多个扭曲紧凑查询特征向量,其中,所述扭曲紧凑特征向量通过对所述紧凑查询特征向量采用各自随机的组合排列生成;对于每个扭曲紧凑查询特征向量,基于在所述扭曲紧凑查询特征向量组的哈希值的序列,在所述索引的各自索引中搜索相似的数据对象。
本发明实施例的其它方面和特征在回顾下文描述后对本领域普通技术人员而言将显而易见。
附图说明
现将参考附图对本发明实施例的示例进行更详细地描述。
图1是基于现有技术局部敏感哈希法(locality sensitive hashing,简称LSH)的索引和搜索法的示例图;
图2是根据示例性实施例说明索引生成和相似性搜索法的流程图;
图3是根据示例性实施例生成哈希值函数的方法的伪代码表征;
图4是基于图3方法生成的函数生成紧凑特征向量的方法的伪代码表征;
图5示出了根据一示例性实施例的第一层LSH哈希值表;
图6根据示例性实施例示出了图2索引生成方法的索引结构生成过程;
图7示出了根据示例性实施例的随机哈希值组合过程的示例;
图8示出了图6中LSH索引表生成任务过程的示例;
图9示出了在LSH索引表中不同的d-节点的可变长度缩放;
图10是能够用于实现此处描述的方法和***的数字处理***的示例。
具体实施方式
图2是根据示例性实施例说明索引生成和相似性搜索法202、204的流程图。在示例性实施例中,由在一个或者多个数字处理***中实现的软件执行索引生成方法202和相似性搜索法204。在示例性实施例中,所述索引生成方法202和所述相似性搜索法204使得它们的主数字处理***以更高效、更准确的方式运行。例如,在此处描述的方法和***可在一些应用中使用较少的处理资源,以获得比用之前可用的相似性搜索法搜索出的相似或者更准确的搜索结果。
如图2所示,在示例性实施例中,周期性执行所述索引生成方法202,以索引存储在对象数据库206中的非结构性数据对象208。例如,当添加、修改或者删除存储在所述对象数据库206中的对象208导致所述对象数据库206发生达到阈值水平的变化时,可以执行索引生成方法202。另外地或可替代地,索引生成方法202可以基于预定义的计划(比如,每小时、每天或每星期)来执行。在示例性实施例中,当接收到查询对象时,执行相似性搜索204。在一些示例性实施例中,对象数据库206可以是包括存储于多个数字信息库中的复杂数据对象208的分布式数据库,所述多个数字信息库由不同的实体机或虚拟机在一个或者多个位置托管。
下面将根据示例实施例以更详尽的细节描述为n个存储在对象数据库206中的对象208生成索引结构219的索引生成方法202。索引生成方法202从特征提取过程210开始。在特征提取过程中,从包括于对象数据库206的所述非结构性数据对象208中提取信息,为所述n个数据对象208的每个数据对象产生对应的原始特征向量vi。例如,包括于对象数据库206中的所述非结构性数据对象208可以是视频数据对象、音频数据对象、图像数据对象、文本数据对象之一,或者其它非结构性数据对象。例如,图像对象208的每个图像对象都可以由各自的从所述原始图像数据的颜色直方图中获得的原始特征向量vi表征,视频对象208中的每个视频对象都可以由各自的从所述原始视频数据的尺度不变特征转换(scale-invariant feature transform,简称SIFT)或者3D-SIFT获得的或者从区分视频描述符(discriminate video descriptor,简称DVD)获得的原始特征向量vi表征。许多不同的特征向量格式因为表征不同的数据对象种类而被熟知,这些格式中的任一格式都适用于特征提取过程210,可将数据对象208转化为各自的原始特征向量V1-Vn。在图2的示例中,所述原始特征向量V1-Vn(共计n个数据对象)都存储在主表250中。在主表250中,V1-Vn中的每个原始特征向量都被存储为对象ID及对应的d-维度特征列表,所述d-维度特征列表包括d个归一化特征值fv1-fvd(例如Vj={fv1,fv2,…fvd})的,其中,fv1-fvd中的每个特征值都归一化于0到1之间。所述对象ID可以直接或者间接地指向在所述对象数据表中的存储地址,这些存储地址存储着所述原始特征向量V1-Vn表征的所述非结构性数据对象208。
随后,在所述原始特征向量V1-Vn的每个原始特征向量上执行降维过程214,以把所述高维原始特征向量转化为各自低维紧凑特征向量K1-Kn。虽然可以使用不同的降维算法,在至少一个示例性实施例中,降维过程214采用使用正交角哈希函数的局部敏感哈希法(locality sensitivity hashing,简称LSH)算法,把d-维度的原始特征向量V1-Vn转化为各自的m-维度的紧凑特征向量K1-Kn。在这方面,图3示出了生成所述正交角哈希函数的算法的伪代码表征,所述函数随后在降维过程214中被采用,把原始特征向量转化为各自的紧凑特征向量。图3的算法可当作先于索引生成过程202的配置步骤执行,获得的哈希函数被存储为LSH函数表,以备后用。
图3的算法提供了预定义的输入,这些输入包括:将会采用所述哈希函数的所述原始特征向量Vj的维度(d)(数据点维度=d);将会被包括在每个正交角哈希函数链Gi中的哈希函数的数量(m);以及总共哈希族大小Fs(例如,选择获得所述m个哈希函数的哈希函数总数)。图3的算法的输出是一组有L个正交角哈希函数链Gi,其中,i为从1到L的数。每个正交角哈希函数链Gi包括m个哈希函数hj(用Gi=(h1,h2,…,hm表示),其中,h1,h2,…,hm是从所述Fs哈希函数族中随机挑选的哈希函数)。如图3所示,生成随机的L×d矩阵H,其中,矩阵H的元素x从正态分布中独立采样。随后,执行矩阵H的QR分解(其中,H=QR,并且假定d≤Fs),以确定所述正交矩阵Q。在QR分解后,在获得的m×L矩阵Q的每一列提供有m个元素的正交向量(即正交角哈希函数链Gi)。相应地,在所述矩阵Q的每一列都提供各自的包括m个哈希函数hj的正交角哈希函数链Gi(也被称为LSH表),其中,1≤j≤m(Gi=(h1,h2,…,hm))。图3提供了适用哈希函数生成算法的一个示例。在其它示例性实施例中,可以使用不同已知的哈希生成算法代替图3的算法,以生成适用复合LSH函数链,以供在此处描述的所述索引生成和搜索过程中使用。
一旦生成所述正交角哈希函数链Gi,就可以获得可在降维过程214中使用的所述哈希函数,以将每个d-维度的原始特征向量Vj简化成各自m-维度的紧凑特征向Kj。在这方面,图4示出了生成紧凑特征向量K1-Kn的哈希值矩阵E算法的伪代码表征。
在示例性实施例中,存储在主表250中的为所述原始特征向量V1-Vn的每个原始特征向量的所述特征向量值都已被归一化。对于每个所述特征向量值,直接计算在所述哈希函数和所述特征向量值间的内积。得到的结果为cos(哈希函数、特征向量值)被称为角距离。为确定所述特征向量值位于哪个超平面,对所述结果采用sign()的操作,在特征向量值-1或1上为每个哈希函数提供输出。为了简化数字存储,哈希值-1当作0处理。图4所示的算法是可以获得复合哈希值的一个适用哈希法算法的示例,可在其它示例实施例中使用其它简化d-维度向量为m-尺寸向量的正交哈希法算法。
相应地,降维过程216采用LSH算法,以简化每个d-长度的原始特征向量为m-长度的二进制序列,由所述紧凑特征值Kj=Gi(Vj)={h1(Vj),h2(Vj),…,hm(Vj)}表征。所述紧凑特征值Kj的所述二进制序列中的每个二进制值都是对特征向量Vj的所有特征值fv1-fvd使用哈希函数链Gi中的所述m个哈希函数(h1,h2,…,hm)的各自一个函数得到的哈希函数结果。例如,在紧凑特征向量Kj中的第一个二进制值是原始特征向量Vj的特征值fv1-fvd采用哈希函数h1进行哈希的结果。图5示出了获得的紧凑特征向量组502,所述向量组被表示为哈希值表,其中,此表中的每行表征各自的紧凑特征向量Kj。每个紧凑特征向量都有各自的标识(identifier,简称ID)Kj(其中,1≤j≤n)和一个由m个二进制值组成的序列。在图5中,m=32。在示例性实施例中,所述ID Kj是指向组成紧凑特征向量216的所述一列m个二进制值的存储器指针。在示例性实施例中,每个紧凑特征向量Ki或者与指向所述紧凑特征向量Ki表征的所述原始特征向量Vi的指针(例如,对象ID)相关联,或者包括指向所述紧凑特征向量Ki表征的所述原始特征向量Vi的指针(例如,对象ID)。
再次参照图2,在生成所述紧凑特征向量组502之后,由随机提取森林(randomdrawforest,简称RDF)索引结构生成过程218生成相应的索引结构219。在这方面,图6根据示例性实施例示出了在所述RDF索引结构生成过程218期间执行的步骤。
为便于参考,下表1提供了与RDF索引结构生成过程218相关的参数概况。
表1:
如步骤602所示,对所述紧凑特征向量组502采用随机组合排列SP(1)-SP(ns),以生成ns个扭曲紧凑特征向量组THV Set(1)-THV Set(ns)。图7中描述了步骤602的示例。随机生成组合排列SP(1)-SP(ns),随后,运用组合排列SP(1)-SP(ns),以随机组合在所述紧凑特征向量组502中的哈希值的列位置到各自的扭曲紧凑特征向量组THV Set(1)-THV Set(ns)中的不同列位置。如上所述,每个紧凑特征向量Kj包括m个二进制值。在一个示例性实施例中,使用所述紧凑特征向量组502的每个紧凑特征向量Kj的s位比特的第一子集作为段ID,在步骤602中,仅仅组合每个紧凑特征向量Kj的(m-s)位比特。相应地,在示例性实施例中,每个组合排列SP(1)-SP(ns)指定所述紧凑特征向量的随机重组次序。作为示例,在图7中,在所述组合排列SP(1)-SP(ns)中每个位置都与所述扭曲紧凑特征向量组THV Set(1)-THVSet(Ns)中的对应比特位置列相对应,所述位置的值指的是所述紧凑特征组502的比特位置列c+s,其当作源二进制值使用,以填充在所述扭曲紧凑特征向量组THV Set(i)中的列。
例如,在图7中,m=32,s=4。组合排列SP(1)的第一个位置的第一个值是15,这意味着在紧凑特征组502中的紧凑特征向量K1的第19位(15+s)哈希值比特(是一个“1”)将会被重新定位到在THV Set(1)中的紧凑特征向量K1的第一个组合哈希值比特位置,如行702所示。相应地,随机组合排列步骤602生成所述紧凑特征向量K1-Kn的ns个扭曲哈希值版本。在每个扭曲哈希值版本中,哈希值比特次序参考所述紧凑特征组502的次序随机组合。然而,在每个THV Set中,所述随机组合次序对于所述所有的紧凑特征向量K1-Kn都是一样,以使在整个组合过程中列向相似点都可以被保持。通过生成所述紧凑特征向量组502的ns个扭曲版本,可以缓解前面提到的MSB问题,因为不再存在任何对于任何特定的哈希值比特次序分组的偏向。如图7的THV Set所示,在示例性实施例中,预先放置段ID的s位比特到所述THV Sets的每一组中的所述紧凑特征向量Kj的每个紧凑特征向量的(m-s)位组合比特的前面。把所述紧凑特征向量Kj的前s位比特当作段ID使用,以支持下文描述索引的并行,尤其是,当可能的段ID数量是2s时。
如图7所示,每个在THV Set中的扭曲紧凑特征向量Kj都是采用对应所述THVSet的所述组合排列(例如,在THV Set(1)情况下的SP(1))到各自数据对象的所述紧凑特征向量Ki而产生的组合二进制序列。
再次参见图6,RDF索引结构生成过程218中的下一个任务(604)是为所述扭曲紧凑特征向量组THV Set(1)-THV set(ns)的每个扭曲紧凑特征向量组生成各自的LSH索引表T(1)-T(ns)。LSH索引表生成任务604(在图6中示为步骤610至步骤622)在述扭曲紧凑特征向量组THV Set(1)-THV set(ns)的每个扭曲紧凑特征向量组中重复执行,得到ns个LSH索引表。
下面结合图8对在扭曲特征向量组THV Set(y)(其中,1≤y≤ns)的背景下的LSH索引表生成任务604进行描述。图8以图形的方式示出了结合紧凑特征向量组THVSet(y)时执行LSH索引表生成任务604,以生成对应的LSH索引表T(y)的步骤。图8说明了生成所述LSH索引表T(y)的中间阶段801A、801B、801C和801D。表802是在LSH索引表T(y)中索引的所述紧凑特征向量组THV Set(y)的十进制表征。特别地,在表802中,列“段”是所述各自的扭曲紧凑特征向量Ki的前4位比特(例如,段ID)的十进制值,列“级别1”是之后7位比特的十进制值(例如,前7位组合比特),列“级别2”是再后7位比特的十进制值,列“级别3”是再后7位比特的十进制值,列“级别4”是再后7位比特的十进制值。所以,在图8的示例中,由于m=32,s=4,且组合比特每一扭曲紧凑特征向量Kj的数量是m-s=28,7-比特级别的数量是4。在图8的示例中,假设十进制段ID=9,则所述段ID比特是“1001”。
如图8所示,LSH索引表T(y)是包括两种节点的索引树状结构,这两种节点分别为k-节点和d-节点表示。相应地,在示例性实施例中,每个LSH索引表T(y)都是d-节点/k-节点搜索树状结构的版本。如图8底部所示的LSH索引表T(y)包括两个级别的d-节点(第一级别或者根d-节点(d-节点(1))和第二级别d-节点(d-节点(2)))和五个k-节点(k-节点(1)到k-节点(5))。k-节点(1)到(5)的每个节点对应所述紧凑特征向量组THV Set(y)的各自的紧凑特征向量K1-K5。在示例性实施例中,每个LSH索引表T(y)包括n个k-节点,其中,n是紧凑特征向量Kj的数量。
每个d-节点(i)都是li个槽位的整数列(在图中用槽位()表示,且在图8中编号为槽位(0)-槽位(127),其中,li=128),其中,li小于或等于预定义的槽位最大值l。每一d-节点级别的槽位数li是可变的。每个d-节点槽位()对应紧凑特征向量K的桶,其中,所述紧凑特征向量K已被标识为相互之间的相似性达到了相似性阈值。每个k-节点包括两个域,即键804和点806。键804是指向所述原始特征向量(例如,K1指向V1)的对象ID;点806存储在同一槽位里的下一个k-节点的偏差(如果有)。使用d-节点槽位或者存储与所述槽位相关联的第一个k-节点的指针(假定与所述槽位相关联的k-节点的数量没有超过阈值Th),或者存储另一个d-节点级别(如果与所述槽位相关联的k-节点的数量没有超过所述阈值Th)。
如图6中步骤610所示,LSH索引表生成任务604以初始化l长度的d-节点为第一级别或者根d-节点(1)作为开始。如上所述,为了支持并行,每个紧凑特征向量K的前s位比特被当作段ID处理,所述段ID允许2s个段。要最大化每个扭曲紧凑特征向量组THV Set(y)的并行,所述数量是充足的。在示例性实施例中,确定用于分类或者定位对应的数据对象到各自的d-节点槽位的每个扭曲紧凑特征向Kj中的哈希值比特数为log2(l),d-节点的最大级别数是(m-s)/log(l)。如下文所述,任务604基于连续扭曲哈希比特的log2(l)长度组别之间的相似点,分类扭曲紧凑特征向量Kj到各自的d-节点槽位。在这方面,所述log2(l)比特组充当了相似性阈值。
在示例性实施例中,所述阈值Th表征无需进一步子分类就可以被分类到单个槽位的数据对象的数量。当超过所述阈值Th时,就需要进一步的分类或者排列,这可通过添加另一个d-节点级别实现,然后,所述扭曲紧凑特征向量可以基于另一个log2(l)比特组被进一步分类。所以,可以逐步使用紧凑特征向量的所述哈希值的更多位比特,来提供更多的d-节点索引级别。当在同一槽位下有超过Th数量的k-节点时,重新分配这些k-节点到LSH索引表(y)的所述哈希树状结构的下一个d-节点级别。
在图8所示的示例中,l=128;Th=3;s=4;m=32;m-s=28;log2(l)=7;组合排列SP(y)的28个值是{15,7,3,4,21,6,20,14,16,26,19,28,25,18,24,13,22,9,17,27,5,2,1,11,8,10,23,12};获得的在THV Set(y)中的第一个扭曲紧凑特征向量的32位比特二进制序列是:扭曲紧凑特征向量K1=1001001101000010001101101000010(包括紧随于28位组合比特的4位比特段ID)。(注意:在图8中的Kj的示例与图5和图7中的示例不是相同的二进制序列。)
相应地,在步骤610中,初始化所述第一级别或者根d-节点(1),以获得一段l=128个槽位(如图8的中间阶段801A所示)。如图6中的步骤612所示,为所述扭曲紧凑特征向量THV Set(y)获得下一个可用的扭曲紧凑特征向量Kj。为扭曲紧凑特征向量组执行第一个时间步612,下一个可用的扭曲紧凑特征向量将会是在THV Set(y)中的第一个紧凑特征向量,即K1。应理解的是,步骤602和步骤612进行组合,且特定的紧凑特征向量Kj的扭曲哈希值可以确定为步骤612的一部分,而不是在步骤602中被预先计算。
如步骤613所示,为所述紧凑特征向量Kj初始化各自的k-节点(i)。如上所述,所述k-节点(i)包括两个域,即键804和点806。相应地,在扭曲紧凑特征向量K1的示例里,设置k-节点(1)的所述键804域,使其指向所述各自的原始特征向量v1。在初始化新的k-节点时,k-节点的点806域初始设置为空。
如步骤614所示,随后,从所述扭曲紧凑特征向量Kj中提取得到段ID和槽位ID。在扭曲紧凑特征向量K1的当前示例中,前4位比特提供段ID=(1001)b=9。K1的下log2(l)=7位比特是(0011010)b=26,提供级别1标识为26的d-节点(1)槽位ID。
如步骤616所示,确定所述已标识的d-节点槽位(槽位ID)是否为空。如果所述槽位已被占用,如步骤618和图8中的阶段801A所示,更新对应槽位(例如,根d-节点(1)的槽位(26))的数值,使其指向在***存储器中的所述各自k-节点(例如,***存储器(如下文描述的***存储设备1408)中的k-节点的位置的地址(如上所述,所述k-节点(j)本身就指向对应的原始特征向量vi的地址)。
在更新所述各自的d-节点槽位之后,如步骤619所示,确定是否所有n个在所述扭曲紧凑特征向量组THV(y)中的所述紧凑特征向量都已被分类到所述TSH索引表T(y)中。如果是,所述LSH索引表T(y)就是完整的,所述THV set(y)终止执行任务604。否则,重复执行任务604。如步骤612所示,从所述THV set(y)中提取下一个紧凑特征向量Kj。在图8的示例里,下一个紧凑特征向量是K2。如图8中的阶段801B以及图6的步骤613和614所示,为所述紧凑特征向量K2初始化第二k-节点(2),提取所述段ID和级别1槽位ID(如表802所示,在当前示例中,与K1一样,所述K2段ID=9,级别1槽位ID=26)。在紧凑特征向量K2的情况下,在步骤616中,确定所述d-节点槽位(槽位ID)(例如,槽位(26))已被占用。相应地,如步骤620所示,随后,确定分配到没有d-节点***层的所述槽位(槽位ID)的k-节点数量是否超过所述阈值Th。如果在所述d-节点槽位(槽位ID)的k-节点数量等于或小于Th,则所述新的k-节点可以被包括在所述LSH索引表T(y)的哈希树中的这个槽位下。特别地,如步骤622所示,设定所述槽位(槽位ID)中的值,使其指向所述当前k-节点(i);且设定当前k-节点(j)的点域,使其指向之前被所述槽位(槽位ID)参考过的所述k-节点的地址。
在图8中,在阶段801B里,有表征步骤622的示例,所述示例示出了槽位(26)的数值被更新指向k-节点(2)。接下来,设定k-节点(2)的所述点806域,使其指向k-节点(1)(该节点之前已在槽位(26)中标识)。
在图8的示例中,为扭曲紧凑特征向量创建的所述k-节点(3)也有段ID=9,级别1槽位ID=26。如图8中的阶段801C所示,当处理扭曲紧凑特征向量K3时,初始化k-节点(3),使得k-节点(3)的键域指向所述原始特征向量v3的所述对象ID(按照执行步骤613);且按照执行步骤622,更新在d-节点(1)槽位(26)中的数值,使其指向k-节点(3),设定k-节点(3)的所述点806域,使其指向k-节点(3)。
在图8的示例中,为扭曲紧凑特征向量K4创建的所述k-节点(4)有段ID=9,级别1槽位ID=1(与K1至K3的值不同)。相应地,如图8中的阶段801D所示,在步骤616中,确定槽位(1)是空置的;且在步骤618中,更新在d-节点(1)槽位(1)中的值,使其指向k-节点(4)。
在图8的示例中,为扭曲紧凑特征向量K5创建的所述k-节点(5)也有段ID=9,级别1d-节点槽位ID=26(同样,与K1至K3的值相同)。在这种情况下,在步骤620中,确定在所述级别1d-节点槽位(26)下的k-节点数量超过所述阈值Th。如步骤624以及在图8底部的LSH索引表T(1)的最终版本所示,***k-节点(5)到所述LSH索引表,要求生成另外的d-节点级别(例如,第二级别d-节点(2)),并在较低级别d-节点的所述槽位中,重新分配在较高级别d-节点槽位的所述k-节点。如上所示,使用多个d-节点级别,高效地允许足够相似的对象被分类到单个d-节点级别槽位,所述槽位由扭曲哈希值比特值的匹配组所确定,以便进一步地排列到不同的子桶中。
在图8的k-节点(5)的示例中,通过初始化第二级别d-节点(2)来执行步骤624,以获得一段l=128个槽位。设定第一级别d-节点(1)槽位(26)的值,使其指向d-节点(2)的***存储地址(而不是直接指向k-节点)。k-节点(1)、(2)、(3)、(5)分配到第二级别d-节点(2)的所述槽位的步骤,与上文描述的关于所述第一级别相似。然而,使用所述扭曲紧凑特征向量中的不同组的扭曲哈希比特,以确定所述第二级别槽位ID,而不是所述第一级别槽位ID特别地,使用在所述扭曲紧凑特征向量K1、K2、K3和K5的每个扭曲紧凑特征向量中的哈希比特的后log2(l)组。所以,在K1=10010011010000100011011010000101的示例中,前4位比特提供段ID=(1001)b=9,后log2(l)位=7比特(0011010)b=26提供标识为26的级别1d-节点(1)槽位ID,后log2(l)=7比特(0001000)b=8提供标识为8的级别2d-节点(2)槽位ID。在图8的示例中,k-节点(1)、(2)和(3)都有标识为9的相同的第二级别槽位ID(如表802所示),相应地,都被分配到第二级别d-节点(2)槽位(9)。特别地,d-节点(2)槽位(9)指向k-节点(3),所述k-节点(3)指向k-节点(2),所述k-节点(2)指向k-节点(1)。然而,K5哈希比特12至18位标识第二层d-节点段ID为4,相应地,k-节点(5)被分配到第二层d-节点槽位(4)。
重复执行LSH索引表生成任务604中的步骤610-622,直到在扭曲紧凑向量组THVSet(y)中的所有所述紧凑特征向量K1-Kn都被索引至各自的LSH索引表T(y)。如在表802中的级别1-4的4列所示,在图8的示例中,d-节点的最大级别(Dmax)为4。在一些示例性实施例中,当达到LSH索引表T里槽位的d-节点的所述最大级别(Dmax)时,忽略所述阈值Th,且在所述Damx d-节点级别中k-节点链的长度不受限制。
为所有ns个扭曲紧凑特征向量组THV Set(1)-THV Set(ns)重复执行LSH索引表生成任务604,以生成ns个各自LSH索引表T(1)-T(ns),其中,所述索引表作为索引结构219被共同存储在***存储器,例如下文描述的***存储设备1408,中。
相应地,索引结构219包括ns个LSH索引表T(1)-T(ns),其中,每个LSH索引表都包括d-节点和k-节点的树状结构。T(1)-T(ns)中的每个索引表对应各自的组合排列。每个d-节点包括一组槽位,其中每个槽位都有各自的槽位ID,至少一些所述槽位或者被与所述槽位关联的k-节点的指针占用,或者被与所述槽位关联的下一级别d-节点的指针占用。每个k-节点包括一个对应的数据对象的指针(例如,对象ID),其中,至少一些所述k-节点也包括另一个k-节点的指针。在T(1)-T(ns)中的每个LSH索引表中,每个k-节点都基于所述k-节点对应的数据对象的所述组合序列(使用所述索引表对应的所述组合排列生成)的第一子序列(例如,在所述段ID后的log2(l)位比特)与根d-节点(例如,d-节点(1))的槽位相关联。
当与所述根d-节点的槽位关联的k-节点的数量超过阈值Th,会在所述LSH索引表中加入下一级别的d-节点(例如,d-节点(2)),与所述根d-节点的槽位相关联;随后,每个与所述根d-节点的槽位相关联的k-节点都基于所述k-节点对应的数据对象的所述组合序列的第二子序列与所述下一级别的d-节点的槽位相关联,其中,所述第二子序列使用所述LSH索引表对应的所述组合排列生成。
作为总结,如图6和图8所示,每个数据对象都被表征为ns个不同的组合序列。在所述ns个LSH索引表T(1)-T(ns)中的每个索引表中索引每个数据对象,步骤如下。
步骤1:对于每个索引表T(y),其中,y介于1和ns之间:加入所述数据对象对应的k-节点到所述索引表T(y)。
步骤2:基于使用所述索引表对应的组合排列(例如,在索引表T(1)的情况下的SP(1))生成的所述数据对象的组合序列(例如:在所述段ID后面的所述log2(l)位比特),为所述加入的k-节点确定根d-节点槽位ID。
步骤3A:如果对应根d-节点槽位ID的根d-节点的所述槽位是空置的,则更新所述槽位,以包括所述加入的k-节点的指针。
步骤3B:如果确定所述根d-节点的槽位被一个不一样的k-节点的指针占用,则不执行步骤3A:(i)如果已经有阈值数量的k-节点与所述根d-节点的槽位相关联,加入下一级别d-节点(例如,d-节点(2))到所述索引表T(y);用所述下一级别的d-节点的指针替换占着所述根d-节点的槽位的所述指针;基于所述数据对象的所述组合序列(例如:用于确定所述根d-节点槽位ID的在所述log2(l)位比特后的下一组log2(l)位比特),为所述加入的k-节点确定下一级别d-节点槽位ID;所述加入的k-节点的指针被包括在对应所述下一级别d-节点槽位ID的所述下一级别d-节点槽位;将占据所述根d-节点的槽位的所述不一样的k-节点的所述指针(例如,POINT)到加入到所述加入的k-节点;或者(ii)与所述槽位相关联的k-节点的数量还没有达到所述阈值,则:为所述加入的k-节点更新所述指针到所述槽位,并把占用所述根d-节点的槽位的指针加入到所述加入的k-节点。
步骤3C:如果确定所述根d-节点的槽位被下一级别d-节点的指针占用,则不执行步骤3A或者步骤3B:基于使用所述索引表对应的所述组合排列生成的所述数据对象的所述组合序列,为所述加入的k-节点确定下一级别的d-节点槽位ID。然后,使用所述下一级别d-节点以及下一级别d-节点槽位ID代替所述根d-节点以及根d-节点槽位ID,重复执行步骤3A。如有必要,重复执行步骤3B和3C。
在一些示例中,可以按照要求加入额外的d-节点级别,直到所有的数据对象都被索引再停止加入,在一些示例中,加入超过阈值数量的d-节点级别之后,可以重写能够与d-节点槽位相关联的k-节点的所述阈值数量,以允许所有数据对象在阈值数量的d-节点级别中被索引。
在示例性实施例中,上文描述的所述索引生成方法202可以概述为以下在特征提取处理过程210后的大体步骤。步骤1:计算输入原始特征向量vi的所述LSH哈希值,以产生相应的紧凑特征向量Kj。前s位比特紧凑特征向量Kj当作段ID使用。随后,使用由随机组合排列组合的所述段ID后的所述紧凑特征向量Kj的后log2(l)位比特,以生成从0到l的整数区间,以作为索引表(例如,LSH索引表T(y))的第一级别(例如,d-节点(1))的槽位的槽位ID。步骤2:如果所述槽位还没有被占用,更新所述槽位,使其指向原始特征向量vi的地址。步骤3:如果所述槽位已被占用,且在这个槽位下的对象数量小于或等于Th,则在所述槽位下加入k-节点。如果在这个槽位下的对象数量大于Th,则在所述槽位下加入新的d-节点级别,随后执行步骤4:使用所述组合排列中的后log2(l)个项目,以提供紧凑特征向量Kj的相应的log2(l)位比特,作为在所述新d-节点中的槽位ID,且所述k-节点在这个新的d-节点中重新分配。
在示例性实施例中,对于在LSH索引表T(y)中的每个d-节点级别,可以为槽位数li设定不同的值,如图9所示。所述可变的li控制比特的数量,以定位被LSH索引表T(y)定义的哈希树的不同d-节点级别中的对象。例如,在一个示例中,l=32,log2(l)=5,使用所述紧凑特征向量的5位比特,以确定所有d-节点级别的槽位。通过这样的设计,每个d-节点级别以相同的分辨率度进行处理。或者,可以为不同的级别使用不同的分辨率。例如,对于第一级别d-节点(1),可以使用较短的l1,所述l1使得有少量相似对象的数据集获取足够的高效候选。在较低级别中,可以逐渐增加比特位数,且l1<l2<l3。使对象级别更深的唯一条件是在同一槽位下的所述“相似”对象的数量大于或等于Th。因此,对于所述第二级别,应增加所述分辨率,以使这些“相似”对象分为不同的相似性更高的“相似”组。
所以,在示例性实施例中,索引结构生成过程218实现随机提取,以产生随机提取森林(random draw forest,简称RDF)索引结构219。在所述随机提取中,每个LSH索引表T(y)表征各自在所述RDF索引结构219中的树。在索引结构生成过程218中执行的所述随机提取是所述随机生成的组合排列(SP)的功能。
再次参阅图2,下文描述相似性搜索法204。接收查询对象220。在一示例性实施例中,所述查询对象220是非结构性对象数据,例如,图像文件、视频样本、音频样本或者文本字符串。如特征提取过程222所示,用与在特征提取过程210中把数据对象208转化为原始特征向量的相同的方法,把查询对象220转换为原始查询特征向量Qv;随后,执行同样的过程和之前生成的关于降维过程214的上文描述的哈希函数,在降维过程226中,转化所述获得的原始查询特征向量Qv为m-长度的二进制序列紧凑查询向量Qk。
随后,结合搜索过程230的所述索引结构219,处理所述紧凑查询向量Qk。在一示例性实施例中,通过对所述紧凑查询向量Qk采用所述之前提过的组合排列SP(1)-SP(ns)中的每个组合排列,生成所述紧凑查询向量Qk的ns个组合版本Qks(1)-Qks(ns)。使用这些ns个组合版本Qks(1)-Qks(ns)的每个组合版本,搜索各自的LSH索引表T(1)-T(ns)。例如,使用根据组合排列SP(y)已被组合的紧凑查询向量Qks(y),搜索对应的LSH索引表T(y)。特别地,使用紧凑查询向量Qks(y)的第一组log2(l1)位比特(不包括用于段ID的s位比特)为LSH索引表T(y)的所述根(例如,第一级别)d-节点(1)确定槽位ID。如果所述第一级别d-节点(1)的匹配槽位指向k-节点,则返回所有地址在所述槽位下的所述k-节点中的数据对象208为候选结果对象232。如果所述第一级别d-节点(1)的所述匹配槽位指向第二级别d-节点,则使用紧凑查询向量Qks(y)的下一组log2(l2)位比特为LSH索引表T(y)的所述第二级别d-节点(2)确定槽位ID,返回没有中间节点d-节点的地址直接在所述匹配的d-节点(2)槽位下的所述k-节点中的任何数据对象208为候选结果对象232。如果所述匹配的d-节点(2)槽位指向另一个第三级别的d-节点(3),重复执行从所述紧凑查询向量Qks(y)中连续位比特确定额外的较低级别槽位ID的过程,直到在任一匹配的槽位下的所有k-节点都被处理以及所有的候选结果对象232都被返回。
相应地,在搜索过程230结束时,所述候选结果232包括对应所述组合查询向量Qks(1)-Qks(ns)的每个组合查询向量的数据对象208,所述组合查询向量Qks(1)-Qks(ns)在各自所述的LSH索引表T(1)-T(ns)中被标识。如图2中的项目232-240所示,随后,使用过滤过程234可以过滤所述候选结果232,以产生可以使用排位过程238排位的过滤结果236,以产生对象排位表作为最终结果250。例如,在过滤过程235中和排位过程238中所用的方法可能与现有的相似性搜索过程中使用的方法相似。
如上所述,所述索引生成方法202和相似性搜索法204使用解决MSB问题的随机提取森林(random draw forest,简称RDF)索引结构。使用上文描述的所述RDF索引结构219进行相似性搜索可能至少在一些应用中得到比之前方法更快、更准确的相似性搜索。通过提高被包括在候选结果中的高质量候选,当在相似性搜索中使用所述索引结构219时,可能至少在一些应用中实现比之前方法更好的接近最近邻性能(结果的准确度和质量),并至少与之前一些方法相比,具有更好的时间性能。
在示例性实施例中,基于上文描述的RDF(随机提取森林)的用于进行相似性搜索的所述索引生成方法包括:步骤1:基于所述输入原始特征向量,通过使用局部敏感哈希法,产生哈希值;步骤2:基于所述哈希值,通过使用随机提取,产生扭曲哈希值;步骤3:基于所述扭曲哈希值,通过执行自适应哈希树建造步骤,产生随机提取森林(多棵哈希树);步骤4:基于所述查询的原始特征,通过使用局部敏感哈希法,产生所述查询的哈希值;步骤5:组合所述查询的哈希值和随机提取森林,作为输入信息,通过执行相似性搜索策略,从数据集中产生所述查询的相似对象。
如上所述,在示例性实施例中,用在一个或者多个数字处理***上实现的软件(可包括一个或者多个软件模块)执行索引生成方法202和相似性搜索法204。在一些示例性实施例中,可在一个或者多个数字处理***上实现索引生成方法202和相似性搜索法204的示例,所述一个或者多个数字处理***作为虚拟机使用一个或者多个物理计算***实现。
图10示出了可以使用来实现索引生成方法202和相似性搜索法204中的一项或两项的数字处理***1410的示例。如图10所示,所述***1410包括至少一个处理单元1400。所述处理单元1400实现所述***1410的各种不同的处理操作。例如,所述处理单元1400可以执行数据处理、功率控制、输入/输出处理、或者能使所述***1410运行的任一其它功能。所述处理单元1400还可用于实现上文中更详尽地描述的部分或全部功能和/或实施例。每个处理单元1400包括任何用于执行一个或多个操作的合适的处理或计算设备。例如,每个处理单元1400可以包括微处理器、微控制器、数字信号处理器、现场可编程门阵列或专用集成电路或其组合。
所述***1410还包括一个或多个输入/输出设备1406或接口(例如接入到因特网或者其它网络的有线或者无线接口)。所述输入/输出设备1406允许与网络中的用户或其它设备进行交互。每个输入/输出设备1406包括向用户提供信息或从用户接收信息的任何合适的结构,如扬声器、麦克风、小键盘、键盘、显示器或触摸屏,其中,所述结构包括网络接口通信,以接收查询对象,传达搜索结果。
此外,所述***1410包括至少一个***存储设备1408。所述***存储设备1408存储所述***1410使用、生成或者采集的指令和数据。例如,所述***存储设备1408可以存储用于实现一些或者所有上文描述的所述处理单元1400执行的功能和/或实施例的软件指令或模块。***存储设备1408也可以包括用于存储对象数据库206、主表250、紧凑特征向量组502和索引结构219中的一项或者多项的存储器。***存储设备1408可以包括任何合适的瞬时性和/或非瞬时性存储和检索工具。可以使用任何合适类型的存储器,如随机存取存储器(random access memory,简称RAM)、只读存储器(read only memory,简称ROM)、硬盘、固态盘、光盘、用户识别模块(subscriber identity module,简称SIM)卡、记忆棒和安全数码(secure digital,简称SD)存储卡等。
再次参阅图2和图6,将会对使用处理***1410可以执行的索引生成方法202的一示例性实施例进行综述。在一示例性实施例中,在使用索引生成方法202期间,在包括多个LSH索引表T(1)-T(ns)的索引结构219中索引多个数据对象,所述LSH索引表中的每个LSH索引表都与各自组合排列SP(1)-SP(ns)相关联。在降维过程214中,为每个数据对象生成紧凑特征向量Kj。每个数据对象的所述紧凑特征向量Kj都包括表征所述数据对象的m个哈希值的序列。参照图6,在随机组合步骤602中,使用所述多个组合排列SP(1)-SP(ns),组合组成每个数据对象的所述紧凑特征向量Kj的所述哈希值的序列,为每个数据对象生成多个组合序列(例如,扭曲紧凑特征向量)。每个组合序列包括根据各自的所述组合排列组合SP(1)-SP(ns)组合获得的所述紧凑特征向量Kj的所述哈希值。如组成所述生成LSH索引表任务604的步骤中所述,基于所述组合序列,在多个索引表T(1)-T(ns)中索引每个数据对象,其中,每个索引表对应各自的所述组合排列SP(1)-SP(ns)的一个组合排列。共同存储所述多个索引表T(1)-T(ns)为所述多个对象的所述索引结构219。
参见图2,在搜索过程230中,执行所述多个数据对象的搜索,步骤如下:为查询对象生成紧凑查询特征向量,其中,所述紧凑查询特征向量包括表征所述查询对象的哈希值的序列;使用所述多个组合排列SP(1)-SP(ns)来组合所述哈希值序列,为所述查询对象生成多个组合查询序列;基于使用与所述索引表对应的所述组合排列SP(1)-SP(ns)生成的所述组合查询序列搜索T(1)到(Tns)的每个索引表,以标识与所述查询对象相似的候选数据对象。提供某些实施例的以上描述,以确保本领域任何技术人员能够根据本发明构造或使用装置、方法或处理器可读介质。
对于本领域技术人员而言,本文中所述实施例的各种修改可能是显而易见的,并且本文中所述方法和设备的一般原则可以适用于其它实施例。因此,本发明并非旨在限于本文中示出的实施例,而是在最广泛的范围内与本文中所公开的原理和新颖特征一致。
例如,尽管实施例结合比特进行描述,但其它实施例可以涉及非二进制和/或多比特符号。
Claims (18)
1.一种生成索引多个数据对象的索引结构的方法,其特征在于,包括:
对于每个数据对象:
为所述数据对象生成紧凑特征向量,其中,所述紧凑特征向量包括表征所述数据对象的哈希值序列;
使用多个组合排列组合所述哈希值序列,为每个数据对象生成多个组合序列,其中,每个组合序列包括根据所述组合排列中的一个各自的组合排列组合获得的所述紧凑特征向量的所述哈希值,每个组合排列都是为各自组合序列中的所述哈希值指定随机次序的随机组合排列;
基于所述组合序列在多个索引表中索引所述数据对象,其中,每个索引表都对应一个各自的组合排列,每个组合排列对应的所述索引表都是包括d-节点和k-节点的树状结构,所述树状结构的根节点为d-节点,每个d-节点包括一组槽位,其中每个槽位都有各自的槽位ID,至少一些所述槽位或者被与所述槽位关联的k-节点的指针占用,或者被下一级别的d-节点的指针占用,每个k-节点包括所述数据对象的一个对应的数据对象的指针,其中,至少一些所述k-节点也包括另一个k-节点的指针,对于每个索引表,每个k-节点都基于所述k-节点对应的数据对象的所述组合序列的第一子序列与根d-节点的槽位相关联,其中,所述第一子序列使用所述索引表对应的所述组合排列生成;
存储所述多个索引表为所述多个数据对象的所述索引结构。
2.根据权利要求1所述的方法,其特征在于,所述哈希值是二进制值,每个组合排列包括一个随机生成的组合数值序列,每个组合数值都在各自组合序列中为所述哈希值指定序列地址。
3.根据权利要求1或2所述的方法,其特征在于,每个数据对象由各自的包括多个从所述数据对象提取出来的特征值的原始特征向量表征,生成所述紧凑特征向量包括:根据哈希法对所述原始特征向量进行哈希,以生成所述哈希值序列。
4.根据权利要求3所述的方法,其特征在于,所述哈希法是使用接近最近邻(approximate nearest neighbour,简称ANN)哈希法函数的局部敏感哈希法(localitysensitive hashing,简称LSH)。
5.根据权利要求1或2所述的方法,其特征在于,对于每个索引表,当与所述根d-节点的槽位关联的k-节点的数量超过阈值,会在所述索引表中加入下一级别的d-节点,与所述根d-节点的槽位相关联;随后,每个与所述根d-节点的槽位相关联的k-节点都基于所述k-节点对应的数据对象的所述组合序列的第二子序列与所述下一级别d-节点的槽位相关联,其中,所述第二子序列使用所述索引表对应的所述组合排列生成。
6.根据权利要求1或2所述的方法,其特征在于,包括进行所述多个数据对象的搜索,步骤如下:
为查询对象生成紧凑查询特征向量,其中,所述紧凑查询特征向量包括表征所述查询对象的哈希值序列;
使用所述多个组合排列组合所述哈希值序列,为所述查询对象生成多个组合查询序列;基于使用对应所述索引表的所述组合排列生成的所述组合查询序列,搜索每个索引表,以标识与所述查询对象相似的候选数据对象。
7.一种索引多个数据对象的***,其特征在于,包括:
一个或者多个处理单元;
***存储设备,耦合至所述一个或者多个处理单元的每个处理单元,其中,所述***存储设备有形地存储可执行指令,当这些可执行指令被所述一个或者多个处理单元执行时,会使得所述***:
生成多个组合排列,其中,每个组合排列都与各自的索引表相关联;
对于在所述多个数据对象的每个数据对象:
为所述数据对象生成紧凑特征向量,其中,所述紧凑特征向量包括表征所述数据对象的哈希值序列;
为所述数据对象生成多个组合序列,其中,每个组合序列通过对所述数据对象的所述紧凑特征向量的所述哈希值序列采用各自的所述组合排列生成,每个组合排列都是为各自组合序列中的所述哈希值指定随机次序的随机组合排列;
基于使用与所述索引表相关联的所述组合排列生成的所述组合序列,在每个索引表中索引所述数据对象,每个组合排列对应的所述索引表都是包括d-节点和k-节点的树状结构,所述树状结构的根节点为d-节点,每个d-节点包括一组槽位,其中每个槽位都有各自的槽位ID,至少一些所述槽位或者被与所述槽位关联的k-节点的指针占用,或者被下一级别的d-节点的指针占用,每个k-节点包括所述数据对象的一个对应的数据对象的指针,其中,至少一些所述k-节点也包括另一个k-节点的指针,对于每个索引表,每个k-节点都基于所述k-节点对应的数据对象的所述组合序列的第一子序列与根d-节点的槽位相关联,其中,所述第一子序列使用所述索引表对应的所述组合排列生成;
在所述***存储设备中存储所述索引表为所述数据对象的索引结构。
8.根据权利要求7所述的***,其特征在于,所述哈希值是二进制值,每个组合排列包括一个随机生成的组合数值序列,每个组合数值都在各自组合序列中为所述哈希值指定序列地址。
9.根据权利要求7或8所述的***,其特征在于,每个数据对象由各自的包括多个从所述数据对象提取出来的特征值的原始特征向量表征,生成所述紧凑特征向量包括:根据哈希法对所述原始特征向量进行哈希,以生成所述哈希值序列。
10.根据权利要求9所述的***,其特征在于,所述哈希法是使用接近最近邻(localitysensitive hashing,简称ANN)哈希法函数的局部敏感哈希法(approximate nearestneighbour,简称LSH)。
11.根据权利要求7或8所述的***,其特征在于,当所述可执行指令被所述一个或者多个处理单元执行时,进一步使得所述一个或者多个处理单元去执行搜索,步骤如下:
为查询对象生成紧凑查询特征向量,其中,所述紧凑查询特征向量包括表征所述查询对象的哈希值序列;
使用所述多个组合排列组合所述哈希值序列,为所述查询对象生成多个组合查询序列;
基于使用与所述索引表相关联的所述组合排列生成的所述组合查询序列,搜索每个索引表,以标识与所述查询对象相似的候选数据对象。
12.一种计算机程序产品,其特征在于,包括有形地存储可执行指令的介质,当这些可执行指令被数字处理***执行时,会使得所述数字处理***:
生成多个组合排列,其中,每个组合排列都与各自的索引表相关联;
对于多个数据对象中的每个数据对象:
为所述数据对象生成紧凑特征向量,其中,所述紧凑特征向量包括表征所述数据对象的哈希值序列;
为所述数据对象生成多个组合序列,其中,每个组合序列通过对所述数据对象的所述紧凑特征向量的所述哈希值序列采用各自的所述组合排列生成,每个组合排列都是为各自组合序列中的所述哈希值指定随机次序的随机组合排列;
基于使用与所述索引表相关联的所述组合排列生成的所述组合序列,在每个索引表中索引所述数据对象,每个组合排列对应的所述索引表都是包括d-节点和k-节点的树状结构,所述树状结构的根节点为d-节点,每个d-节点包括一组槽位,其中每个槽位都有各自的槽位ID,至少一些所述槽位或者被与所述槽位关联的k-节点的指针占用,或者被下一级别的d-节点的指针占用,每个k-节点包括所述数据对象的一个对应的数据对象的指针,其中,至少一些所述k-节点也包括另一个k-节点的指针,对于每个索引表,每个k-节点都基于所述k-节点对应的数据对象的所述组合序列的第一子序列与根d-节点的槽位相关联,其中,所述第一子序列使用所述索引表对应的所述组合排列生成;
存储所述索引表为所述数据对象的索引结构。
13.一种搜索与查询对象相似的数据对象的方法,其中,每个数据对象都在多个索引表中被索引,每个索引表都与各自的组合排列相关联,其特征在于,包括:
为查询对象生成紧凑查询特征向量,其中,所述紧凑查询特征向量包括表征所述查询对象的哈希值序列;
通过对表征所述查询对象的哈希值序列采用与所述索引表相关联的所述组合排列,为每个索引表生成组合查询序列,每个组合排列都是为各自组合查询序列中的所述哈希值指定随机次序的随机组合排列;
使用为所述索引表生成的所述组合查询序列搜索每个索引表,以标识与所述查询对象相似的候选数据对象,每个组合排列对应的所述索引表都是包括d-节点和k-节点的树状结构,所述树状结构的根节点为d-节点,每个d-节点包括一组槽位,其中每个槽位都有各自的槽位ID,至少一些所述槽位或者被与所述槽位关联的k-节点的指针占用,或者被下一级别的d-节点的指针占用,每个k-节点包括所述数据对象的一个对应的数据对象的指针,其中,至少一些所述k-节点也包括另一个k-节点的指针,对于每个索引表,每个k-节点都基于所述k-节点对应的数据对象的组合序列的第一子序列与根d-节点的槽位相关联,其中,所述第一子序列使用所述索引表对应的所述组合排列生成。
14.根据权利要求13所述的方法,其特征在于,所述查询对象由包括多个从所述查询对象提取出来的特征值的原始特征向量表征,生成所述紧凑查询特征向量包括:根据哈希法对所述原始特征向量进行哈希,以生成所述哈希值序列。
15.根据权利要求13或14所述的方法,其特征在于,所述哈希法是使用接近最近邻(approximate nearest neighbour,简称ANN)哈希法函数的局部敏感哈希法(localitysensitive hashing,简称LSH)。
16.一个使能搜索与查询对象相似的数据对象的***,其中,每个数据对象都在多个索引表中被索引,每个索引表都与各自的组合排列相关联,其特征在于,包括:
一个或者多个处理单元;
***存储设备,耦合至所述一个或者多个处理单元的每个处理单元,其中,所述***存储设备有形地存储可执行指令,当这些可执行指令被所述一个或者多个处理单元执行时,会使得所述***:
为查询对象生成紧凑查询特征向量,其中,所述紧凑查询特征向量包括表征所述查询对象的哈希值序列;
通过对表征所述查询对象的哈希值序列采用与所述索引表相关联的所述组合排列,为每个索引表生成组合查询序列,每个组合排列都是为各自组合查询序列中的所述哈希值指定随机次序的随机组合排列;
使用为所述索引表生成的所述组合查询序列搜索每个索引表,以标识与所述查询对象相似的候选数据对象,每个组合排列对应的所述索引表都是包括d-节点和k-节点的树状结构,所述树状结构的根节点为d-节点,每个d-节点包括一组槽位,其中每个槽位都有各自的槽位ID,至少一些所述槽位或者被与所述槽位关联的k-节点的指针占用,或者被下一级别的d-节点的指针占用,每个k-节点包括所述数据对象的一个对应的数据对象的指针,其中,至少一些所述k-节点也包括另一个k-节点的指针,对于每个索引表,每个k-节点都基于所述k-节点对应的数据对象的组合序列的第一子序列与根d-节点的槽位相关联,其中,所述第一子序列使用所述索引表对应的所述组合排列生成。
17.根据权利要求16所述的***,其特征在于,所述查询对象由包括多个从所述查询对象提取出来的特征值的原始特征向量表征,生成所述紧凑查询特征向量包括:根据哈希法对所述原始特征向量进行哈希,以生成所述哈希值序列。
18.一种计算机程序产品,其特征在于,包括有形地存储可执行指令的介质,当这些可执行指令被数字处理***执行时,会使得所述数字处理***搜索与查询对象相似的数据对象,其中,每个数据对象都在多个索引表中被索引,每个索引表都与各自的组合排列相关联,通过使得所述数字处理***:
为查询对象生成紧凑查询特征向量,其中,所述紧凑查询特征向量包括表征所述查询对象的哈希值序列;
通过对表征所述查询对象的哈希值序列采用与所述索引表相关联的所述组合排列,为每个索引表生成组合查询序列,每个组合排列都是为各自组合查询序列中的所述哈希值指定随机次序的随机组合排列;
使用为所述索引表生成的所述组合查询序列搜索每个索引表,以标识与所述查询对象相似的候选数据对象,每个组合排列对应的所述索引表都是包括d-节点和k-节点的树状结构,所述树状结构的根节点为d-节点,每个d-节点包括一组槽位,其中每个槽位都有各自的槽位ID,至少一些所述槽位或者被与所述槽位关联的k-节点的指针占用,或者被下一级别的d-节点的指针占用,每个k-节点包括所述数据对象的一个对应的数据对象的指针,其中,至少一些所述k-节点也包括另一个k-节点的指针,对于每个索引表,每个k-节点都基于所述k-节点对应的数据对象的组合序列的第一子序列与根d-节点的槽位相关联,其中,所述第一子序列使用所述索引表对应的所述组合排列生成。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862637248P | 2018-03-01 | 2018-03-01 | |
US62/637,248 | 2018-03-01 | ||
US16/044,286 US10949467B2 (en) | 2018-03-01 | 2018-07-24 | Random draw forest index structure for searching large scale unstructured data |
US16/044,286 | 2018-07-24 | ||
PCT/CA2019/050205 WO2019165543A1 (en) | 2018-03-01 | 2019-02-20 | Random draw forest index structure for searching large scale unstructured data |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111868710A CN111868710A (zh) | 2020-10-30 |
CN111868710B true CN111868710B (zh) | 2024-05-14 |
Family
ID=67767721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980016647.4A Active CN111868710B (zh) | 2018-03-01 | 2019-02-20 | 搜索大规模非结构化数据的随机提取森林索引结构 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10949467B2 (zh) |
EP (1) | EP3752930B1 (zh) |
CN (1) | CN111868710B (zh) |
WO (1) | WO2019165543A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11074434B2 (en) * | 2018-04-27 | 2021-07-27 | Microsoft Technology Licensing, Llc | Detection of near-duplicate images in profiles for detection of fake-profile accounts |
US11449484B2 (en) * | 2018-06-25 | 2022-09-20 | Ebay Inc. | Data indexing and searching using permutation indexes |
US10977250B1 (en) * | 2018-09-11 | 2021-04-13 | Intuit, Inc. | Responding to similarity queries using vector dimensionality reduction |
EP3834098A4 (en) * | 2018-09-12 | 2021-08-11 | Avigilon Corporation | SYSTEM AND METHOD FOR IMPROVING THE SPEED OF SIMILARITY-BASED SEARCHES |
US11354293B2 (en) * | 2020-01-28 | 2022-06-07 | Here Global B.V. | Method and apparatus for indexing multi-dimensional records based upon similarity of the records |
US20230342792A1 (en) * | 2020-04-15 | 2023-10-26 | Xero Limited | Systems and Methods for Determining Entity Characteristics |
CN111552988B (zh) * | 2020-04-21 | 2023-05-02 | 西安电子科技大学 | 基于蒙特卡罗抽样的前向安全k近邻检索方法及*** |
JP2022043631A (ja) * | 2020-09-04 | 2022-03-16 | キヤノン株式会社 | 情報処理装置、情報処理方法及びプログラム |
CN112597348A (zh) * | 2020-12-15 | 2021-04-02 | 电子科技大学中山学院 | 一种大数据存储优化的方法及装置 |
US20220374432A1 (en) * | 2021-05-23 | 2022-11-24 | Gsi Technology Inc. | Associative graph search |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722554A (zh) * | 2012-05-28 | 2012-10-10 | 中国人民解放军信息工程大学 | 位置敏感哈希随机性减弱方法 |
CN104035949A (zh) * | 2013-12-10 | 2014-09-10 | 南京信息工程大学 | 一种基于局部敏感哈希改进算法的相似性数据检索方法 |
CN104391908A (zh) * | 2014-11-17 | 2015-03-04 | 南京邮电大学 | 一种图上基于局部敏感哈希的多关键字索引方法 |
CN105550332A (zh) * | 2015-12-21 | 2016-05-04 | 河海大学 | 一种基于双层索引结构的起源图查询方法 |
CN107656989A (zh) * | 2017-09-13 | 2018-02-02 | 华中科技大学 | 云存储***中基于数据分布感知的近邻查询方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7966327B2 (en) * | 2004-11-08 | 2011-06-21 | The Trustees Of Princeton University | Similarity search system with compact data structures |
US7647331B2 (en) * | 2006-03-28 | 2010-01-12 | Microsoft Corporation | Detecting duplicate images using hash code grouping |
US8447032B1 (en) | 2007-08-22 | 2013-05-21 | Google Inc. | Generation of min-hash signatures |
US8429216B2 (en) | 2008-09-23 | 2013-04-23 | Hewlett-Packard Development Company, L.P. | Generating a hash value from a vector representing a data object |
US20100106713A1 (en) | 2008-10-28 | 2010-04-29 | Andrea Esuli | Method for performing efficient similarity search |
US20130204905A1 (en) | 2012-02-07 | 2013-08-08 | Google Inc. | Remapping locality-sensitive hash vectors to compact bit vectors |
US10579661B2 (en) * | 2013-05-20 | 2020-03-03 | Southern Methodist University | System and method for machine learning and classifying data |
US20140344295A1 (en) * | 2014-07-30 | 2014-11-20 | Michael Shungkai Lam | Message based web content retrieval systems and computer implemented methods thereto |
US10649770B2 (en) * | 2017-01-31 | 2020-05-12 | Facebook, Inc. | κ-selection using parallel processing |
US11106708B2 (en) * | 2018-03-01 | 2021-08-31 | Huawei Technologies Canada Co., Ltd. | Layered locality sensitive hashing (LSH) partition indexing for big data applications |
-
2018
- 2018-07-24 US US16/044,286 patent/US10949467B2/en active Active
-
2019
- 2019-02-20 WO PCT/CA2019/050205 patent/WO2019165543A1/en unknown
- 2019-02-20 CN CN201980016647.4A patent/CN111868710B/zh active Active
- 2019-02-20 EP EP19760973.8A patent/EP3752930B1/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722554A (zh) * | 2012-05-28 | 2012-10-10 | 中国人民解放军信息工程大学 | 位置敏感哈希随机性减弱方法 |
CN104035949A (zh) * | 2013-12-10 | 2014-09-10 | 南京信息工程大学 | 一种基于局部敏感哈希改进算法的相似性数据检索方法 |
CN104391908A (zh) * | 2014-11-17 | 2015-03-04 | 南京邮电大学 | 一种图上基于局部敏感哈希的多关键字索引方法 |
CN105550332A (zh) * | 2015-12-21 | 2016-05-04 | 河海大学 | 一种基于双层索引结构的起源图查询方法 |
CN107656989A (zh) * | 2017-09-13 | 2018-02-02 | 华中科技大学 | 云存储***中基于数据分布感知的近邻查询方法 |
Non-Patent Citations (1)
Title |
---|
"LSH Forest:Self-Tuning Indexes for Similarity Search";Mayank Bawa.et;《the Tnternational World Wide Web Conference》;第4-6节 * |
Also Published As
Publication number | Publication date |
---|---|
US10949467B2 (en) | 2021-03-16 |
US20190272344A1 (en) | 2019-09-05 |
EP3752930A4 (en) | 2021-04-14 |
WO2019165543A1 (en) | 2019-09-06 |
CN111868710A (zh) | 2020-10-30 |
EP3752930A1 (en) | 2020-12-23 |
EP3752930B1 (en) | 2024-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111868710B (zh) | 搜索大规模非结构化数据的随机提取森林索引结构 | |
US11106708B2 (en) | Layered locality sensitive hashing (LSH) partition indexing for big data applications | |
Har-Peled et al. | Fast construction of nets in low dimensional metrics, and their applications | |
US7730316B1 (en) | Method for document fingerprinting | |
Norouzi et al. | Fast search in hamming space with multi-index hashing | |
JP3849279B2 (ja) | インデクス作成方法および検索方法 | |
JP5926291B2 (ja) | 類似画像を識別する方法および装置 | |
US8972415B2 (en) | Similarity search initialization | |
US7080091B2 (en) | Inverted index system and method for numeric attributes | |
CN107153647B (zh) | 进行数据压缩的方法、装置、***和计算机程序产品 | |
US20100106713A1 (en) | Method for performing efficient similarity search | |
CN109325032B (zh) | 一种索引数据存储及检索方法、装置及存储介质 | |
CN106326475B (zh) | 一种高效的静态哈希表实现方法及*** | |
US20130141259A1 (en) | Method and system for data compression | |
US20050149471A1 (en) | Computer representation of a data tree structure and the associated encoding/decoding methods | |
CN108304409B (zh) | 一种基于进位的Sketch数据结构的数据频度估计方法 | |
WO2017204965A1 (en) | Methods and apparatus to provide group-based row-level security for big data platforms | |
WO2016177830A1 (en) | Method, system and computer program product for performing numeric searches | |
US20180143979A1 (en) | Method for segmenting and indexing features from multidimensional data | |
WO2017053779A1 (en) | Data storage and retrieval system using online supervised hashing | |
US20220222233A1 (en) | Clustering of structured and semi-structured data | |
JP2017045291A (ja) | 類似画像検索システム | |
CN116821053B (zh) | 数据上报方法、装置、计算机设备和存储介质 | |
KR20100022565A (ko) | 해시트리를 이용한 url 검색방법 | |
WO2022153287A1 (en) | Clustering of structured and semi-structured data |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |