本发明涉及数据处理,尤其是涉及一种向量数据的查询方法。
背景技术:
1、通过向量数据的查询方法,可以根据输入的查询向量在大量的待查询向量中中查找到想要的数据。在向量查询算法中,主要利用一些相似性对比来得到想要的数据,而这些对比方式主要是利用距离计算得到的。
2、近似最近邻搜索索引以近似最近邻搜索算法为基础,是用于在高维空间中有效搜索给定查询点的最近邻的数据结构,以搜索准确性为代价提高最近邻查询速度,主流向量数据库都使用近似最近邻检索索引。现有技术的近似最近邻搜索算法大多是基于内存的算法,基于内存的算法意味着是在进行查询操作前需要将存储区中所有的向量数据载入进内存。
3、但是,随着向量数据的爆炸性增长和向量数据处理技术在实际业务中的应用场景增多,需要向量数据库处理的向量数据量从百万级别上升到了亿级别,在亿级别或更高的数据量情况下,将存储区中所有的向量数据载入进内存变得不现实,将现有技术的基于内存的搜索算法应用于硬盘上的向量数据会带来巨大的性能损耗,对硬盘i/o带来了巨大压力。
技术实现思路
1、本发明的目的在于提供一种向量数据的查询方法,可以减少在硬盘中进行查询向量的查询计算的步骤,从而,可以减少硬盘i/o压力和性能损耗。
2、为了达到上述目的,本发明提供了一种向量数据的查询方法,包括:
3、使用聚类算法将查询向量库的所有待查询向量分为多个向量区域,每个所述向量区域具有一个聚类中心向量;
4、输入第一查询向量,查找所述第一查询向量与所述向量区域距离最小的n个向量区域;
5、将所述第一查询向量与对应的n个向量区域存储在缓存区中;
6、输入第二查询向量,在所述缓存区中查询是否存在与所述第二查询向量相同的查询向量;
7、如果所述缓存区中存在与所述第二查询向量相同的查询向量,则直接查找该查询向量对应的n个向量区域,作为所述第二查询向量对应的n个向量区域;
8、如果所述缓存区中查询不存在与所述第二查询向量相同的查询向量,则在存储区中进行查找所述第二查询向量与所述向量区域距离最小的n个向量区域的操作,同时,将所述第二查询向量和对应的n个向量区域存储在所述缓存区中或者使用所述第二查询向量和对应的n个向量区域替换所述缓存区中的某一查询向量和对应的n个向量区域;
9、在存储区中进行从n个向量区域中查询与所述第二查询向量距离较小的k个待查询向量,n和k均为大于1的整数。
10、可选的,在所述的向量数据的查询方法中,所述聚类中心向量为每个所述向量区域的代表。
11、可选的,在所述的向量数据的查询方法中,所述缓存区中存储的查询向量的数量小于设定值时,将所述第二查询向量和对应的n个向量区域存储在所述缓存区中。
12、可选的,在所述的向量数据的查询方法中,所述缓存区中存储的查询向量的数量大于或等于设定值时,使用所述第二查询向量和对应的n个向量区域替换所述缓存区中的某一查询向量和对应的n个向量区域。
13、可选的,在所述的向量数据的查询方法中,使用所述第二查询向量和对应的n个向量区域替换所述缓存区中的未被访问时间最长的查询向量和对应的n个向量区域。
14、在本发明提供的向量数据的查询方法中,将向量数据的查询步骤按照前后顺序分成两部分,前面一部分步骤在缓存区中进行,计算出中间结果,后面一部分步骤在存储区中进行。在前面一部分步骤中,一边计算中间结果一边将中间结果存在缓存区中。之后每进行一步查询向量的查询,先在缓存区中查询是否存在相同的查询向量,如果有则直接在缓存区中调用中间结果,在存储区中进行下部分查询的计算。本发明减少了在硬盘中进行查询向量的查询计算的步骤,从而,减少了硬盘i/o压力和性能损耗。
1.一种向量数据的查询方法,其特征在于,包括:
2.如权利要求1所述的向量数据的查询方法,其特征在于,所述聚类中心向量为每个所述向量区域的代表。
3.如权利要求1所述的向量数据的查询方法,其特征在于,所述缓存区中存储的查询向量的数量小于设定值时,将所述第二查询向量和对应的n个向量区域存储在所述缓存区中。
4.如权利要求1所述的向量数据的查询方法,其特征在于,所述缓存区中存储的查询向量的数量大于或等于设定值时,使用所述第二查询向量和对应的n个向量区域替换所述缓存区中的某一查询向量和对应的n个向量区域。
5.如权利要求4所述的向量数据的查询方法,其特征在于,使用所述第二查询向量和对应的n个向量区域替换所述缓存区中的未被访问时间最长的查询向量和对应的n个向量区域。