向量数据的查询方法技术

技术编号:38412447 阅读:19 留言:0更新日期:2023-08-07 11:17
本发明专利技术提供了一种向量数据的查询方法,包括:使用聚类算法将查询向量库的所有待查询向量分为多个向量区域,每个向量区域具有一个聚类中心向量;输入第一查询向量,查找第一查询向量与向量区域距离最小的n个向量区域;将第一查询向量与对应的n个向量区域存储在缓存区中;输入第二查询向量,在缓存区中查询是否存在与第二查询向量相同的查询向量;如果有,则直接查找对应的n个向量区域作为第二查询向量对应的n个向量区域;如果不存在,则在存储区中进行查找第二查询向量与区域距离最小的n个区域的操作,将第二查询向量和对应的n个向量区域存储在缓存区中;在存储区中进行从n个向量区域中查询与第二查询向量距离较小的k个待查询向量。询向量。询向量。

【技术实现步骤摘要】
向量数据的查询方法


[0001]本专利技术涉及数据处理
,尤其是涉及一种向量数据的查询方法。

技术介绍

[0002]通过向量数据的查询方法,可以根据输入的查询向量在大量的待查询向量中中查找到想要的数据。在向量查询算法中,主要利用一些相似性对比来得到想要的数据,而这些对比方式主要是利用距离计算得到的。
[0003]近似最近邻搜索索引以近似最近邻搜索算法为基础,是用于在高维空间中有效搜索给定查询点的最近邻的数据结构,以搜索准确性为代价提高最近邻查询速度,主流向量数据库都使用近似最近邻检索索引。现有技术的近似最近邻搜索算法大多是基于内存的算法,基于内存的算法意味着是在进行查询操作前需要将存储区中所有的向量数据载入进内存。
[0004]但是,随着向量数据的爆炸性增长和向量数据处理技术在实际业务中的应用场景增多,需要向量数据库处理的向量数据量从百万级别上升到了亿级别,在亿级别或更高的数据量情况下,将存储区中所有的向量数据载入进内存变得不现实,将现有技术的基于内存的搜索算法应用于硬盘上的向量数据会带来巨大的性能损耗,对硬盘I/O带来了巨大压力。

技术实现思路

