背景技术
现有技术的近似最近邻搜索算法大多是基于内存的算法,基于内存的算法意味着是在进行查询操作前需要将存储区中所有的向量数据载入进内存。随着向量数据的爆炸性增长,需要向量数据库处理的向量数据量从百万级别上升到了亿级别,在这种情况下,将存储区中所有的向量数据载入进内存变得不现实,将现有技术的基于内存的搜索算法应用于硬盘上的向量数据会带来巨大的性能损耗,对硬盘I/O带来了巨大压力。
本发明的目的在于提供一种向量数据的查询方法,可以减少在硬盘中进行查询向量的查询计算的步骤,从而,可以减少硬盘I/O压力和性能损耗。
技术方案
使用聚类算法将查询向量库的所有待查询向量分为多个向量区域,每个所述向量区域具有一个聚类中心向量;
输入第一查询向量,查找所述第一查询向量与所述向量区域距离最小的n个向量区域;
将所述第一查询向量与对应的n个向量区域存储在缓存区中;
输入第二查询向量,在所述缓存区中查询是否存在与所述第二查询向量相同的查询向量;
如果所述缓存区中存在与所述第二查询向量相同的查询向量,则直接查找该查询向量对应的n个向量区域,作为所述第二查询向量对应的n个向量区域;
如果所述缓存区中查询不存在与所述第二查询向量相同的查询向量,则在存储区中进行查找所述第二查询向量与所述向量区域距离最小的n个向量区域的操作,同时,将所述第二查询向量和对应的n个向量区域存储在所述缓存区中或者使用所述第二查询向量和对应的n个向量区域替换所述缓存区中的某一查询向量和对应的n个向量区域;
在存储区中进行从n个向量区域中查询与所述第二查询向量距离较小的k个待查询向量,n和k均为大于1的整数。
可选的,在所述的向量数据的查询方法中,所述缓存区中存储的查询向量的数量小于设定值时,将所述第二查询向量和对应的n个向量区域存储在所述缓存区中。
可选的,在所述的向量数据的查询方法中,所述缓存区中存储的查询向量的数量大于或等于设定值时,使用所述第二查询向量和对应的n个向量区域替换所述缓存区中的未被访问时间最长的查询向量和对应的n个向量区域。




