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