[0005]本专利技术的目的在于提供一种向量数据的查询方法,可以减少在硬盘中进行查询向量的查询计算的步骤,从而,可以减少硬盘I/O压力和性能损耗。
[0006]为了达到上述目的,本专利技术提供了一种向量数据的查询方法,包括:使用聚类算法将查询向量库的所有待查询向量分为多个向量区域,每个所述向量区域具有一个聚类中心向量;输入第一查询向量,查找所述第一查询向量与所述向量区域距离最小的n个向量区域;将所述第一查询向量与对应的n个向量区域存储在缓存区中;输入第二查询向量,在所述缓存区中查询是否存在与所述第二查询向量相同的查询向量;如果所述缓存区中存在与所述第二查询向量相同的查询向量,则直接查找该查询向量对应的n个向量区域,作为所述第二查询向量对应的n个向量区域;如果所述缓存区中查询不存在与所述第二查询向量相同的查询向量,则在存储区中进行查找所述第二查询向量与所述向量区域距离最小的n个向量区域的操作,同时,将所述第二查询向量和对应的n个向量区域存储在所述缓存区中或者使用所述第二查询向量和对应的n个向量区域替换所述缓存区中的某一查询向量和对应的n个向量区域;在存储区中进行从n个向量区域中查询与所述第二查询向量距离较小的k个待查
询向量,n和k均为大于1的整数。
[0007]可选的,在所述的向量数据的查询方法中,所述聚类中心向量为每个所述向量区域的代表。
[0008]可选的,在所述的向量数据的查询方法中,所述缓存区中存储的查询向量的数量小于设定值时,将所述第二查询向量和对应的n个向量区域存储在所述缓存区中。
[0009]可选的,在所述的向量数据的查询方法中,所述缓存区中存储的查询向量的数量大于或等于设定值时,使用所述第二查询向量和对应的n个向量区域替换所述缓存区中的某一查询向量和对应的n个向量区域。
[0010]可选的,在所述的向量数据的查询方法中,使用所述第二查询向量和对应的n个向量区域替换所述缓存区中的未被访问时间最长的查询向量和对应的n个向量区域。
[0011]在本专利技术提供的向量数据的查询方法中,将向量数据的查询步骤按照前后顺序分成两部分,前面一部分步骤在缓存区中进行,计算出中间结果,后面一部分步骤在存储区中进行。在前面一部分步骤中,一边计算中间结果一边将中间结果存在缓存区中。之后每进行一步查询向量的查询,先在缓存区中查询是否存在相同的查询向量,如果有则直接在缓存区中调用中间结果,在存储区中进行下部分查询的计算。本专利技术减少了在硬盘中进行查询向量的查询计算的步骤,从而,减少了硬盘I/O压力和性能损耗。
附图说明
[0012]图1是本专利技术实施例一的向量数据的查询方法的流程图。
具体实施方式
[0013]下面将结合示意图对本专利技术的具体实施方式进行更详细的描述。根据下列描述,本专利技术的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本专利技术实施例的目的。
[0014]在下文中,术语“第一”“第二”等用于在类似要素之间进行区分,且未必是用于描述特定次序或时间顺序。要理解,在适当情况下,如此使用的这些术语可替换。类似的,如果本文所述的方法包括一系列步骤,且本文所呈现的这些步骤的顺序并非必须是可执行这些步骤的唯一顺序,且一些所述的步骤可被省略和/或一些本文未描述的其他步骤可被添加到该方法。
[0015]请参照图1,本专利技术实施例一提供了一种向量数据的查询方法,包括:S11:使用聚类算法将查询向量库的所有待查询向量分为多个向量区域,每个向量区域具有一个聚类中心向量;S12:输入第一查询向量,查找所述第一查询向量与所述向量区域距离最小的n个向量区域;S13:将所述第一查询向量与对应的n个向量区域存储在缓存区中;S14:输入第二查询向量,在所述缓存区中查询是否存在与所述第二查询向量相同的查询向量;S15:如果所述缓存区中存在与所述第二查询向量相同的查询向量,则直接查找该查询向量对应的n个向量区域,作为所述第二查询向量对应的n个向量区域;
S16:如果所述缓存区中查询不存在与所述第二查询向量相同的查询向量,则在存储区中进行查找所述第二查询向量与所述向量区域距离最小的n个向量区域的操作,同时,将所述第二查询向量和对应的n个向量区域存储在所述缓存区中或者使用所述第二查询向量和对应的n个向量区域替换所述缓存区中的某一查询向量和对应的n个向量区域;S17:在存储区中进行从n个向量区域中查询与所述第二查询向量距离较小的k个待查询向量,n和k均为大于1的整数。
[0016]其中,聚类中心向量为每个向量区域的代表。聚类中心由聚类算法计算得到,聚类中心向量的具体计算方法在此不做赘述。
[0017]优选的,查询向量为多个,所以并不只是第一查询向量和第二查询向量,第一查询向量和第二查询向量只是用于对两个查询向量的区分,当然第一查询向量和第二查询向量的id可能相同。如果缓存区中没有存储查询向量,则多个查询向量按照步骤S14~S17进行。如果执行到一段时间,缓存区已经存有若干查询向量了,则以后的多个向量均执行步骤S14~S17。查询向量根据用户的需要选择,每次是对一个查询向量进行查询,后续的查询向量可以借助前面的查询向量的中间计算结果,以减少查询步骤。
[0018]优选的,缓存区中存储的查询向量和对应的n个向量区域的数量小于设定值时,步骤S16中,将第二查询向量和对应的n个向量区域存储在缓存区中。缓存区中存储的查询向量和对应的n个向量区域的数量大于或等于设定值时,步骤S16中,使用第二查询向量和对应的n个向量区域替换缓存区中的某一查询向量和对应的n个向量区域。替换的时候,优先替换缓存区中未被访问时间最长的查询向量和对应的n个向量区域,替换是指替换其存储空间。缓存区中一个查询向量必定有一个对应的n个向量区域,查询向量以id的形式区分,所以判断两个查询向本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种向量数据的查询方法,其特征在于,包括:使用聚类算法将查询向量库的所有待查询向量分为多个向量区域,每个所述向量区域具有一个聚类中心向量;输入第一查询向量,查找所述第一查询向量与所述向量区域距离最小的n个向量区域;将所述第一查询向量与对应的n个向量区域存储在缓存区中;输入第二查询向量,在所述缓存区中查询是否存在与所述第二查询向量相同的查询向量;如果所述缓存区中存在与所述第二查询向量相同的查询向量,则直接查找该查询向量对应的n个向量区域,作为所述第二查询向量对应的n个向量区域;如果所述缓存区中查询不存在与所述第二查询向量相同的查询向量,则在存储区中进行查找所述第二查询向量与所述向量区域距离最小的n个向量区域的操作,同时,将所述第二查询向量和对应的n个向量区域存储在所述缓存区中或者使用所述第二查询向量和对应的n个向量区域替换所述缓存区中的某一查...

【专利技术属性】
技术研发人员:吴一梵苏鹏李剑楠黄炎李恒阎虎青陈书俊
申请(专利权)人:上海爱可生信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1