利用索引从数据库中进行节点向量检索的方法及装置制造方法及图纸

技术编号:24574865 阅读:55 留言:0更新日期:2020-06-21 00:14
本说明书实施例提供一种利用索引从数据库中进行节点向量检索的方法及装置。PostgreSQL数据库包括多个节点的向量,索引将多个节点划分到多个簇中,每个簇对应一个中心点。在检索时,基于该索引,将多个簇对应的中心点分别与待检索的第一节点进行向量匹配,从多个中心点中确定与第一节点在向量上最匹配的目标中心点,将目标中心点所在的第一簇中的多个节点分别与第一节点进行向量匹配,根据匹配结果将各个节点加入匹配队列中基于匹配队列中的节点排序,确定针对第一节点检索到的节点。

Method and device of node vector retrieval from database by index

【技术实现步骤摘要】
利用索引从数据库中进行节点向量检索的方法及装置
本说明书一个或多个实施例涉及数据检索
,尤其涉及利用索引从数据库中进行节点向量检索的方法及装置。
技术介绍
随着计算机技术的发展,数据包含的信息也越来越多,对数据的检索要求也逐渐升高。通常可以采用高维向量来表示包含较多信息的数据,例如,图像、用户特征等数据均可以采用高维向量进行表示。在一些应用场景中,存在对高维向量进行检索的要求。例如,在刷脸支付时,可以从数据库的大量人脸图像中对输入的人脸图像进行检索;在购物网站上,可以从数据库的大量商品图像中对输入的商品图像进行检索。PostgreSQL是一款支持向量检索的开源数据库,其具有高可用性、高扩展性。随着数据数目的增多以及向量维数的升高,基于该数据库的向量检索效率,成为目前技术改进的一个重点方向。因此,希望能有改进的方案,可以提高基于PostgreSQL数据库进行高维向量检索时的检索效率。
技术实现思路
本说明书一个或多个实施例描述了利用索引从数据库中进行节点向量检索的方法及装置,以提高基于PostgreSQL数据库进本文档来自技高网...

【技术保护点】
1.一种利用索引从PostgreSQL数据库中进行节点向量检索的方法,通过计算机执行;所述数据库包括多个节点的向量,所述索引将多个节点划分到多个簇中,每个簇对应一个中心点;所述方法包括:/n获取待检索的第一节点;/n基于所述索引,将所述多个簇对应的中心点分别与所述第一节点进行向量匹配,从多个中心点中确定与所述第一节点在向量上最匹配的目标中心点;/n将所述目标中心点所在的第一簇中的多个节点分别与所述第一节点进行向量匹配,根据匹配结果将各个节点加入匹配队列中;/n基于匹配队列中的节点排序,确定针对所述第一节点检索到的节点。/n

【技术特征摘要】
1.一种利用索引从PostgreSQL数据库中进行节点向量检索的方法,通过计算机执行;所述数据库包括多个节点的向量,所述索引将多个节点划分到多个簇中,每个簇对应一个中心点;所述方法包括:
获取待检索的第一节点;
基于所述索引,将所述多个簇对应的中心点分别与所述第一节点进行向量匹配,从多个中心点中确定与所述第一节点在向量上最匹配的目标中心点;
将所述目标中心点所在的第一簇中的多个节点分别与所述第一节点进行向量匹配,根据匹配结果将各个节点加入匹配队列中;
基于匹配队列中的节点排序,确定针对所述第一节点检索到的节点。


2.根据权利要求1所述的方法,所述索引包括多个中心点数据页和属于不同簇的多个节点数据页,所述中心点数据页用于存储各个中心点的向量以及每个中心点所在的簇的起始节点数据页标识,所述节点数据页用于存储各个节点的向量,一个节点数据页中的节点对应于一个簇。


3.根据权利要求2所述的方法,所述基于所述索引,将所述多个簇对应的中心点分别与所述第一节点进行向量匹配的步骤,包括:
从所述索引中获取多个中心点数据页,从所述多个中心点数据页中获取所述多个簇对应的中心点的向量,并将所述多个簇对应的中心点的向量分别与所述第一节点的向量进行匹配;
所述将所述目标中心点所在的第一簇中的多个节点分别与所述第一节点进行向量匹配的步骤,包括:
从所述目标中心点对应的中心点数据页中,获取所述第一簇的起始节点数据页标识,基于该起始节点数据页标识,从所述索引的多个节点数据页中获取所述第一簇对应的多个节点的向量,并将该多个节点的向量分别与所述第一节点的向量进行匹配。


