CN108027816B - 数据管理系统、数据管理方法及记录介质 - Google Patents
数据管理系统、数据管理方法及记录介质 Download PDFInfo
- Publication number
- CN108027816B CN108027816B CN201580083082.3A CN201580083082A CN108027816B CN 108027816 B CN108027816 B CN 108027816B CN 201580083082 A CN201580083082 A CN 201580083082A CN 108027816 B CN108027816 B CN 108027816B
- Authority
- CN
- China
- Prior art keywords
- vector
- search
- column
- index
- peripheral
- 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
Images
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3347—Query execution using vector based model
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
Abstract
实施方式的数据管理系统具备索引构筑器(200)和检索器(300)。索引构筑器(200)生成与事例矢量类似的周边矢量,且构筑用于根据周边矢量确定事例矢量的索引信息(40),所述事例矢量是所积蓄的数据的特征矢量。检索器(300)按照指定了作为任意的特征矢量的查询矢量的检索请求,使用索引信息(40),确定与查询矢量完全一致的周边矢量所对应的事例矢量,输出基于所确定的事例矢量的检索结果数据集(60)。
Description
技术领域
本发明的实施方式涉及数据管理系统、数据管理方法及记录介质。
背景技术
近年来,伴随信息通信技术的发展,能够进行多种多样数据的收集或积蓄、大数据分析或大媒体分析等这样的以大规模数据为对象的信息处理技术被关注。在处理这样的大规模数据的系统中,伴随数据规模的加速扩大的计算量的庞大化涉及到服务的劣化,所以如何能够削减计算量成为重要的课题。
在数据库检索等数据检索中,作为高速进行图像或音乐等媒体检索的方法,进行使用了多维的特征矢量的相似性检索。在该相似性检索中,包含特征矢量间的相似度计算的矢量附近检索、即、从成为检索对象的特征矢量(以下,将其称为“事例矢量”)群之中找出与某特征矢量(以下,将其称为“查询(query)矢量”)接近的特征矢量群的处理占据计算量的大多数。因此,希望能够削减矢量附近检索的计算量而缩短数据检索的执行时间。
发明内容
本发明要解决的课题是,提供能够削减矢量附近检索的计算量而缩短数据检索的执行时间的数据管理系统、数据管理方法及程序。
实施方式的数据管理系统具备索引构筑部和检索部。索引构筑部生成与作为所积蓄的数据的特征矢量的事例矢量类似的周边矢量,构筑用于确定与所生成的所述周边矢量对应的所述事例矢量的索引信息。检索部按照指定了作为任意的特征矢量的查询矢量的检索请求,使用所述索引信息,确定与所述查询矢量完全一致的所述周边矢量所对应的所述事例矢量,输出基于所确定的所述事例矢量的检索结果。
根据上述构成的数据管理系统,能够削减矢量附近检索的计算量而缩短数据检索的执行时间。
附图说明
图1是表示第一实施方式的数据管理系统的概要的系统结构图。
图2是表示数据表的具体例的图。
图3是表示在媒体数据为静止图像的情况下的由数据登记器进行的处理过程的一例的流程图。
图4是表示在媒体数据为动态图像的情况下的由数据登记器进行的处理过程的一例的流程图。
图5是表示索引构筑器的结构例的框图。
图6是表示LSH立即值表的一例的图。
图7是表示由LSH立即值索引信息生成器进行的处理过程的一例的流程图。
图8是表示LSH附近展开表的一例的图。
图9是表示将LSH附近展开表分割为两个而归一化后的例子的图。
图10是表示数据库复合索引的一例的图。
图11是表示由LSH附近展开索引信息生成器进行的处理过程的一例的流程图。
图12是说明关联数组和连续存储器配置型数组的图。
图13是表示检索器的结构例的框图。
图14是表示矢量类似性判断部的输入输出关系的图。
图15是表示由矢量类似性判断部进行的处理过程的一例的流程图。
图16是表示由严格检索器进行的处理过程的一例的流程图。
图17是表示由线性LSH检索器进行的处理过程的一例的流程图。
图18是表示由数据库索引LSH检索器进行的处理过程的一例的流程图。
图19是表示由数据库索引LSH检索+严格检索器进行的处理过程的一例的流程图。
图20是表示由数据库索引LSH检索+线性LSH检索器进行的处理过程的一例的流程图。
图21是表示第二实施方式的检索器的结构例的框图。
图22是表示由查询扰动型LSH检索器进行的处理过程的一例的流程图。
图23是表示第三实施方式的索引构筑器的结构例的框图。
图24是表示PQLSH附近展开表的一例的图。
图25是表示由PQLSH附近展开索引信息生成器进行的处理过程的一例的流程图。
图26是表示第三实施方式的检索器的结构例的框图。
图27是表示由数据库索引PQLSH检索器进行的处理过程的一例的流程图。
图28是表示数据管理系统的硬件结构例的框图。
具体实施方式
以下,参照附图详细说明实施方式的数据管理系统、数据管理方法及程序。
实施方式的数据管理系统是用于高效地管理·检索大规模数据的系统。被视为数据库管理系统的管理大规模数据的以往的系统一般而言搭载有对盘存取等进行优化的数据配置机构作为下位层,搭载有用于基于检索条件对大规模数据进行高速检索的索引机构作为上位层。在索引的算法中,主要使用B树等树结构算法、或一般的散列(Hash)算法。
在大多数的情况下,在数据库中可利用的检索条件是由与实数·整数·字符串·日期等基本型(以下,将它们总称而称为“DB基本型”)相关的四则运算·集合运算等构成的逻辑式。关于矢量或比特串(即二值矢量)彼此的类似性,除了一部分例外之外,通常不能用作检索条件。在该背景中,有时并没有考虑将包含矢量的相似度计算的检索条件高效化的索引。
上述的一部分例外是以低维矢量为对象的相似度计算。在大多数著名的数据库管理系统中,设想主要管理时空间数据的用途,能够将2~4维左右的低维的矢量的相似度计算包含于检索条件。在该相似度计算的实现中,使用被称为空间树(空间分割法)的索引方法,由此能够进行高速的检索。但已知在矢量不是低维的情况下,由于索引尺寸的庞大化而失去高速化的效果,执行时间与通常的线性检索相比没有差别。在实施方式中设想的特征矢量例如是设想了机械学习用途的几百~几亿维的高维矢量,所以即使使用基于空间树的方法也不能实现高速的检索。
但是,能够对高维矢量的完全一致进行高速对照。在该情况下,等价于以AND将对于两个矢量的各维要素的等号条件结合而成的条件下进行检索。即,该检索条件仅由标量运算构成,不包含矢量的相似度计算,所以能够利用B树等的索引。
如上所述,以往的一般的数据库管理系统能够进行在由DB基本型构成的检索条件下的大规模数据的高速检索,但不能高速执行包含不是低维的矢量间的相似度计算的矢量附近检索。因此,在以下所示的实施方式中,提出一种通过削减矢量附近检索的计算量从而能够高速执行矢量附近检索、能够缩短数据检索的执行时间的新的数据管理系统。
另外,作为表示矢量间的相似度的指标,有内积和距离。求取矢量间的内积值的内积计算和求取矢量间的距离的距离计算的含义和计算量都大致相同。不同点仅为,在两个矢量类似的情况下,内积值变大但距离变小。也就是说,矢量间的内积值大、和矢量间的距离小都意味着矢量间的相似度高。以下,说明以距离来表示矢量间的相似度的情况,但也可以将距离置换为内积。在该情况下,认为矢量间的距离越小、也就是说矢量间的相似度越高则内积值变得越大即可。
作为削减矢量附近检索的计算量的方法,考虑使用LSH(局部敏感散列(Locality-Sensitive Hashing))。LSH是将被给予的矢量群映射到仅取离散值的收缩矢量空间的技术(例如,参考下述的参考文献1)。该基于LSH的映射有如下性质:映射前的空间中的矢量间的距离的相对大小在映射后的空间中也较好地保存。从而,代替在映射前的矢量空间中计算矢量间距离,而在映射后的矢量空间中计算矢量间距离,从而能够将计算高效化。其中,不需要将距离的大小关系完全地保存,所得到的是近似解。
参考文献1:Anshumali Shrivastava and Ping Li,“Asymmetric LSH(ALSH)forSublinear Time Maximum Inner Product Search(MIPS)”,Advances in NeuralInformation Processing Systems,2014.
作为LSH算法,至今为止,例如提出了下述的参考文献2所示的SimHash(随机投影(Random projection))、或下述的参考文献3所示的谱散列(Spectral Hashing)等各种算法。
参考文献2:Moses S.Charikar,“Similarity Estimation Techniques fromRounding Algorithms”,Proceedings of the 34th Annual ACM Symposium on Theory ofComputing,pp.380?388、doi:10,1145/509907,509965.
参考文献3:Yair Weiss,Antonio Torralba and Rob Fergus,“SpectralHashing”,Advances in neural information processing systems,2009.
LSH算法能够大体二分为按位(bit-wise)方式和乘积量化(ProductQuantization)方式。按位方式的算法输出二值矢量作为对于被给予的矢量的映射结果。另一方面,乘积量化方式的算法输出整数矢量(仅由整数的要素构成的多值矢量)作为对于被给予的矢量的映射结果。此外,在乘积量化方式的算法的情况下,还按照矢量的各维来结合与对距离的权重相当的信息(相对于各维的变化,矢量的距离变化了多少)进行生成。
如上述那样,使用由LSH映射的矢量,从而能够将矢量间距离的计算高效化。特别是在二值矢量的情况下,能够对距离计算处理使用xor等比特运算指令、或者popcount等专用CPU指令,所以能够大幅度削减计算量。
但是,即使使用LSH,也不能避开矢量间距离的计算本身。在以往的数据库管理系统中,如上述那样,没有考虑对于伴随有不是低维的矢量的距离计算的检索处理有效的索引算法,所以需要进行线性检索,不能将计算量量级设为亚线性。其结果是,在成为检索对象的事例矢量的数目例如为1亿等大规模的情况下,需要较多的检索时间。因此,提出导入了对伴随有不是低维的矢量的距离计算的检索处理有效的索引算法的、新的数据管理系统。
在此,说明实施方式的基本原理。实施方式的数据管理系统首先作为预先处理,对于各事例矢量的每一个事例矢量生成与事例矢量类似的矢量、即相对事例矢量的距离为规定值以下的矢量(以下,将其称为“周边矢量”)群,且构筑用于根据周边矢量确定事例矢量的索引信息,将包含事例矢量的数据和索引信息保存至数据库。并且,在检索时,基于索引信息,确定与查询矢量完全一致的周边矢量所对应的事例矢量,基于所确定的事例矢量,输出对于检索请求的检索结果。
为了在预先处理中合理地生成与事例矢量类似的周边矢量,需要所处理的矢量的维数及各要素值集合的基数(cardinality)都较小。若不满足该条件,则周边矢量数暴多,作为结果而不能缩短检索时间。为了达成该条件,使用上述的LSH。通过LSH生成的矢量的要素在按位方式的情况下取二值,在乘积量化方式的情况取具有多值的离散值,虽然也依赖于LSH的设定,但在大多数的情况下会生成要素值集合的基数及维数较小的离散矢量(收缩矢量)。因此,在执行作为基本原理而说明的上述方法之前,使用LSH将事例矢量群及查询矢量变换为收缩矢量,使用它们进行基于作为基本原理而说明的上述方法的检索即可。其中,由于使用LSH,因此检索结果成为近似解。
另外,若事例矢量群或查询矢量原本就是满足上述条件的矢量,则不需要事先进行使用了LSH的矢量变换,仅执行作为基本原理而说明的上述方法即可。
此外,在作为基本原理而说明的上述方法中,生成了相对事例矢量的距离为规定值以下的周边矢量,但也可以设为生成相对查询矢量的距离为规定值以下的周边矢量的结构。在该情况下,在检索时,生成相对查询矢量的距离为规定值以下的周边矢量,确定与周边矢量完全一致的事例矢量,基于所确定的事例矢量,输出对于检索请求的检索结果。
以下,具体地说明对检索条件中包含矢量间距离的计算的查询进行处理来进行媒体检索的数据管理系统的应用例。作为媒体检索的应用题材,选取脸部图像(包含视频)检索。脸部图像检索是如下处理:从系统中预先登记的图像·视频等的媒体群之中,找出包含与作为查询而被给予的图像·视频中包含的脸部相似的脸部的、图像·视频的地方。另外,在此作为应用题材而选取脸部图像检索,但实施方式的数据管理系统例如能够应用于音乐检索、物体图像检索、场景图像检索、文本含义检索、传感器图案检索、股价图案检索、电力使用图案检索等各种媒体检索或传感器数据检索中。
<第一实施方式>
首先,说明第一实施方式的数据管理系统。在本实施方式中,设为在映射处理中使用按位LSH,设为使用汉明距离作为映射后的二值矢量(散列)间的距离。其中,如上所述,若所处理的事例矢量及查询矢量原本是低维的二值矢量,则不需要基于按位LSH的映射,原样使用事例矢量作为后述的事例散列(收缩事例矢量)、原样使用查询矢量作为查询散列(收缩查询矢量)即可。此外,在该情况下,使用基于事例矢量生成的周边矢量作为后述的周边散列(收缩周边矢量)即可。
图1是表示第一实施方式的数据管理系统的概要的系统结构图。本实施方式的数据管理系统如图1所示,具备数据登记器100、索引构筑器200、检索器300、以及数据库400。
数据登记器100从外部接收包含脸部的图像或视频等媒体数据群10,将所接收到的媒体数据群10作为对象而进行与脸部相关的分析,在数据库400内生成包含与脸部特征相关的特征矢量(事例矢量)群的数据表20。
索引构筑器200若从外部接收索引构筑语句30,则从数据库400取出与所接收到的索引构筑语句30对应的数据表20,按照索引构筑语句30的指令,在数据库400内生成用作脸部特征矢量的索引的索引信息40。
检索器300若从外部接收包含与脸部特征相关的查询矢量的扩展SQL50(检索请求的一例),则从数据库400取得相应的数据表20及索引信息40,输出包含与扩展SQL 50中包含的查询矢量类似的脸部特征矢量的检索结果数据集60。
首先,说明数据登记器100的细节。图2是表示数据登记器100在数据库400内生成的数据表20的具体例的图。将数据登记器100从外部接收的媒体数据群10中包含的媒体数据设为dir/a.jpg、dir/b.jpg、dir/a.mpg这3种文件。其中,dir/a.jpg、dir/b.jpg为静止图像文件,dir/a.mpg为动态图像文件。
数据登记器100若从外部接收媒体数据群10,则对该媒体数据群10中包含的媒体数据分别执行以下所示的处理。
图3是表示在媒体数据为静止图像的情况下的由数据登记器100进行的处理过程的一例的流程图。数据登记器100在媒体数据为静止图像的情况下,例如执行以下的步骤S101~步骤S105的处理,将媒体数据登记到数据表20。
步骤S101:数据登记器100对所输入的静止图像进行脸部区域提取处理。其结果是,从所输入的静止图像,提取所有的、拍到脸部的可能性高的图像区域(脸部图像区域)。另外,脸部区域提取处理使用现有技术即可,所以在此省略详细的说明。
步骤S102:数据登记器100按顺序取出在步骤S101中提取到的脸部图像区域。
步骤S103:数据登记器100对在步骤S102中取出的脸部图像区域进行特征生成处理而得到特征矢量(事例矢量)。另外,特征生成处理中使用现有技术即可,所以在此省略详细的说明。
步骤S104:数据登记器100将包含步骤S103中的得到的特征矢量、赋予给所输入的静止图像的媒体数据名、脸部图像区域的坐标这三个信息的记录追加至数据表20。
步骤S105:数据登记器100判断是否取出了在步骤S101中提取到的全部脸部图像区域。并且,若判断的结果为否,则返回步骤S102而反复进行以后的处理,若判断的结果为是,则结束处理。
图4是表示在媒体数据为动态图像的情况下的由数据登记器100进行的处理过程的一例的流程图。数据登记器100在媒体数据为动态图像的情况下,例如执行以下的步骤S201~步骤S212的处理,将媒体数据登记到数据表20。
步骤S201:数据登记器100从所输入的动态图像取出开头帧图像。
步骤S202:数据登记器100对在步骤S201中取出的开头帧图像进行脸部区域提取处理及特征生成处理。其结果是,以赋予置信度的方式提取所有的、拍到脸部的可能性高的图像区域(脸部图像区域),从各个脸部图像区域得到特征矢量。
步骤S203:数据登记器100从所输入的动态图像取出下一帧图像。
步骤S204:数据登记器100对在步骤S203中取出的帧图像,进行与步骤S202同样的脸部区域提取处理及特征生成处理。
步骤S205:数据登记器100对该帧进行与前帧之间的脸部追踪处理。脸部追踪处理是,在帧间找出图像和区域坐标类似的脸部图像区域的对,将它们解释为同一被摄体的处理。另外,脸部追踪处理使用现有技术即可,所以在此省略详细的说明。
步骤S206:数据登记器100将步骤S205的脸部追踪处理的结果是被判断为同一被摄体的脸部图像区域绑定为同一组。
步骤S207:数据登记器100判断是否有下一帧。并且,若判断的结果为是,则返回步骤S203而反复进行以后的处理,若为否,则前进至步骤S208。
步骤S208:数据登记器100按顺序取出通过以上的处理而生成的组。
步骤S209:数据登记器100取得在步骤S208中取出的组中包含的帧之中、最早出现的帧的出现时刻即第一出现时刻以及最晚出现的帧的出现时刻即第二出现时刻。
步骤S210:数据登记器100取得在步骤S208中取出的组中包含的帧之中置信度最高的帧的出现时刻即第三出现时刻、特征矢量、以及脸部图像区域的坐标。
步骤S211:数据登记器100将包含步骤S209中取得的第一出现时刻及第二出现时刻、步骤S210中取得的第三出现时刻、特征矢量及脸部图像区域的坐标、以及赋予给所输入的动态图像的媒体数据名这六个信息的记录追加到数据表20。
步骤S212:数据登记器100判断是否取出了所生成的全部组。并且,若判断的结果为否,则返回步骤S208而反复进行以后的处理,若判断的结果为是,则结束处理。
接着,说明索引构筑器200的细节。索引构筑器200在数据库400内生成的索引信息40是用于将对列中具有特征矢量的数据表20进行的矢量附近检索高速化的辅助信息。索引构筑器200能够按照所输入的索引构筑语句30的类型,生成LSH立即值索引信息和LSH附近展开索引信息这2种索引信息40。在该索引信息40中,包含后述的表数据和数据库索引(B树等)。
索引构筑器200通过对数据表20的储存特征矢量的同一行执行散列的比特长度的指定不同的多个索引构筑语句30,能够构筑多个索引信息40。例如,若构筑使用了比特长度较短的散列的索引信息40和使用了比特长度较长的散列的索引信息40这2种,则能够在检索时进行与用途相应的区分使用,使得在进行与精度相比更重视速度的检索的情况下使用前者的索引信息40,在进行与速度相比更重视精度的检索的情况下使用后者的索引信息40。
图5是表示索引构筑器200的结构例的框图。索引构筑器200如图5所示,具备索引构筑指令类型分类器210、LSH立即值索引信息生成器220、以及LSH附近展开索引信息生成器230。
索引构筑指令类型分类器210是将被输入至索引构筑器200的索引构筑语句30根据其类型移交给LSH立即值索引信息制成器220和LSH附近展开索引信息生成器230中的某个的切换器(switcher)。
被输入至索引构筑器200的索引构筑语句30例如是以下那样的结构的语句。其中xxxx部中填入某值。
Table:xxxx,Column:xxxx,Algo:xxxx,BitLen:xxxx,HammingDist:xxxx
上述结构的索引构筑语句30在Table项目中,指定成为索引信息40的对象的数据表20的表名,在Column项目中,指定成为索引信息40的对象的数据表20内的列名。在该列名所示的数据表20内的列中,需要储存有特征矢量。
此外,在Algo项目中,指定用于生成索引信息40的LSH算法的算法名。算法名从在系统内安装的LSH算法之中选择。例如,若设为在系统内仅安装有SimHash这样的名字的LSH算法和SpectralHash这样的名字的LSH算法,则指定这些其中的某个算法名。在本实施方式中,如上所述,使用按位LSH,所以指定按位LSH的算法名。
在Bitlen项目中,指定在Algo项目中选择的LSH算法所输出的散列的比特长度。在HammingDist项目中,指定在LSH附近展开索引信息生成器230中处理的汉明距离的上限(后述的周边散列的范围)。例如在HammingDist项目中指定了“2”的情况下,在LSH附近展开索引信息生成器230中处理的汉明距离为“0”、“1”及“2”。另外,HammingDist项目也可以省略。
若以上那样构成的索引构筑语句30被输入至索引构筑器200,则索引构筑指令类型分类器210将该索引构筑语句30转交给LSH立即值索引信息生成器220和LSH附近展开索引信息生成器230中的某个。例如,若在被输入至索引构筑器200的索引构筑语句30中没有HammingDist项目,则索引构筑指令类型分类器210将该索引构筑语句30转交给LSH立即值索引信息生成器220,若有HammingDist项目,则将该索引构筑语句30转交给LSH附近展开索引信息生成器230。
LSH立即值索引信息生成器220在从索引构筑指令类型分类器210接收到索引构筑语句30的情况下,按照该索引构筑语句30,生成包含LSH立即值表和针对该LSH立即值表的HashValue列的数据库索引的LSH立即值索引信息40A。
图6是表示LSH立即值表的一例的图。LSH立即值表如图6所示,是仅由HashValue列(类型为blob)构成的表数据。LSH立即值索引信息生成器220对由索引构筑语句30指定的数据表20的各记录,按顺序取出在所指定的列中储存的特征矢量,使用所指定的LSH算法,生成所指定的输出比特长度的散列,将仅具有所得到的各散列的记录登记到LSH立即值表。
另外,散列本质上是二值矢量,但在本实施方式中并非将散列作为布尔(Boolean)值的数组来保存,而是看作二进制数而作为整数来保存。即,LSH立即值表的HashValue列是储存整数或整数数组(超过计算机架构的比特数上限的情况下的处置)的blob。由此,能够削减保存区域尺寸。
另外,也可以设为将该LSH立即值表编入数据表20的结构。通过设为这样的结构,能够在检索整体的处理中减少1次子查询处理。为了将LSH立即值表编入数据表20,在上述的数据登记器100生成数据表20时,需要在该数据表20中预先准备储存散列的列。此外,如上所述,为了能够对储存数据表20的特征矢量的同一行构筑多个索引信息40,需要在数据表20内确保用于储存比特长度不同的多个种类的散列的多个列。在设为这样的结构的情况下,LSH立即值索引信息生成器220将基于特征矢量而生成的散列储存至数据表20的相应的列中而不是登记到LSH立即值表即可。
LSH立即值索引信息生成器220配合于以上那样的LSH立即值表的生成,构筑针对LSH立即值表的HashValue列的数据库索引,将它们作为LSH立即值索引信息40A而保存至数据库400内。
图7是表示由LSH立即值索引信息生成器220进行的处理过程的一例的流程图。LSH立即值索引信息生成器220若从索引构筑指令类型分类器210接收索引构筑语句30,则例如执行以下的步骤S301~步骤S307的处理,将包含LSH立即值表和数据库索引的LSH立即值索引信息40A保存至数据库400。
步骤S301:LSH立即值索引信息生成器220在数据库400内,生成仅具有名字为HashValue·类型为blob的列的表(空的LSH立即值表)。另外,表名的形式设为“AAAA_BBBB_CCCC_DDDD”。其中,AAAA设为处理对象的数据表20的表名,BBBB设为处理对象的列的列名,CCCC设为LSH算法的算法名,DDDD设为比特长度。例如,aTable_feat_SimHash_64这样的表名被给予所生成的表。
步骤S302:LSH立即值索引信息生成器220从由索引构筑语句30指定的数据表20,按顺序取出由索引构筑语句30指定的列的特征矢量。
步骤S303:LSH立即值索引信息生成器220针对在步骤S302中取出的特征矢量,使用由索引构筑语句30指定的LSH算法,生成由索引构筑语句30指定的输出比特长度的散列。
步骤S304:LSH立即值索引信息生成器220将具有步骤S303中得到的事例散列作为HashValue列的值的记录追加到LSH立即值表。
步骤S305:LSH立即值索引信息生成器220判断是否从处理对象的数据表20取出了全部特征矢量。并且,若判断的结果为否,则返回步骤S302而反复进行以后的处理,若判断的结果为是,则前进至步骤S306。
步骤S306:LSH立即值索引信息生成器220构筑针对经由以上的处理而生成的LSH立即值表的HashValue列的数据库索引(B树等),保存至数据库400。
步骤S307:若有用于散列的生成的LSH算法的模型参数集等(例如SimHash中的投影矢量群等),则LSH立即值索引信息生成器220以与表名相同的文件名(例如aTable_feat_SimHash_64)将其保存至数据库400。
LSH附近展开索引信息生成器230在从索引构筑指令类型分类器210接收到索引构筑语句30的情况下,按照该索引构筑语句30,生成包含LSH附近展开表、和针对该LSH附近展开表的HashValue列及HammingDistance列的数据库复合索引(综合索引)的LSH附近展开索引信息40B。
图8是表示LSH附近展开表的一例的图。LSH附近展开表如图8所示,是由HashValue(散列值)列(类型为blob)、HammingDistance(汉明距离)列(类型为integer)及DataRowID列(类型为integer)构成的表数据。LSH附近展开索引信息生成器230从由索引构筑语句30指定的数据表20取出特征矢量,针对各特征矢量(事例矢量),按照由索引构筑语句30指定的LSH算法及比特长度而生成散列(收缩事例矢量)。将其称为“事例散列”。接着,LSH附近展开索引信息生成器230针对所生成的各事例散列,生成由索引构筑语句30指定的汉明距离以内的散列(收缩周边矢量)群。在此将所生成的散列称为“周边散列”。并且,LSH附近展开索引信息生成器230例如将由周边散列、周边散列到事例散列的汉明距离、成为事例散列的基础的事例矢量所属的数据表20的记录的行ID这三个组构成的记录登记到LSH附近展开表。
另外,在本实施方式中,在后述的数据库索引LSH检索处理中,进行将用作检索条件的汉明距离从0起依次递增而追加检索结果的处理。因此,在LSH附近展开表的第二列设置HammingDistance列,将周边散列到事例散列的汉明距离储存至该HammingDistance列。但是,还能够设为在检索时将LSH附近展开表的距离上限用作检索条件进行检索的结构。在该情况下,不需要在LSH附近展开表设置HammingDistance列。在设为这样的结构的情况下,在后述的数据库索引LSH检索处理中,不能利用汉明距离控制所输出的检索结果数据集的件数,但有能够减小LSH附近展开表的尺寸的效果。此外,在设为这样的结构的情况下,不用构筑针对LSH附近展开表的HashValue列及HammingDistance列的数据库复合索引,而构筑针对LSH附近展开表的HashValue列的数据库索引即可。
此外,在图8所示的LSH附近展开表中,包含大量的、作为在HashValue列中储存的周边散列的值而重复的值,所以能够通过进行归一化来紧凑化。
图9是表示将图8所示的LSH附近展开表分割为两个而归一化后的例子的图。在将LSH附近展开表设为图9那样的结构的情况下,在后述的数据库索引LSH检索处理中,使用与HashValue和HammingDistance相关的检索条件来确定图9(a)的表的行ID,使用与基于该行ID而生成的图9(b)的表的Table1_RowID相关的检索条件找出DataRowID即可。另外,图9(b)的表的第一列即Table1_RowID储存图9(a)的表的对应的行的行ID,若使用该链接来结合(JOIN)图9(a)的表和图9(b)的表,则成为图8所示的LSH附近展开表。
此外,也可以使用关联数组来安装图9(a)的表和图9(b)的表的各个。在作为关联数组来安装的情况下,图9(a)的关联数组的键是组合了HashValue和HammingDistance的键,值为一个以上的行ID。此外,图9(b)的关联数组的键是Table1_RowID,值为一个以上的DataRowID。
图10是针对LSH附近展开表的HashValue列及HammingDistance列的数据库复合索引的一例的图。该数据库复合索引如图10所示,成为沿着HashValue及HammingDistance的值分支的树结构,记载有与叶相应的LSH附近展开表的行ID。通过使用该数据库复合索引,能够使检索时间从0(N)缩短为0(log(N))。
另外,通过稍微变更数据库复合索引的结构,还能够不需要LSH附近展开表。具体而言,设为在数据库复合索引的叶中,储存DataRowID的值来代替储存LSH附近展开表的行ID的结构。由此,只能检索DataRowID,但不需要将LSH附近展开表保存至数据库400。在该情况下,LSH附近展开索引信息40B仅成为数据库复合索引。
图11是表示由LSH附近展开索引信息生成器230进行的处理过程的一例的流程图。LSH附近展开索引信息生成器230若从索引构筑指令类型分类器210接收索引构筑语句30,则例如执行以下的步骤S401~步骤S410的处理,将包含LSH附近展开表和数据库复合索引的LSH附近展开索引信息40B保存至数据库400。
步骤S401:LSH附近展开索引信息生成器230在数据库400内,生成具有名字为HashValue·类型为blob的列、名字为HammingDistance·类型为integer的列、名字为DataRowID·类型为integer的列的表(空的LSH附近展开表)。另外,表名的形式设为“AAAA_BBBB_CCCC_DDDD”。其中,AAAA设为处理对象的数据表20的表名,BBBB设为处理对象的列的列名,CCCC设为LSH算法的算法名,DDDD设为比特长度。例如,aTable_feat_PQ_3这样的表名被给予所生成的表。
步骤S402:LSH附近展开索引信息生成器230从由索引构筑语句30指定的数据表20,按顺序取出由索引构筑语句30指定的列的特征矢量。
步骤S403:LSH附近展开索引信息生成器230对在步骤S402中取出的特征矢量(事例矢量),使用由索引构筑语句30指定的LSH算法,生成由索引构筑语句30指定的比特长度的事例散列。
步骤S404:LSH附近展开索引信息生成器230生成全部离步骤S403中得到的事例散列的距离为指定距离以下的周边散列。
步骤S405:LSH附近展开索引信息生成器230按顺序取出在步骤S404中得到的周边散列。
步骤S406:LSH附近展开索引信息生成器230将由步骤S405中取出的周边散列、该周边散列到事例散列的汉明距离、成为事例散列的基础的事例矢量所属的数据表20内的记录的行ID这三个组构成的记录追加到LSH附近展开表。
步骤S407:LSH附近展开索引信息生成器230判断是否取出了全部在步骤S404中得到的周边散列。并且,若判断的结果为否,则返回步骤S405而反复进行以后的处理,若判断的结果为是,则前进至步骤S408。
步骤S408:LSH附近展开索引信息生成器230判断是否从处理对象的数据表20取出了全部特征矢量。并且,若判断的结果为否,则返回步骤S402而反复进行以后的处理,若判断的结果为是,则前进至步骤S409。
步骤S409:LSH附近展开索引信息生成器230构筑针对经由以上的处理而生成的LSH附近展开表的HashValue列及HammingDistance列的数据库复合索引(综合索引),并保存至数据库400。
步骤S410:若有用于生成事例散列的LSH算法的模型参数集等,则LSH附近展开索引信息生成器230以与表名相同的文件名(例如aTable_feat_PQ_3)将其保存至数据库400。
在此,说明上述步骤S404中的周边散列的生成方法的具体例。以下,以设为成为周边散列的起点的事例散列的比特串为“010”并例举汉明距离为2以内的周边散列这样的设定例来进行说明。
首先,汉明距离为0的周边散列是与事例散列相同的散列。即,若事例散列的比特串为“010”,则相对于该事例散列的汉明距离为0的周边散列仅有“010”。
接着,汉明距离为1的周边散列是将事例散列的任意比特仅反转一个比特后的散列。若事例散列的比特长度为3,则反转的比特的选择方法是仅第一比特、仅第二比特、仅第三比特这3种。若事例散列的比特串为“010”,则以各选择方法进行了比特反转的结果是“110”、“000”及“011”。这三个散列是相对于事例散列“010”的汉明距离为1的周边散列。
接着,汉明距离为2的周边散列是将事例散列的任意比特反转两个比特后的散列。若事例散列的比特长度为3,则反转的比特的选择方法是第一比特+第二比特、第一比特+第三比特、第二比特+第三比特这3种。若事例散列的比特串为“010”,则以各选择方法进行了比特反转的结果是“100”、“111”及“001”。这三个散列是相对于事例散列“010”的汉明距离为2的周边散列。
汇总以上内容来说,相对于事例散列“010”的汉明距离为0的周边散列为“010”,汉明距离为1的周边散列为“110”、“000”及“011”,汉明距离为2的周边散列为“100”、“111”及“001”。这样,能够以低成本的处理生成全部周边散列。
另外,也可以具备在通过以上的方法生成相对事例散列的周边散列时,基于比特的重要度等限制许可反转的比特的架构。例如,在如上述参考文献3那样以主分量分析为基础的散列生成法的情况下,能够根据与各比特对应的固有值找到该比特的辨识性(重要度)。能够想到:由于将事例散列中的辨识性高的比特反转而生成的周边散列会成为失去了辨识性的周边散列,所以即使将这样的周边散列追加到LSH附近展开表中,命中的概率也低。因此,也可以加以限制使得不反转这样的辨识性高的比特。这样,通过对许可反转的比特进行限制,能够减小LSH附近展开表的存储区域尺寸。
由于成为检索键的列和成为检索结果的列是确定的,所以能够以关联数组(若是键值存储、C++标准程序库,则std::map或std::unordered_map等)简洁地安装LSH附近展开表。
即,由于检索结果为DataRowID,所以使用DataRowID的可变长的连续存储器配置型数组(若是C++标准程序库,则std::vector等)作为关联数组的值。由于检索条件为HashValue和HammingDistance的AND,所以使用这两个值生成成为独特(unique)的关联数组的键。考虑在图8中例示的LSH附近展开表的情况下,HashValue列以二进制数记载取“000”~“111”的值,HammingDistance取“0”~“1”的值,因此通过以下的算式决定键值等。
键值=HashValue列的值×2+HammingDistance列的值
图12是说明关联数组和连续存储器配置型数组的图。关联数组作为从键向值建立对应的方法,如图12(a)所示,如数据库索引那样在内部具有树或散列等数据结构。若上述的键在定义域中几乎都被应用,则也可以代替关联数组而使用图12(b)所示的连续存储器配置型数组(若是C++标准程序库,则std::vector等)。作为连续存储器配置型数组而确保的要素数设为HashValue和HammingDistance的全组合数。使用了连续存储器配置型数组的数据结构与使用了关联数组的数据结构相比,仅在键的应用率(日语:充当率)高的情况下存储器使用量降低,进而处理速度高速化。
接着,说明检索器300的细节。该检索器300的功能概要及特征如以所述。在该检索器300中,能够使用扩展SQL 50,进行包含与矢量类似性相关的0个以上的条件的逻辑条件下的记录检索。由此,数据库使用者能够进行将一般的数据对照和特征矢量类似性判断作为条件而连结的逻辑式下的检索。
此外,矢量类似性判断(矢量附近检索)的处理能够根据检索对象的记录数而内部切换5种方式。该切换是基于事先设定的系统设定来进行的。在5种方式中,关于速度、精度、件数控制的有无,有优良之分。作为这5种方式之一的数据库索引LSH检索是针对查询在检索时不进行矢量距离计算而仅使用数据库索引来实现矢量类似性判断(矢量附近检索)的方式。该方式具有大幅度削减检索时间的效果。
图13是表示检索器300的结构例的框图。检索器300接收扩展SQL 50作为输入,执行按照扩展SQL 50的检索处理而输出检索结果数据集60,如图13所示,具备检索条件处理部310和检索输出部320。检索条件处理部310在内部具有进行对于各种检索条件的处理的功能模块。其中,特别是在本实施方式中进行对于与特征矢量类似性相关的检索条件的处理的功能模块是矢量类似性判断处理部330。此外,将进行对于这以外的检索条件的处理的功能模块总称为其他检索条件处理部340。检索条件处理部310进行这些矢量类似性判断处理部330的检索结果和其他检索条件处理部340的集合运算,完成检索条件整体的处理。检索输出部320基于检索条件处理部310的处理结果从数据库400取出记录,作为检索结果数据集60进行输出。
另外,由检索器300进行的检索处理的大半与以往的SQL的检索处理相同,检索条件处理部310对应SQL中的from指令部(数据源的确定处理)及where指令部(检索条件处理),检索输出部320对应SQL中的select指令部。本实施方式中的固有的处理是作为检索条件处理部310中之一的矢量类似性判断处理部330执行的处理。因此,以下以矢量类似性判断处理部330为中心进行说明,关于能够原样应用现有技术的部分省略适当说明。
首先,说明检索器300作为输入而接收的扩展SQL 50。扩展SQL 50是对以往的SQL进行扩展而使得能够记述相当于与矢量类似性相关的条件的vnn函数的查询语言。vnn函数如以下的例子那样,作为在where指令内能够与针对一般DB基本型数据的条件群组合的项来使用。
select*from aTable where vnn(feat_simhash_64,(10,20,30),10)andannualIncome>10000000
vnn函数的规格如以下那样。
输入:vnn函数将作为检索对象的数据集作为输入。该输入由检索条件处理部310内部生成而在调用vnn函数时转交。若是通常的句法,则是由from指令指定的表的全部记录群。
第一自变量:第一自变量是将储存事例矢量(作为检索对象的特征矢量)的列名、对该列应用的LSH算法的算法名、对该列应用的LSH算法的输出比特长度(在后述的第三实施方式中更一般化而设为选项参数)以下划线连结而成的文本。
第二自变量:第二自变量是查询矢量。
第三自变量:第三自变量是输出上位件数(作为输出对象的矢量的上位件数)。其中,设为将与查询矢量之间的距离小的矢量视为上位。
输出:对检索条件处理部310(from、where等的处理)返回符合自变量所示的条件的检索结果。
另外,在此设为赋予输出上位件数作为相当于输出条件的第三自变量,但也可以代替此而赋予距离上限作为第三自变量。
图14是表示矢量类似性判断部330的输入输出关系的图。矢量类似性判断部330如图14所示,接收检索对象数据集70作为输入,进行基于以vnn函数表现的检索条件的矢量类似性判断(矢量附近检索)处理,返回检索结果80。在本实施方式中,作为基于矢量类似性判断部330的检索方式,准备有严格检索(Strict Search)、线性LSH检索(Linear LSHSearch)、数据库索引LSH检索(DB-Indexed LSH Search)、数据库索引LSH检索+严格检索、数据库索引LSH检索+线性LSH检索这5种。
严格检索是原样使用原来的查询矢量,对与查询矢量类似的事例矢量进行线性检索的检索方式。线性LSH检索是使用LSH立即值索引信息40A,对与查询散列完全一致的事例散列所对应的事例矢量进行线性检索的检索方式。数据库索引LSH检索是使用LSH附近展开索引信息40B,对与查询散列完全一致的周边散列所对应的事例矢量进行检索的检索方式。数据库索引LSH检索+严格检索是在通过数据库索引LSH检索缩减了件数后进行严格检索的2级缩减方式的检索方式。数据库索引LSH检索+线性LSH检索是在通过数据库索引LSH检索缩减了件数后进行线性LSH检索的2级缩减方式的检索方式。基于这5种方式的检索分别通过图13所示的严格检索器331、线性LSH检索器332、数据库索引LSH检索器333、数据库索引LSH检索+严格检索器334及数据库索引LSH检索+线性LSH检索器335进行。
此外,在本实施方式中,设为矢量类似性判断处理部330基于事先赋予的检索方式设定信息90(参照图13),根据检索对象的记录数选择上述的5种检索方式的某个。检索方式设定信息90成为以下那样的由多行构成的语法。件数条件从上起进行对照,采用匹配的检索方式。
件数条件:检索方式
件数条件:检索方式
···
···
otherwise:检索方式
在件数条件中,能够记述“<=NNNN”(其中NNNN为任意的正数)或“otherwise”。“<=NNNN”匹配于成为检索对象的事例矢量的数目为NNNN件以下的情况。“otherwise”匹配于任意件数。需要在检索方式设定信息90内必然包含1行“otherwise”。
在检索方式中,能够记述“Strict”(严格检索)、“LinearLSH”(线性LSH检索)、“DBIndexedLSH”(数据库索引LSH检索)、“DBIndexedLSH:NNNN/Strict”(数据库索引LSH检索+严格检索)及“DBIndexedLSH:NNNN/LinearLSH”(数据库索引LSH检索+线性LSH检索)这5种。在NNNN中能够记述任意的正数。
检索方式设定信息90的记述例如以下所示。以下例示的检索方式设定信息90示出:若成为检索对象的事例矢量的数目为10000件以下,则采用严格检索方式,若为100000件以下,则采用线性LSH检索,若为比这还多的件数,则采用数据库索引LSH检索+线性LSH检索方式。
<=10000:Strict
<=100000:LinearLSH
Otherwise:DBIndexedLSH:100000/LinearLSH
图15是表示由矢量类似性判断部330进行的处理过程的一例的流程图。矢量类似性判断部330若接收检索对象数据集70作为输入,则例如执行以下的步骤S501~步骤S507的处理,输出检索结果80。
步骤S501:矢量类似性判断部330对所输入的检索对象数据集70的记录件数(成为检索对象的事例矢量的数目)进行计数。
步骤S502:矢量类似性判断部330参照检索方式设定信息90,取得件数条件与在步骤S501中计数的记录件数匹配的检索方式。若所取得的检索方式为Strict,则前进至步骤S503,若为LinearLSH,则前进至步骤S504,若为DBIndexedLSH,则前进至步骤S505,若为DBIndexedLSH:NNNN/Strict(其中NNNN为任意的正数),则前进至步骤S506,若为DBIndexedLSH:NNNN/LinearLSH(其中NNNN为任意的正数),则前进至步骤S507。
步骤S503:矢量类似性判断部330使用严格检索器331取得检索结果80,输出所取得的检索结果80。
步骤S504:矢量类似性判断部330使用线性LSH检索器332取得检索结果80,输出所取得的检索结果80。
步骤S505:矢量类似性判断部330使用数据库索引LSH检索器333取得检索结果80,输出所取得的检索结果80。
步骤S506:矢量类似性判断部330使用数据库索引LSH检索+严格检索器334取得检索结果80,输出所取得的检索结果80。
步骤S507:矢量类似性判断部330使用数据库索引LSH检索+线性LSH检索器335取得检索结果80,输出所取得的检索结果80。
另外,在以上的例中,根据成为检索对象的事例矢量的数目而切换检索方式,但作为应切换的检索方式的指定,也可以进行扩展,使得还包含比特长度等各种参数设定。例如能够制作如下等的方案:通过16比特等较短的比特长度(即每1件的处理时间短但低精度)的线性LHS检索将事例矢量的数目缩减为100000件后,通过4096比特等较长的比特长度(即每1件的处理时间长但高精度)的线性LHS检索赋予次序。在该情况下的检索方式设定信息90的记述例如以下所示(在@以后例举参数设定)。
<=100000:LinearLSH@4096
otherwise:LinearLSH@16:100000/LinearLSH@4096
以下,说明基于各自的检索方式的检索处理的具体例。
图16是表示由严格检索器331进行的处理过程的一例的流程图。严格检索器331例如执行以下的步骤S601~步骤S608的处理,输出检索结果80。
步骤S601:严格检索器331生成空的检索结果列表。
步骤S602:严格检索器331得到被指定为vnn函数的第二自变量的查询矢量。
步骤S603:严格检索器331从检索对象数据集70按顺序取出记录。
步骤S604:严格检索器331算出在步骤S603中取出的记录中储存有被指定为vnn函数的第一自变量的事例矢量的列中储存的事例矢量群与查询矢量之间的欧几里得距离。
步骤S605:严格检索器331将在步骤S603中取出的记录的行ID和在步骤S604中算出的欧几里得距离的组追加到检索结果列表。其中,插入至使得检索结果列表的要素以欧几里得距离升序的方式进行排列的位置。
步骤S606:严格检索器331在检索结果列表中包含的要素数比被指定为vnn函数的第三自变量的输出上位件数更多的情况下,丢弃输出上位件数以后的要素群。
步骤S607:严格检索器331判断是否从检索对象数据集70取出了全部记录。并且,若判断的结果为否,则返回步骤S603而反复进行以后的处理,若判断的结果为是,则前进至步骤S608。
步骤S608:严格检索器331输出检索结果列表中包含的行ID的集合作为检索结果80,并结束处理。
图17是表示由线性LSH检索器332进行的处理过程的一例的流程图。线性LSH检索器332例如执行以下的步骤S701~步骤S709的处理,输出检索结果80。
步骤S701:线性LSH检索器332生成空的检索结果列表。
步骤S702:线性LSH检索器332取得被指定为vnn函数的自变量的查询矢量、LSH算法的算法名及输出比特长度,生成查询矢量的散列(收缩查询矢量)。以下,将其称为“查询散列”。
步骤S703:线性LSH检索器332取得检索对象数据集70的表名、储存被指定为vnn函数的自变量的事例矢量的列、LSH算法的算法名及输出比特长度,取得具有基于它们而决定的表名的LSH立即值表。
步骤S704:线性LSH检索器332使用在步骤S703中取得的LSH立即值表,按顺序取出与检索对象数据集70的各记录对应的事例散列。
步骤S705:线性LSH检索器332算出在步骤S704中取出的事例散列与在步骤S702中生成的查询散列之间的汉明距离。
步骤S706:线性LSH检索器332将与在步骤S704中取出的事例散列对应的检索对象数据集70的记录的行ID和在步骤S705中算出的汉明距离的组追加到检索结果列表。其中,插入至使得检索结果列表的要素以汉明距离升序的方式进行排列的位置。
步骤S707:线性LSH检索器332在检索结果列表中包含的要素数比被指定为vnn函数的第三自变量的输出上位件数更多的情况下,丢弃输出上位件数以后的要素群。
步骤S708:线性LSH检索器332判断是否取出了全部与检索对象数据集70的各记录对应的事例散列。并且,若判断的结果为否,则返回步骤S704而反复进行以后的处理,若判断的结果为是,则前进至步骤S709。
步骤S709:线性LSH检索器332输出检索结果列表中包含的行ID的集合作为检索结果80,并结束处理。
另外,在上述的步骤S702中生成的查询散列本质上是二值矢量,但配合于LSH立即值表中的保存形式,看作二进制数而作为整数来处理。由此,除了能够节约存储区域外,由于成为整数彼此的比较,因此对照处理变得高速。
图18是表示由数据库索引LSH检索器333进行的处理过程的一例的流程图。数据库索引LSH检索器333例如执行以下的步骤S801~步骤S810的处理,输出检索结果80。
步骤S801:数据库索引LSH检索器333生成空的检索结果集。
步骤S802:数据库索引LSH检索器333取得被指定为vnn函数的自变量的查询矢量、LSH算法的算法名及输出比特长度,生成查询散列。
步骤S803:数据库索引LSH检索器333取得检索对象数据集70的表名、储存被指定为vnn函数的自变量的事例矢量的列、LSH算法的算法名及输出比特长度,取得具有基于它们而决定的表名的LSH附近展开表。
步骤S804:数据库索引LSH检索器333对汉明距离条件变量分配0。
步骤S805:数据库索引LSH检索器333对在步骤S803中取得的LSH附近展开表,检索HammingDistance列的值与汉明距离条件变量的当前值一致、且HashValue列的值与在步骤S802中生成的查询散列一致的记录群,将所得到的行ID的集追加到检索结果集中。
步骤S806:数据库索引LSH检索器333从检索结果集中去除重复要素。
步骤S807:数据库索引LSH检索器333判断检索结果集的要素数是否成为被指定为vnn函数的第三自变量的输出上位件数以上。并且,若判断的结果为否,则前进至步骤S808,若判断的结果为是,则前进至步骤S810。
步骤S808:数据库索引LSH检索器333对汉明距离条件变量的值追加1。
步骤S809:数据库索引LSH检索器333判断汉明距离条件变量的值是否为LSH附近展开表的距离上限以下。并且,若判断的结果为是,则返回步骤S805而反复进行以后的处理,若判断的结果为否,则前进至步骤S810。
步骤S810:数据库索引LSH检索器333输出检索结果集作为检索结果80,并结束处理。
另外,在上述的步骤S802中生成的查询散列本质上是二值矢量,但配合于LSH附近展开表中的保存形式,看作二进制数而作为整数来处理。由此,除了能够节约存储区域外,由于成为整数彼此的比较,所以对照处理变得高速。此外,也可以是,在LSH附近展开表的距离上限为100等较大的值的情况下,将上述的步骤S808中的增量值设为10等较大的值,对步骤S805中的汉明距离条件设置范围。若这样,反复次数减少,所以能够将检索处理整体高速化。
图19是表示由数据库索引LSH检索+严格检索器334进行的处理过程的一例的流程图。数据库索引LSH检索+严格检索是在通过数据库索引LSH检索进行了检索后、对其结果进行基于严格检索的检索的2级缩减方式。数据库索引LSH检索+严格检索器334例如执行以下的步骤S901~步骤S904的处理,输出检索结果80。
步骤S901:数据库索引LSH检索+严格检索器334读取在检索方式设定信息90中记载的检索方式名“DBIndexedLSH:NNNN/Strict”的NNNN部。这是数据库索引LHS检索中的输出上位件数目标。
步骤S902:数据库索引LSH检索+严格检索器334基于输出上位件数目标的设定来调用数据库索引LHS检索器333,得到检索结果集。
步骤S903:数据库索引LSH检索+严格检索器334将从数据库索引LHS检索器333取得的检索结果集作为检索对象数据集70而调用严格检索器331,得到检索结果列表。
步骤S904:数据库索引LSH检索+严格检索器334输出从严格检索器331取得的检索结果列表中包含的行ID的集合作为检索结果80,并结束处理。
图20是表示由数据库索引LSH检索+线性LSH检索器335进行的处理过程的一例的流程图。数据库索引LSH检索+线性LSH检索是在通过数据库索引LSH检索进行了检索后,对其结果进行基于线性LSH检索的检索的2级缩减方式。数据库索引LSH检索+线性LSH检索器335例如执行以下的步骤S1001~步骤S1004的处理,输出检索结果80。
步骤S1001:数据库索引LSH检索+线性LSH检索器335读取在检索方式设定信息90中记载的检索方式名“DBIndexedLSH:NNNN/LinearLSH”的NNNN部。这是数据库索引LSH检索中的输出上位件数目标。
步骤S1002:数据库索引LSH检索+线性LSH检索器335基于输出上位件数目标的设定来调用数据库索引LHS检索器333,得到检索结果集。
步骤S1003:数据库索引LSH检索+线性LSH检索器335将从数据库索引LHS检索器333取得的检索结果集作为检索对象数据集70而调用线性LSH检索器332,得到检索结果列表。
步骤S1004:数据库索引LSH检索+线性LSH检索器335输出从线性LSH检索器332取得的检索结果列表中包含的行ID的集合作为检索结果80,并结束处理。
在此,说明上述的5种检索方式的选择基准。在将数据件数设为N,将特征矢量的维数设为D时,严格检索、线性LSH检索、数据库索引LSH检索这三个检索方式的计算成本(累计相当次数)成为以下所示。
严格检索:N×D
线性LSH检索:N(将LSH算法的输出比特长度设为64以下的情况)
数据库索引LSH检索:α(数据库索引成本)
在此,由于α远比N小,所以在上述三个检索方式之中数据库索引LSH检索为最低成本。
关于精度,严格检索最高,线性LSH检索次高,数据库索引LSH检索最低。当然,不使用作为近似方法的LSH的严格检索为最高精度,但即使假设使用相同的LSH算法,与线性LSH检索相比,数据库索引LSH检索的精度更低的理由是因为,在数据库索引LSH检索中不处理较大的比特长度、汉明距离。数据库索引LSH检索中内部参照将汉明距离以下的全部散列作为记录而展开的LSH附近展开表。在将汉明距离设为H,将比特长度设为L时,记录数S以下述式(1)来表示。
【数式1】
从该式(1)可知,若处理较大的汉明距离、比特长度的LSH,则有记录数爆发的问题。因此,处理较小的汉明距离、比特长度的LSH,但在该情况下,距离分辨率降低,难以准确地配合于要求了实际输出的件数的输出件数。该问题在线性LSH检索、数据库索引LSH检索等使用LSH的任意检索方法中都会发生,特别是在仅处理较小的汉明距离、比特长度的LSH的数据库索引LSH检索中是显著的。为了解决该缺点,有效的是,使用如数据库索引LSH检索+严格检索、或数据库索引LSH检索+线性LSH检索那样的、在第2级具有易于控制输出件数的检索方式的2级缩减方式,在第1级数据库索引LSH检索中以多一些的输出件数来输出,在第2级检索中将输出件数准确地对应要求。
根据以上,为了将检索速度收敛于允许范围内,同时得到尽量高的精度,有效的是,在检索对象数据集70的件数为小规模的情况下使用严格检索,在检索对象数据集70的件数为中规模的情况下使用线性LSH检索,在检索对象数据集70的件数为大规模的情况下,使用数据库索引LSH检索+严格检索、或者数据库索引LSH检索+线性LSH检索。
以上,如举具体的例子详细地进行说明的那样,在本实施方式的数据管理系统中,以如下这样的计算量少的方法进行对于数据表20的矢量附近检索,该方法为,通过预先处理生成包含LSH附近展开索引信息40B的索引信息40,在检索时使用该索引信息40,确定与查询矢量完全一致的周边矢量所对应的事例矢量。从而,能够削减在以往的相似性检索中占据计算量的大多数的矢量附近检索的计算量,缩短数据检索的执行时间。
<第二实施方式>
接着,说明第二实施方式的数据管理系统。本实施方式是通过设为在检索时生成相对查询矢量的距离为规定值以下的周边矢量并找出与周边矢量完全一致的事例矢量的结构,从而实现了存储器使用量的削减及伴随于此的LSH的精度提高的系统。
在上述的第一实施方式中,为了实现数据库索引LSH检索,在内部使用LSH附近展开表或数据库复合索引。这些构造数据如上所述,若散列的比特长度及汉明距离上限较大,则尺寸庞大化。但是,由于在作为数据库400的存储区域来使用的盘等存储容量中有界限,所以有不能处理较大的比特长度及汉明距离上限的情况。并且,在不能处理充分大的比特长度或汉明距离的情况下,有发生检索精度的降低的可能性。
在本实施方式中,代替如第一实施方式那样例举在成为检索对象的各事例矢量的散列(二值矢量)即事例散列的附近存在的散列(二值矢量)即周边散列群,而采取例举在查询矢量的散列(二值矢量)的附近存在的散列(二值矢量)群作为周边散列群的方式。在该方式的情况下,仅存储对一个矢量列举的散列群即可,所以存储容量的界限这样的问题被消除,避免发生检索精度降低的风险。其中,与第一实施方式相比查询变得复杂,所以与第一实施方式相比检索速度降低。
本实施方式的数据管理系统中的基本框架与第一实施方式同样。其中,在本实施方式中,在检索时不使用LSH附近展开索引信息40B,所以成为索引构筑器200(参照图5)仅具备生成LSH立即值索引信息40A的LSH立即值索引信息生成器220的结构。此外,在检索时生成以查询散列为起点的周边散列,所以检索器300的矢量类似性判断处理部330中的检索方式与第一实施方式不同。以下,说明成为与第一实施方式相比的主要变更点的本实施方式的检索方式。
图21是表示本实施方式的检索器300A的结构例的框图。与第一实施方式的差异点是,矢量类似性判断处理部330A具备查询扰动型LSH检索器336、查询扰动型LSH检索+严格检索器337及查询扰动型LSH检索+线性LSH检索器338,来代替图13所示的数据库索引LSH检索器333、数据库索引LSH检索+严格检索器334及数据库索引LSH检索+线性LSH检索器335。
关于查询扰动型LSH检索+严格检索器337及查询扰动型LSH检索+线性LSH检索器338,除了2级缩减方式的前级的检索方式从数据库索引LSH检索替换成查询扰动型LSH检索之外,与第一实施方式的数据库索引LSH检索+严格检索器334及数据库索引LSH检索+线性LSH检索器335同样。因此,以下,省略查询扰动型LSH检索+严格检索器337及查询扰动型LSH检索+线性LSH检索器338的说明,仅说明进行查询扰动型检索的查询扰动型LSH检索器336。
图22是表示由查询扰动型LSH检索器336进行的处理过程的一例的流程图。查询扰动型LSH检索器336例如执行以下的步骤S1101~步骤S1112的处理,输出检索结果80。
步骤S1101:查询扰动型LSH检索器336生成空的检索结果集。
步骤S1102:查询扰动型LSH检索器336取得被指定为vnn函数的自变量的查询矢量、LSH算法的算法名及输出比特长度,生成查询散列。
步骤S1103:查询扰动型LSH检索器336取得检索对象数据集70的表名、储存被指定为vnn函数的自变量的事例矢量的列、LSH算法的算法名及输出比特长度,取得具有基于它们而决定的表名的LSH立即值表。
步骤S1104:查询扰动型LSH检索器336对汉明距离条件变量分配0。
步骤S1105:查询扰动型LSH检索器336生成全部距在步骤S1102中生成的查询散列的距离与汉明距离条件变量的当前值一致的周边散列。
步骤S1106:查询扰动型LSH检索器336按顺序取出在步骤S1105中生成的周边散列。
步骤S1107:查询扰动型LSH检索器336从在步骤S1103中取得的LSH立即值表,取出全部具有与步骤S1106中取出的周边散列相同的值的记录群,将各记录的行ID追加到检索结果集中。
步骤S1108:查询扰动型LSH检索器336判断是否取出了全部在步骤S1105中生成的周边散列。并且,若判断的结果为否,则返回步骤S1106而反复进行以后的处理,若判断的结果为是,则前进至步骤S1109。
步骤S1109:查询扰动型LSH检索器336从检索结果集中去除重复要素。
步骤S1110:查询扰动型LSH检索器336判断检索结果集的要素数是否成为被指定为vnn函数的第三自变量的输出上位件数以上。并且,若判断的结果为否,则前进至步骤S1111,若判断的结果为是,则前进至步骤S1112。
步骤S1111:查询扰动型LSH检索器336将汉明距离条件变量的值追加1。
步骤S1112:查询扰动型LSH检索器336输出检索结果集作为检索结果80,并结束处理。
如上说明,在本实施方式的数据管理系统中,以生成与查询矢量类似的周边矢量,确定与该周边矢量完全一致的事例矢量这样的计算量较少的方法,进行对于数据表20的矢量附近检索。从而,与第一实施方式同样,能够削减在以往的相似性检索中占据计算量的大多数的矢量附近检索的计算量,缩短数据检索的执行时间。
此外,在本实施方式中,与第一实施方式相比对于存储容量的制约被缓和,从而能够处理比较大的比特长度及汉明距离上限,所以避免了伴随比特长度及汉明距离上限的限制而发生检索精度降低这样的风险。
<第三实施方式>
接着,说明第三实施方式的数据管理系统。本实施方式的用于矢量的映射的LSH的方式与第一实施方式不同。即,在第一实施方式中在映射处理中使用按位LSH,但在本实施方式中,在映射处理中使用乘积量化LSH。
乘积量化LSH将被给予的矢量变换为整数矢量(仅由整数的要素构成的多值矢量)。通过对该整数矢量导入第一实施方式所示的索引方法,从而能够排除检索时的矢量距离计算。另外,与第一实施方式同样,若所处理的事例矢量及查询矢量原本是低维的整数矢量,则不需要基于乘积量化LSH的映射,原样使用事例矢量作为后述的事例散列,原样使用查询矢量作为查询散列即可。此外,在该情况下,使用基于事例矢量而生成的周边矢量作为后述的周边散列即可。
乘积量化LSH的代表算法在下述的参考文献4中记载。作为乘积量化LSH,包含该参考文献4中记载的算法而提出了各种算法。
参考文献4:Herve Jegou,Matthijs Douze and Cordelia Schmid,“Productquantization for nearest neighbor search”,Pattern Analysis and MachineIntelligence,IEEE Transactions on 33.1(2011):117-128.
基于乘积量化LSH的散列生成的代表过程如以下那样。
(1)首先,从被给予的事例矢量群所属的空间,取得多个(优选的是相互排他的)部分空间。
(2)在各部分空间中,将事例矢量群分类为预先决定的数目的簇。
(3)关于各事例矢量,生成将各部分空间的簇编号排列而成的整数矢量。这是映射后的矢量。
(4)使用各簇的分布等,根据映射后的矢量间的差异,生成用于近似地算出映射前的矢量的距离的距离模型。
上述的过程(4)中生成的距离模型根据算法而不同,但无论哪个距离模型,都具有在被给予作为散列的两个整数矢量时能够概算出原来的矢量空间中的距离的性质。此外,在大多数的算法中,在簇编号邻接的情况下,原来的矢量空间中的簇的分布区域也邻近。不改变维数而由原来的矢量空间中栅格状地排列的最近邻的点代表的栅格矢量量化是最单纯的乘积量化LSH算法。
本实施方式的数据管理系统中的基本框架与第一实施方式同样。本实施方式与第一实施方式相比的变更点是,将整数矢量作为散列处理、以及作为矢量间距离而使用能够通过乘积量化LSH所提供的距离模型概算出的距离,来代替使用汉明距离。以下,说明这些变更点。
图23是表示本实施方式的索引构筑器200B的结构例的框图。本实施方式的索引构筑器200B如图23所示,具备PQLSH立即值索引信息生成器240代替第一实施方式的索引构筑器200中的LSH立即值索引信息生成器220(参照图5),且具备PQLSH附近展开索引信息生成器250代替第一实施方式的索引构筑器200中的LSH附近展开索引信息生成器230(参照图5)。
PQLSH立即值索引信息生成器240在从索引构筑指令类型分类器210接收到索引构筑语句30的情况下,按照该索引构筑语句30,生成包含PQLSH立即值表和针对该PQLSH立即值表的HashValue列的数据库索引的PQLSH立即值索引信息40C。PQLSH立即值索引信息生成器240所生成的PQLSH立即值索引信息40C除了在PQLSH立即值表的HashValue列中储存的值不是二值矢量而是使用乘积量化LSH算法而生成的整数矢量这点之外,与在第一实施方式中说明的LSH立即值索引信息40A同样。因此,关于PQLSH立即值索引信息生成器240,省略详细的说明。
PQLSH附近展开索引信息生成器250在从索引构筑指令类型分类器210接收到索引构筑语句30的情况下,按照该索引构筑语句30,生成包含PQLSH附近展开表和针对该PQLSH附近展开表的HashValue列及Distance列的数据库复合索引(综合索引)的PQLSH附近展开索引信息40D。
图24是表示PQLSH附近展开表的一例的图。PQLSH附近展开表如图24所示,是由HashValue列(类型为blob)、Distance列(类型为real)及DataRowID列(类型为integer)构成的表数据。在该图24所示的例子中,使用取要素值{0,1,2}的长度为2的整数矢量的散列,将距离上限设为1.0。Distance列的值是通过乘积量化LSH算法所提供的距离模型而概算出的距离。在本例中,设为使用在散列的第一要素值变化1时距离变化0.4、第二要素值变化1时距离变化1.0这样的距离模型。
PQLSH附近展开索引信息生成器250从由索引构筑语句30指定的数据表20取出特征矢量,针对各特征矢量(事例矢量),使用由索引构筑语句30指定的LSH算法及距离模型生成作为整数矢量的事例散列。接着,PQLSH附近展开索引信息生成器250针对所生成的各事例散列,生成距离是由索引构筑语句30指定的距离以下的周边散列群。并且,PQLSH附近展开索引信息生成器250例如将由周边散列、周边散列距事例散列的距离、成为事例散列的基础的事例矢量所属的数据表20的记录的行ID这三个组构成的记录,登记到PQLSH附近展开表。
另外,针对PQLSH附近展开表的HashValue列及Distance列的数据库复合索引与图10所示的第一实施方式的数据库复合索引几乎相同,仅是沿着图10的HammingDistance的值的分支改变为沿着Distance的值的分支。
图25是表示由PQLSH附近展开索引信息生成器250进行的处理过程的一例的流程图。PQLSH附近展开索引信息生成器250若从索引构筑指令类型分类器210接收索引构筑语句30,则例如执行以下的步骤S1201~步骤S1210的处理,将包含PQLSH附近展开表和数据库复合索引的PQLSH附近展开索引信息40D保存至数据库400中。
步骤S1201:PQLSH附近展开索引信息生成器250在数据库400内,生成具有名字为HashValue·类型为blob的列、名字为Distance·类型为real的列、名字为DataRowID·类型为integer的列的表(空的PQLSH附近展开表)。另外,表名的形式设为“AAAA_BBBB_CCCC_DDDD”。其中,AAAA设为处理对象的数据表20的表名,BBBB设为处理对象的列的列名,CCCC设为乘积量化LSH算法的算法名,DDDD设为模型(与算法相关的设定或分析结果)名。例如,aTable_feat_PQ_confA这样的表名被给予所生成的表。
步骤S1202:PQLSH附近展开索引信息生成器250从由索引构筑语句30指定的数据表20,按顺序取出由索引构筑语句30指定的列的特征矢量。
步骤S1203:PQLSH附近展开索引信息生成器250针对在步骤S1202中取出的特征矢量(事例矢量),使用由索引构筑语句30指定的乘积量化LSH算法及模型,生成事例散列。
步骤S1204:PQLSH附近展开索引信息生成器250生成全部距在步骤S1203中得到的事例散列的距离为指定距离以下的周边散列。其中,成为起点的事例散列与各周边散列之间的距离使用乘积量化LSH算法的模型来概算。
步骤S1205:PQLSH附近展开索引信息生成器250按顺序取出在步骤S1204中得到的周边散列。
步骤S1206:PQLSH附近展开索引信息生成器250将由步骤S1205中取出的周边散列、距成为起点的事例散列的距离、成为事例散列的基础的事例矢量所属的数据表20内的记录的行ID这三个组构成的记录追加到PQLSH附近展开表中。
步骤S1207:PQLSH附近展开索引信息生成器250判断是否取出了全部在步骤S1204中得到的周边散列。并且,若判断的结果为否,则返回步骤S1205而反复进行以后的处理,若判断的结果为是,则前进至步骤S1208。
步骤S1208:PQLSH附近展开索引信息生成器250判断是否从处理对象的数据表20取出了全部特征矢量。并且,若判断的结果为否,则返回步骤S1202而反复进行以后的处理,若判断的结果为是,则前进至步骤S1209。
步骤S1209:PQLSH附近展开索引信息生成器250构筑针对经由以上处理而生成的PQLSH附近展开表的HashValue列及Distance列的数据库复合索引(综合索引),保存至数据库400中。
步骤S1210:PQLSH附近展开索引信息生成器250将事例散列的生成中使用的乘积量化LSH算法的模型以与表名相同的文件名(例如aTable_feat_PQ_confA)保存至数据库400。
另外,在上述的步骤S1204中生成周边散列的方法使用与第一实施方式相似的方法,但在本实施方式中,不仅需要决定变更散列的哪个要素,还需要决定将值变更多少。为此只要使用例如Dijkstra法等最佳优先搜索(best-first search)等即可。
图26是表示本实施方式的检索器300B的结构例的框图。与第一实施方式的差异点是,矢量类似性判断处理部330B备线性PQLSH检索器351、数据库索引PQLSH检索器352、数据库索引PQLSH检索+严格检索器353及数据库索引PQLSH检索+线性PQLSH检索器354,来代替图13所示的线性LSH检索器332、数据库索引LSH检索器333、数据库索引LSH检索+严格检索器334及数据库索引LSH检索+线性LSH检索器335。
线性PQLSH检索器351除了所处理的矢量伴随与第一实施方式相比的安装变更而从二值矢量改变为整数矢量之外,与第一实施方式的线性LSH检索器332同样。此外,关于数据库索引PQLSH检索+严格检索器353及数据库索引PQLSH检索+线性PQLSH检索器354,除了2级缩减方式的前级的检索方式从数据库索引LSH检索替换为数据库索引PQLSH检索之外,与第一实施方式的数据库索引LSH检索+严格检索器334及数据库索引LSH检索+线性LSH检索器335同样。因此,以下,省略线性PQLSH检索器351、数据库索引PQLSH检索+严格检索器353及数据库索引PQLSH检索+线性PQLSH检索器354的说明,仅说明进行数据库索引PQLSH检索的数据库索引PQLSH检索器352。另外,关于线性LSH检索,还能够不从第一实施方式变更而原样使用。
图27是表示由数据库索引PQLSH检索器352进行的处理过程的一例的流程图。数据库索引PQLSH检索器352例如执行以下的步骤S1301~步骤S1310的处理,输出检索结果80。
步骤S1301:数据库索引PQLSH检索器352生成空的检索结果集。
步骤S1302:数据库索引PQLSH检索器352取得被指定为vnn函数的自变量的查询矢量、乘积量化LSH算法的算法名及选项参数,生成查询散列。
步骤S1303:数据库索引PQLSH检索器352取得检索对象数据集70的表名、储存被指定为vnn函数的自变量的事例矢量的列、乘积量化LSH算法的算法名及选项参数,取得具有基于它们而决定的表名的PQLSH附近展开表。
步骤S1304:数据库索引PQLSH检索器352对距离条件变量分配0。
步骤S1305:数据库索引PQLSH检索器352对在步骤S1303中取得的PQLSH附近展开表,检索Distance列的值为距离条件变量的当前值以下、且HashValue列的值与在步骤S1302中生成的查询散列一致的记录群,将所得到的行ID的集追加到检索结果集中。
步骤S1306:数据库索引PQLSH检索器352从检索结果集中去除重复要素。
步骤S1307:数据库索引PQLSH检索器352判断检索结果集的要素数是否成为被指定为vnn函数的第三自变量的输出上位件数以上。并且,若判断的结果为否,则前进至步骤S1308,若判断的结果为是,则前进至步骤S1310。
步骤S1308:数据库索引PQLSH检索器352将距离条件变量追加一定量。
步骤S1309:数据库索引PQLSH检索器352判断汉明距离条件变量的值是否为PQLSH附近展开表的距离上限以下。并且,若判断的结果为是,则返回步骤S1305而反复进行以后的处理,若判断的结果为否,则前进至步骤S1310。
步骤S1310:数据库索引PQLSH检索器352输出检索结果集作为检索结果80,并结束处理。
以上,如举具体的例子详细说明的那样,在本实施方式的数据管理系统中,以如下的计算量少的方法进行对于数据表20的矢量附近检索,该方法为,通过预先处理而生成包含PQLSH附近展开索引信息40D的索引信息40,在检索时使用该索引信息40,确定与查询矢量完全一致的周边矢量所对应的事例矢量。从而,与第一实施方式同样,能够削减在以往的相似性检索中占据计算量的大多数的矢量附近检索的计算量,缩短数据检索的执行时间。
<补充说明>
上述的实施方式的数据管理系统作为一例,能够进行基于在使用了作为一般计算机的硬件的执行环境下动作的程序的安装。在该情况下,本实施方式的数据管理系统中的上述的各功能的结构要素(数据登记器100、索引构筑器200(索引构筑器200B)、检索器300(检索器300A、检索器300B))通过硬件和软件(程序)的联动来实现。此外,数据库400通过能够由程序存取的任意的存储器资源来实现。
图28是表示数据管理系统的硬件结构例的框图。数据管理系统例如图28所示,能够设为利用了通常的计算机的硬件结构,该通常的计算机具备CPU(中央处理单元(CentralProcessing Unit))1001等处理器电路、ROM(只读存储器(Read Only Memory))1002或RAM(随机存取存储器(Random Access Memory))1003等存储装置、连接有显示面板或各种操作设备的输入输出I/F1004、与网络连接而进行通信的通信I/F1005、连接各部的总线1006等。
此外,在上述的结构的硬件上执行的程序例如以可安装的形式或可执行的形式的文件的方式被记录至CD-ROM(紧凑盘只读存储器(Compact Disk Read Only Memory))、软磁盘(FD)、CD-R(可记录紧凑盘(Compact Disk Recordable))、DVD(数字多功能盘(DigitalVersatile Disc))等计算机可读取的记录介质中而作为计算机程序制品来提供。此外,也可以构成为,将在上述的结构的硬件上执行的程序储存在与互联网等网络连接的计算机上,经由网络下载从而提供。此外,也可以构成为,将在上述的结构的硬件上执行的程序经由互联网等网络提供或发布。此外,也可以构成为,将在上述的结构的硬件上执行的程序预先编入ROM1002等中而提供。
在上述的结构的硬件上执行的程序成为包含实施方式的数据管理系统的各功能的结构要素的模块结构,例如,通过CPU1001(处理器电路)从上述记录介质读出程序而执行,上述的各部被加载到RAM1003(主存储)上,在RAM1003(主存储)上生成。另外,实施方式的数据管理系统的各功能的结构要素或数据库400也可以是跨越多个计算机而实现的结构。此外,还能够将上述的功能的结构要素的一部分或全部使用ASIC(专用集成电路(Application Specific Integrated Circuit))或FPGA(现场可编程门阵列(Field-Programmable Gate Array))等专用的硬件来实现。
根据以上所述的实施方式的数据管理系统,能够削减矢量附近检索的计算量而缩短数据检索的执行时间。
以上,说明了本发明的实施方式,但在此说明的实施方式作为例子而提示,没有意图限定发明的范围。在此说明的新的实施方式能够以其他各种方式来实施,在不脱离发明的主旨的范围中,能够进行各种省略、置换、变更。在此说明的实施方式及其变形被包含于发明的范围或主旨中,且被包含于权利要求书中记载的发明及其均等的范围中。
Claims (18)
1.一种数据管理系统,其中,具备:
索引构筑部,生成与作为所积蓄的数据的特征矢量的事例矢量类似的周边矢量,构筑用于确定与所生成的所述周边矢量对应的所述事例矢量的索引信息;以及
检索部,按照指定了作为任意的特征矢量的查询矢量的检索请求,使用所述索引信息,确定与所述查询矢量完全一致的所述周边矢量所对应的所述事例矢量,输出基于所确定的所述事例矢量的检索结果,
所述索引构筑部构筑所述索引信息,所述索引信息包含在列要素中具有储存所述周边矢量的第一列和储存该周边矢量相对于所述事例矢量的相似度的第二列的第一表、在列要素中具有储存该第一表的记录的行ID的第一列和储存与该记录的所述周边矢量所对应的所述事例矢量相关的信息的第二列的第二表、以及针对所述第一表中的所述第一列及所述第二列的复合索引,
所述检索部使用所述复合索引,求取与所述查询矢量完全一致并且所述相似度满足条件的所述周边矢量所对应的所述第一表的记录的行ID,基于在储存了所求取的行ID的所述第二表的记录的第二列中储存的信息,来确定所述事例矢量。
2.如权利要求1所述的数据管理系统,其中,
所述索引构筑部构筑所述索引信息,该所述索引信息至少包含在列要素中具有第一列和第二列的表、以及针对该表中的所述第一列的索引,所述第一列储存所述周边矢量,所述第二列储存与该周边矢量所对应的所述事例矢量相关的信息,
所述检索部使用所述索引,求取与所述查询矢量完全一致的所述周边矢量所对应的所述表的记录,基于在所求取的记录的所述第二列中储存的信息来确定所述事例矢量。
3.如权利要求2所述的数据管理系统,其中,
作为所述表的数据结构,使用将在所述第一列中储存的所述周边矢量作为键、将在所述第二列中储存的信息作为值的关联数组或连续存储器配置型数组。
4.如权利要求2所述的数据管理系统,其中,
所述索引构筑部构筑所述索引信息,该所述索引信息包含在列要素中除了所述第一列及所述第二列之外还具有第三列的所述表、以及针对该表中的所述第一列及所述第三列的复合索引,所述第三列储存所述周边矢量相对于所述事例矢量的相似度,
所述检索部使用所述复合索引,求取与所述查询矢量完全一致并且所述相似度满足条件的所述周边矢量所对应的所述表的记录,基于在所求取的记录的所述第二列中储存的信息来确定所述事例矢量。
5.如权利要求4所述的数据管理系统,其中,
作为所述表的数据结构,使用将在所述第一列中储存的所述周边矢量及在所述第三列中储存的所述相似度作为键、将在所述第二列中储存的信息作为值的关联数组或连续存储器配置型数组。
6.如权利要求1所述的数据管理系统,其中,
所述索引构筑部按照与所述查询矢量完全一致的所述周边矢量的值,构筑用于搜索与所述周边矢量所对应的所述事例矢量相关的信息的索引,作为所述索引信息,
所述检索部使用所述索引,确定与所述查询矢量完全一致的所述周边矢量所对应的所述事例矢量。
7.如权利要求1所述的数据管理系统,其中,
所述索引构筑部按照与所述查询矢量完全一致的所述周边矢量的值和该周边矢量相对于所述事例矢量的相似度的条件,构筑用于搜索与所述周边矢量所对应的所述事例矢量相关的信息的复合索引,作为所述索引信息,
所述检索部使用所述复合索引,确定与所述查询矢量完全一致并且所述相似度满足条件的所述周边矢量所对应的所述事例矢量。
8.如权利要求1所述的数据管理系统,其中,
所述检索部在所述检索请求包含输出件数的指定的情况下,一边将所述周边矢量相对于所述事例矢量的相似度的条件从严格一方起阶段性地变化,一边反复进行确定与所述查询矢量完全一致的所述周边矢量所对应的所述事例矢量的处理,直至所确定的所述事例矢量的总数成为所指定的所述输出件数以上为止,在所确定的所述事例矢量的总数成为所指定的所述输出件数以上时,停止所述处理,输出与基于所确定的所述事例矢量的所述输出件数接近的件数的检索结果。
9.如权利要求1所述的数据管理系统,其中,
所述索引构筑部生成与将所述事例矢量映射到收缩矢量空间而成的收缩事例矢量类似的收缩周边矢量,构筑用于确定与所生成的所述收缩周边矢量对应的所述事例矢量的所述索引信息,
所述检索部确定与将所述查询矢量映射到与所述索引构筑部共通的收缩矢量空间而成的收缩查询矢量完全一致的所述收缩周边矢量所对应的所述事例矢量。
10.如权利要求9所述的数据管理系统,其中,
在从所述事例矢量向所述收缩事例矢量的映射、及从所述查询矢量向所述收缩查询矢量的映射中,使用局部敏感散列LSH技术。
11.如权利要求10所述的数据管理系统,其中,
作为所述LSH技术,使用按位LSH,该按位LSH将所述事例矢量变换为作为各维仅取二值的二值矢量的所述收缩事例矢量,且将所述查询矢量变换为作为各维仅取二值的二值矢量的所述收缩查询矢量。
12.如权利要求11所述的数据管理系统,其中,
所述索引构筑部生成作为二值矢量的所述收缩周边矢量,构筑将所生成的所述收缩周边矢量看作二进制数而作为整数储存而成的所述索引信息,
所述检索部将作为二值矢量的所述收缩查询矢量看作二进制数而作为整数来使用,确定与所述收缩查询矢量完全一致的所述收缩周边矢量所对应的所述事例矢量。
13.如权利要求10所述的数据管理系统,其中,
作为所述LSH技术,使用乘积量化LSH,该乘积量化LSH将所述事例矢量变换为作为整数矢量的所述收缩事例矢量,且将所述查询矢量变换为作为整数矢量的所述收缩查询矢量。
14.如权利要求1至5的任一项所述的数据管理系统,其中,
所述检索部通过根据所述表的记录数而从多个检索方式之中选择的检索方式,进行所述事例矢量的检索,所述多个检索方式包括使用了所述索引信息的检索方式、以及使用原来的特征矢量或被映射到收缩矢量空间的特征矢量进行线性检索的检索方式。
15.如权利要求1所述的数据管理系统,其中,
所述检索部将包含使用了所述索引信息的检索方式、以及使用原来的特征矢量或被映射到收缩矢量空间的特征矢量进行线性检索的检索方式的多个检索方式之中的任意检索方式以多级的方式组合,进行所述事例矢量的检索。
16.一种数据管理系统,其中,具备:
保持部,保持包含事例矢量的数据表,所述事例矢量是所积蓄的数据的特征矢量;以及
检索部,按照指定了作为任意的特征矢量的查询矢量的检索请求,生成与所述查询矢量类似的周边矢量,确定与所生成的所述周边矢量完全一致的所述事例矢量,输出基于所确定的所述事例矢量的检索结果,
所述检索部构筑索引信息,所述索引信息包含在列要素中具有储存所述周边矢量的第一列和储存该周边矢量相对于所述事例矢量的相似度的第二列的第一表、在列要素中具有储存该第一表的记录的行ID的第一列和储存与该记录的所述周边矢量所对应的所述事例矢量相关的信息的第二列的第二表、以及针对所述第一表中的所述第一列及所述第二列的复合索引,
所述检索部使用所述复合索引,求取与所述查询矢量完全一致并且所述相似度满足条件的所述周边矢量所对应的所述第一表的记录的行ID,基于在储存了所求取的行ID的所述第二表的记录的第二列中储存的信息,来确定所述事例矢量。
17.一种数据管理方法,在数据管理系统中执行,其中,包括:
生成与作为所积蓄的数据的特征矢量的事例矢量类似的周边矢量,构筑用于确定与所生成的所述周边矢量对应的所述事例矢量的索引信息的步骤;以及
按照指定了作为任意的特征矢量的查询矢量的检索请求,使用所述索引信息,确定与所述查询矢量完全一致的所述周边矢量所对应的所述事例矢量,输出基于所确定的所述事例矢量的检索结果的步骤,
所述索引信息包含在列要素中具有储存所述周边矢量的第一列和储存该周边矢量相对于所述事例矢量的相似度的第二列的第一表、在列要素中具有储存该第一表的记录的行ID的第一列和储存与该记录的所述周边矢量所对应的所述事例矢量相关的信息的第二列的第二表、以及针对所述第一表中的所述第一列及所述第二列的复合索引,
使用所述复合索引,求取与所述查询矢量完全一致并且所述相似度满足条件的所述周边矢量所对应的所述第一表的记录的行ID,基于在储存了所求取的行ID的所述第二表的记录的第二列中储存的信息,来确定所述事例矢量。
18.一种记录介质,是存储有计算机程序的计算机可读取记录介质,
用于使所述计算机实现以下功能:
生成与作为所积蓄的数据的特征矢量的事例矢量类似的周边矢量,构筑用于确定与所生成的所述周边矢量对应的所述事例矢量的索引信息的功能;以及
按照指定了作为任意的特征矢量的查询矢量的检索请求,使用所述索引信息,确定与所述查询矢量完全一致的所述周边矢量所对应的所述事例矢量,输出基于所确定的所述事例矢量的检索结果的功能,
所述索引信息包含在列要素中具有储存所述周边矢量的第一列和储存该周边矢量相对于所述事例矢量的相似度的第二列的第一表、在列要素中具有储存该第一表的记录的行ID的第一列和储存与该记录的所述周边矢量所对应的所述事例矢量相关的信息的第二列的第二表、以及针对所述第一表中的所述第一列及所述第二列的复合索引,
使用所述复合索引,求取与所述查询矢量完全一致并且所述相似度满足条件的所述周边矢量所对应的所述第一表的记录的行ID,基于在储存了所求取的行ID的所述第二表的记录的第二列中储存的信息,来确定所述事例矢量。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2015/080446 WO2017072890A1 (ja) | 2015-10-28 | 2015-10-28 | データ管理システム、データ管理方法およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108027816A CN108027816A (zh) | 2018-05-11 |
CN108027816B true CN108027816B (zh) | 2021-10-26 |
Family
ID=58629969
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580083082.3A Active CN108027816B (zh) | 2015-10-28 | 2015-10-28 | 数据管理系统、数据管理方法及记录介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11281645B2 (zh) |
JP (1) | JP6434162B2 (zh) |
CN (1) | CN108027816B (zh) |
WO (1) | WO2017072890A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019216137A1 (ja) * | 2018-05-08 | 2019-11-14 | 日本電信電話株式会社 | 安全性評価装置、安全性評価方法、およびプログラム |
CN109446436B (zh) * | 2018-09-19 | 2020-07-03 | 西安电子科技大学 | 基于lsh的面向多维数据的安全范围查询方法及系统 |
US11604777B1 (en) * | 2020-09-28 | 2023-03-14 | Amazon Technologies, Inc. | Indexing service for petabyte-scale datasets |
US11810596B2 (en) * | 2021-08-16 | 2023-11-07 | Hong Kong Applied Science and Technology Research Institute Company Limited | Apparatus and method for speech-emotion recognition with quantified emotional states |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1750120A (zh) * | 2004-09-16 | 2006-03-22 | 株式会社东芝 | 索引设备和索引方法 |
CN1863315A (zh) * | 2002-04-18 | 2006-11-15 | 株式会社东芝 | 运动图像编码/解码方法和装置 |
CN101290619A (zh) * | 2007-04-20 | 2008-10-22 | 西北民族大学 | 基于内容的藏文网站唐卡图像搜索引擎智能机器人搜索方法 |
CN101404032A (zh) * | 2008-11-11 | 2009-04-08 | 清华大学 | 一种基于内容的视频检索方法及系统 |
CN101458695A (zh) * | 2008-12-18 | 2009-06-17 | 西交利物浦大学 | 基于关键词和内容特征的混合图片索引构建和查询方法及其应用 |
CN101833511A (zh) * | 2010-03-29 | 2010-09-15 | 瑞斯康达科技发展股份有限公司 | 数据管理方法、装置和系统 |
CN103425719A (zh) * | 2012-05-23 | 2013-12-04 | 株式会社日立制作所 | 结构化文档检索装置和程序 |
CN103839242A (zh) * | 2014-01-15 | 2014-06-04 | 中国科学院电子学研究所 | 一种基于高维索引的图像快速超分辨率增强方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9622055D0 (en) * | 1996-10-23 | 1996-12-18 | Univ Strathclyde | Vector quantisation |
JP2000035965A (ja) | 1998-07-17 | 2000-02-02 | Nippon Telegr & Teleph Corp <Ntt> | 類似特徴量の検索方法及び装置及び類似特徴量の検索プログラムを格納した記憶媒体 |
JP2001052024A (ja) | 1999-08-13 | 2001-02-23 | Nippon Telegr & Teleph Corp <Ntt> | 類似特徴量の検索方法及び装置及び類似特徴量の検索プログラムを格納した記憶媒体 |
CN101536035B (zh) * | 2006-08-31 | 2012-09-26 | 公立大学法人大阪府立大学 | 图像识别方法、以及图像识别装置 |
JPWO2013129580A1 (ja) * | 2012-02-28 | 2015-07-30 | 公立大学法人大阪府立大学 | 近似最近傍探索装置、近似最近傍探索方法およびそのプログラム |
US9141676B2 (en) * | 2013-12-02 | 2015-09-22 | Rakuten Usa, Inc. | Systems and methods of modeling object networks |
US9734176B2 (en) * | 2014-06-12 | 2017-08-15 | International Business Machines Corporation | Index merge ordering |
-
2015
- 2015-10-28 JP JP2017547261A patent/JP6434162B2/ja active Active
- 2015-10-28 WO PCT/JP2015/080446 patent/WO2017072890A1/ja active Application Filing
- 2015-10-28 CN CN201580083082.3A patent/CN108027816B/zh active Active
-
2018
- 2018-03-21 US US15/927,124 patent/US11281645B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1863315A (zh) * | 2002-04-18 | 2006-11-15 | 株式会社东芝 | 运动图像编码/解码方法和装置 |
CN1750120A (zh) * | 2004-09-16 | 2006-03-22 | 株式会社东芝 | 索引设备和索引方法 |
CN101290619A (zh) * | 2007-04-20 | 2008-10-22 | 西北民族大学 | 基于内容的藏文网站唐卡图像搜索引擎智能机器人搜索方法 |
CN101404032A (zh) * | 2008-11-11 | 2009-04-08 | 清华大学 | 一种基于内容的视频检索方法及系统 |
CN101458695A (zh) * | 2008-12-18 | 2009-06-17 | 西交利物浦大学 | 基于关键词和内容特征的混合图片索引构建和查询方法及其应用 |
CN101833511A (zh) * | 2010-03-29 | 2010-09-15 | 瑞斯康达科技发展股份有限公司 | 数据管理方法、装置和系统 |
CN103425719A (zh) * | 2012-05-23 | 2013-12-04 | 株式会社日立制作所 | 结构化文档检索装置和程序 |
CN103839242A (zh) * | 2014-01-15 | 2014-06-04 | 中国科学院电子学研究所 | 一种基于高维索引的图像快速超分辨率增强方法 |
Also Published As
Publication number | Publication date |
---|---|
US20180210907A1 (en) | 2018-07-26 |
CN108027816A (zh) | 2018-05-11 |
JPWO2017072890A1 (ja) | 2018-05-17 |
WO2017072890A1 (ja) | 2017-05-04 |
JP6434162B2 (ja) | 2018-12-05 |
US11281645B2 (en) | 2022-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Norouzi et al. | Fast exact search in hamming space with multi-index hashing | |
CN107391554B (zh) | 高效分布式局部敏感哈希方法 | |
JP6216467B2 (ja) | 視覚・意味複合ネットワーク、および当該ネットワークを形成するための方法 | |
CN108027816B (zh) | 数据管理系统、数据管理方法及记录介质 | |
Zhai et al. | Supervised distributed hashing for large-scale multimedia retrieval | |
JPWO2013129580A1 (ja) | 近似最近傍探索装置、近似最近傍探索方法およびそのプログラム | |
Fu et al. | Atsne: Efficient and robust visualization on gpu through hierarchical optimization | |
CN113961528A (zh) | 基于知识图谱的文件语义关联存储系统及方法 | |
Han et al. | VRFP: On-the-fly video retrieval using web images and fast fisher vector products | |
Douze et al. | The faiss library | |
Li et al. | Two-stage hashing for fast document retrieval | |
JP6279771B2 (ja) | グループレットによる相互参照索引付け | |
Eghbali et al. | Online nearest neighbor search using hamming weight trees | |
KR101467707B1 (ko) | 지식 베이스의 개체 매칭 방법 및 이를 위한 장치 | |
JP2017045291A (ja) | 類似画像検索システム | |
JP5355483B2 (ja) | 略語完全語復元装置とその方法と、プログラム | |
CN113220820A (zh) | 基于图的高效sparql查询应答方法、装置和设备 | |
JP2013242675A (ja) | 分散情報制御装置、分散情報検索方法、データ分散配置方法、及びプログラム | |
CN110019096A (zh) | 索引文件的生成方法及装置 | |
KR102062139B1 (ko) | 지능형 자료구조 기반의 데이터 처리 방법 및 그를 위한 장치 | |
CN116547647A (zh) | 检索装置和检索方法 | |
KR101592670B1 (ko) | 인덱스를 이용하는 데이터 검색 장치 및 이를 이용하는 방법 | |
JP3615439B2 (ja) | 類似特徴量の検索方法,その検索装置およびその検索プログラム記録媒体 | |
JP2001022766A (ja) | 多次元データベースの高速処理方法および装置 | |
JP6666312B2 (ja) | 多次元データ管理システム及び多次元データ管理方法 |
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 |