基于缓存优化HNSW算法的向量数据查询方法技术

技术编号:38757717 阅读:15 留言:0更新日期:2023-09-10 09:42
本发明专利技术提供了一种基于缓存优化HNSW算法的向量数据查询方法,包括:将所有待查询向量形成索引图,索引图包括多层;输入第一查询向量,从索引图的最高层开始查询与第一查询向量距离最近的待查询向量,以作为下一层的入口,直到查找出索引图的最底层入口;将第一查询向量和对应的最底层入口存储在缓存区中;输入第二查询向量,在缓存区中查询是否存在与第二查询向量相同的查询向量;如果有,则直接查找该查询向量对应的最底层入口,作为第二查询向量对应的最底层入口;如果没有,则在存储区中,从索引图的最高层再一步步查询对应的最底层入口;在存储区中,进行以最底层入口作为起点,查询与第二查询向量距离最小的k个待查询向量的操作。操作。操作。

【技术实现步骤摘要】
基于缓存优化HNSW算法的向量数据查询方法


[0001]本专利技术涉及数据处理
,尤其是涉及一种基于缓存优化HNSW算法的向量数据查询方法。

技术介绍

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

技术实现思路

[0005]本专利技术的目的在于提供一种基于缓存优化HNSW算法的向量数据查询方法,可以减少在硬盘中进行查询向量的查询计算的步骤,从而,可以减少硬盘I/O压力和性能损耗。
[0006]为了达到上述目的,本专利技术提供了一种基于缓存优化HNSW算法的向量数据查询方法,包括:
[0007]将所有待查询向量形成索引图,所述索引图包括多层;
[0008]输入第一查询向量,从索引图的最高层开始查询与所述第一查询向量距离最近的待查询向量,以作为下一层的入口,直到查找出所述索引图的最底层入口;
[0009]将所述第一查询向量和对应的最底层入口存储在缓存区中;
[0010]输入第二查询向量,在所述缓存区中查询是否存在与所述第二查询向量相同的查询向量;
[0011]如果所述缓存区中存在与所述第二查询向量相同的查询向量,则直接查找该查询向量对应的最底层入口,作为所述第二查询向量对应的最底层入口;
[0012]如果所述缓存区中不存在与所述第二查询向量相同的查询向量,则在存储区中,从索引图的最高层开始向下查询与所述第二查询向量距离最近的待查询向量,以作为每层的入口,直到查找出所述索引图的最底层入口,同时,将所述第二查询向量和对应的最底层入口存储在所述缓存区中或者使用所述第二查询向量和对应的最底层入口替换所述缓存
区中的某一查询向量和对应的最底层入口;
[0013]在存储区中,进行以所述最底层入口作为起点,查询与所述第二查询向量距离最小的k个待查询向量的操作,k为大于1的整数。
[0014]可选的,在所述的基于缓存优化HNSW算法的向量数据查询方法中,所有待查询向量作为所述索引图的结点。
[0015]可选的,在所述的基于缓存优化HNSW算法的向量数据查询方法中,所述缓存区中存储的查询向量的数量小于设定值时,将所述第二查询向量和对应的最底层入口存储在所述缓存区中。
[0016]可选的,在所述的基于缓存优化HNSW算法的向量数据查询方法中,所述缓存区中存储的查询向量的数量大于或等于设定值时,使用所述第二查询向量和对应的最底层入口替换所述缓存区中的某一查询向量和对应的最底层入口。
[0017]可选的,在所述的基于缓存优化HNSW算法的向量数据查询方法中,使用所述第二查询向量和对应的最底层入口替换所述缓存区中的未被访问时间最长的查询向量和对应的最底层入口。
[0018]在本专利技术提供的基于缓存优化HNSW算法的向量数据查询方法中,将向量数据的查询步骤按照前后顺序分成两部分,前面一部分步骤在缓存区中进行,计算出中间结果,后面一部分步骤在存储区中进行。在前面一部分步骤中,一边计算中间结果一边将中间结果存在缓存区中。之后每进行一步查询向量的查询,先在缓存区中查询是否存在相同的查询向量,如果有则直接在缓存区中调用中间结果,在存储区中进行下部分查询的计算。本专利技术减少了在硬盘中进行查询向量的查询计算的步骤,从而,减少了硬盘I/O压力和性能损耗。
附图说明
[0019]图1是本专利技术实施例的基于缓存优化HNSW算法的向量数据查询方法的流程图。
具体实施方式
[0020]下面将结合示意图对本专利技术的具体实施方式进行更详细的描述。根据下列描述,本专利技术的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本专利技术实施例的目的。
[0021]在下文中,术语“第一”“第二”等用于在类似要素之间进行区分,且未必是用于描述特定次序或时间顺序。要理解,在适当情况下,如此使用的这些术语可替换。类似的,如果本文所述的方法包括一系列步骤,且本文所呈现的这些步骤的顺序并非必须是可执行这些步骤的唯一顺序,且一些所述的步骤可被省略和/或一些本文未描述的其他步骤可被添加到该方法。
[0022]请参照图1,本专利技术实施例提供了一种基于缓存优化HNSW算法的向量数据查询方法,包括:
[0023]S21:将所有待查询向量形成索引图,所述索引图包括多层;
[0024]S22:输入第一查询向量,从索引图的最高层开始查询与所述第一查询向量距离最近的待查询向量,以作为下一层的入口,直到查找出所述索引图的最底层入口;
[0025]S23:将所述第一查询向量和对应的最底层入口存储在缓存区中;
[0026]S24:输入第二查询向量,在所述缓存区中查询是否存在与所述第二查询向量相同的查询向量;
[0027]S25:如果所述缓存区中存在与所述第二查询向量相同的查询向量,则直接查找该查询向量对应的最底层入口,作为所述第二查询向量对应的最底层入口;
[0028]S26:如果所述缓存区中不存在与所述第二查询向量相同的查询向量,则在存储区中,从索引图的最高层开始向下查询与所述第二查询向量距离最近的待查询向量,以作为每层的入口,直到查找出所述索引图的最底层入口,同时,将所述第二查询向量和对应的最底层入口存储在所述缓存区中或者使用所述第二查询向量和对应的最底层入口替换所述缓存区中的某一查询向量和对应的最底层入口;
[0029]S27:在存储区中,以最底层入口作为起点,查询与第二查询向量距离最小的k个待查询向量,k为大于1的整数。
[0030]进一步的,所有待查询向量作为索引图的结点。索引图可以是将待查询向量作为结点按照HNSW(Hierarchical Navigable Small World,分层可导航小世界图)算法形成的索引图。HNSW算法是在NSW算法之上的更进一步的优化版本。其核心思路就是在NSW算法的基础上引入跳表来实现分层的思路,从而进一步优化到目标向量的检索速度。具体而言,每一个新插入HNSW图的数据点(结点)都要先根据随机指数概率衰减函数计算本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于缓存优化HNSW算法的向量数据查询方法,其特征在于,包括:将所有待查询向量形成索引图,所述索引图包括多层;输入第一查询向量,从索引图的最高层开始查询与所述第一查询向量距离最近的待查询向量,以作为下一层的入口,直到查找出所述索引图的最底层入口;将所述第一查询向量和对应的最底层入口存储在缓存区中;输入第二查询向量,在所述缓存区中查询是否存在与所述第二查询向量相同的查询向量;如果所述缓存区中存在与所述第二查询向量相同的查询向量,则直接查找该查询向量对应的最底层入口,作为所述第二查询向量对应的最底层入口;如果所述缓存区中不存在与所述第二查询向量相同的查询向量,则在存储区中,从索引图的最高层开始向下查询与所述第二查询向量距离最近的待查询向量,以作为每层的入口,直到查找出所述索引图的最底层入口,同时,将所述第二查询向量和对应的最底层入口存储在所述缓存区中或者使用所述第二查询向量和对应的最底层入口替换所述缓存区中的某一查询向量和...

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

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

1