4.根据权利要求2所述的方法,属于同一簇的多个节点数据页连续。


5.根据权利要求2所述的方法,属于同一簇的多个节点数据页不连续;并且,所述节点数据页还用于存储同一簇中该节点数据页之前的节点数据页标识和该节点数据页之后的节点数据页标识。


6.根据权利要求1所述的方法,所述目标中心点为一个或多个;
所述将所述目标中心点所在的第一簇中的多个节点分别与所述第一节点进行向量匹配,根据匹配结果将各个节点加入匹配队列中的步骤,包括:
针对每个目标中心点所在的第一簇,将所述第一簇中的多个节点分别与所述第一节点进行向量匹配,根据匹配结果将每个目标中心点所在的第一簇中的节点加入同一匹配队列中。


7.根据权利要求1所述的方法,所述数据库还包括各个节点的向量字段之外的第一字段;在获取待检索的第一节点时,还包括:
获取针对所述第一字段的限制字段值条件;
所述基于匹配队列中的节点排序,确定针对所述第一节点检索到的节点的步骤,包括:
针对匹配队列中匹配度最高的第一数量个节点,从所述数据库中获取所述第一数量个节点的第一字段值;
基于获取的各个第一字段值,从所述第一数量个节点中筛选出满足所述限制字段值条件的节点,得到针对所述第一节点检索得到的节点。


8.一种用于从PostgreSQL数据库中进行节点向量检索的索引创建方法,通过计算机执行,所述数据库包括多个节点的向量,所述方法包括:
从所述数据库中获取多个节点;
基于所述多个节点中至少部分节点的向量进行节点聚类,得到多个簇以及所述多个簇各自的中心点;
确定所述多个节点各自归属的簇;
利用所述索引记录所述多个簇的中心点以及所述多个簇对所述多个节点的划分,以用于进行节点向量检索。


9.根据权利要求8所述的方法,所述基于所述多个节点中至少部分节点的向量进行节点聚类的步骤,包括:
从所述多个节点中采样出第一部分节点;
基于所述第一部分节点中各个节点的向量,对所述第一部分节点进行第一聚类,得到所述多个簇以及所述多个簇各自的中心点;
所述确定所述多个节点各自归属的簇的步骤,至少包括:确定所述第一部分节点中各个节点对应的簇。


10.根据权利要求9所述的方法,所述利用所述索引记录所述多个簇的中心点以及所述多个簇对所述多个节点的划分的步骤,至少包括:
生成中心点数据页,将多个簇的中心点的向量存储至所述中心点数据页;
生成每个簇对应的节点数据页,将所述第一部分节点中各个节点的向量分别存储至对应簇的节点数据页中,并将每个簇的起始节点数据页标识存储至对应的中心点数据页中。


11.根据权利要求10所述的方法,所述生成每个簇对应的节点数据页的步骤,包括:
至少基于每个簇对应的节点数量生成每个簇的节点数据页,并针对每个簇中的任意一个节点数据页,将该簇中该节点数据页之后的节点数据页标识存储至该节点数据页。


12.根据权利要求10所述的方法,所述多个节点包括所述第一部分节点之外任意的一个第二节点;所述确定所述多个节点各自归属的簇的步骤,还包括:
将所述第二节点分别与各个中心点进行向量匹配,根据匹配结果确定所述第二节点对应的第二簇;
所述利用所述索引记录所述多个簇的中心点以及所述多个簇对所述多个节点的划分的步骤,还包括:在所述第二簇的已有节点数据页未存满时,将所述第二节点的节点向量添加到所述第二簇的已有节点数据页中。


13.根据权利要求12所述的方法,所述利用所述索引记录所述多个簇的中心点以及所述多个簇对所述多个节点的划分的步骤,还包括:
在所述第二簇的已有节点数据页已存满时,增加所述第二簇的节点数据页,将所述第二节点的向量以及所述第二簇的起始节点数据页标识存储至增加的节点数据页中,并将增加的节点数据页更新为所述第二簇的起始节点数据页,将所述起始节点数据页标识更新...

【专利技术属性】
技术研发人员:杨文李涛方概魏宏
申请(专利权)人:支付宝杭州信息技术有限公司
类型:发明
国别省市:浙江;33

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

1