CN114490727A - 目标数据库的高维向量搜索方法及相关设备 - Google Patents
目标数据库的高维向量搜索方法及相关设备 Download PDFInfo
- Publication number
- CN114490727A CN114490727A CN202111674870.3A CN202111674870A CN114490727A CN 114490727 A CN114490727 A CN 114490727A CN 202111674870 A CN202111674870 A CN 202111674870A CN 114490727 A CN114490727 A CN 114490727A
- Authority
- CN
- China
- Prior art keywords
- shared memory
- request
- dimensional
- service process
- target database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/248—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Abstract
本发明实施例提供一种目标数据库的高维向量搜索方法,通过共享内存,使集成和封装有高维向量搜索库的高维辅助进程与目标数据库之间实现通信,需要进行高维向量搜索时,通过高维辅助进程来进行搜索,由于高维辅助进程中集成和封装,因此,可以充分利用高维向量搜索库对高维向量的搜索能力,提高目标数据库中对高维向量的搜索速度,而且可以灵活的进行低维向量搜索或高维向量搜索,通过扩展目标数据库对高维向量的搜索功能,进而在将目标数据库原本的数据库查询功能和高维向量搜索功能结合,提高向量搜索效率以及降低了开发成本。
Description
技术领域
本发明涉及数据搜索领域,尤其涉及一种目标数据库的高维向量搜索方法及相关设备。
背景技术
在互联网时代,非结构化数据规模急速增长,比如视频、图像、语音、文字等,随着深度学习方法在各个领域的兴起,大部分非结构化数据能够通过深度学习转换为高维向量进行结构化表示,再通过向量搜索方法,就能够有效的使用这些向量数据。但是,在实际的应用中,这些数据都存储在数据库中,由于数据库的数据资源时间跨度大,大多数数据库都是基于低维向量进行开发的,因此都只支持较低维的向量搜索,例如PostgreSQL的imgsmlr扩展和cube扩展,将高维的结构化数据存储在PostgreSQL数据库中,是不能直接使用现有的向量搜索方法进行高维向量搜索的。
发明内容
本发明实施例提供一种目标数据库的高维向量搜索方法,能够通过共享内存,使集成和封装有高维向量搜索库的高维辅助进程与目标数据库之间实现通信,需要进行高维向量搜索时,通过高维辅助进程来进行搜索,由于高维辅助进程中集成和封装,因此,可以充分利用高维向量搜索库对高维向量的搜索能力,提高目标数据库中对高维向量的搜索速度,而且可以灵活的进行低维向量搜索或高维向量搜索,通过扩展目标数据库对高维向量的搜索功能,进而在将目标数据库原本的数据库查询功能(主要是标量数据)和高维向量搜索功能结合,提高向量搜索效率以及降低了开发成本。
第一方面,本发明实施例提供一种目标数据库的高维向量搜索方法,所述方法包括:
当高维辅助进程在共享内存中读取到服务进程对应的请求时,返回与所述请求对应的响应结果发送到所述共享内存中;
通过所述服务进程读取所述共享内在中的所述响应结果返回到客户端;
其中,所述高维辅助进程集成和封装有高维向量搜索库,所述服务进程用于处理所述目标数据库与所述客户端之间的请求。
可选的,在所述当高维辅助进程在共享内存中读取到服务进程对应的请求时,返回与所述请求对应的响应结果发送到所述共享内存中的步骤之前,所述方法还包括:
所述服务进程通过预设的索引扩展向所述共享内存发送所述请求,并通过所述预设的索引扩展定时或实时访问所述共享内存,读取所述共享内存的状态,并判断是否存在与所述请求对应的响应结果;
所述高维辅助进程定时或实时访问所述共享内存,读取所述共享内存的状态,并判断是否存在所述服务进程对应的所述请求;
其中,所述服务进程以及所述高维辅助进程对所述共享内存的访问通过锁进行同步。
可选的,所述目标数据库的索引表存储在磁盘中,所述方法还包括:
每次初始化所述高维辅助进程时,将所述索引表加载到的共享内存中,所述索引表用于记录所述服务进程对应的所述查询请求;
当所述共享内存中的所述索引表发生变化时,将变化后的索引表发送到所述磁盘上时行更新。
可选的,所述请求包括对所述高维向量搜索库的操作请求,所述响应结果包括对所述高维向量搜索库的操作结果,在所述当所述共享内存中的所述索引表发生变化时,将变化后的索引表发送到所述磁盘上时行更新的步骤之前,所述方法还包括:
当高维辅助进程在共享内存中读取到服务进程对应的操作请求时,按所述操作请求对所述高维向量搜索库进行操作,并将对应的操作结果发送到所述共享内存;
通过所述服务进程读取所述共享内在中的所述操作结果返回到所述客户端。
可选的,所述方法还包括:
通过处理所述客户端连接的异常断开以及请求中断,以防止所述共享内存中的锁发生死锁。
可选的,所述预设的索引扩展包括参数、访问方法以及操作符类,其中,所述参数用于对所述索引扩展的索引创建过程和索引搜索过程进行支持,不同的访问方法对应不同的响应结果,所述操作符类用于标识所述访问方法对应的特定数据类型。
可选的,所述访问方法包括索引创建、索引插入、索引删除以及索引查询中的至少一项,所述服务进程通过预设的索引扩展向所述共享内存发送所述请求,包括:
通过所述服务进程获取所述客户端的访问方法;
将所述访问方法对应的请求进行封装,得到所述请求;
将所述请求发送到所述共享内存中。
第二方面,本发明实施例提供一种目标数据库的高维向量搜索装置,所述装置包括:
读取模块,用于当高维辅助进程在共享内存中读取到服务进程对应的请求时,返回与所述请求对应的响应结果发送到所述共享内存中;
返回模块,用于通过所述服务进程读取所述共享内在中的所述响应结果返回到客户端;
其中,所述高维辅助进程集成和封装有高维向量搜索库,所述服务进程用于处理所述目标数据库与所述客户端之间的请求。
第三方面,本发明实施例提供一种目标数据库的高维向量搜索系统,所述系统包括:高维辅助进程、服务进程、共享内存、客户端,其中,所述高维辅助进程集成和封装有高维向量搜索库,所述服务进程用于处理所述目标数据库与所述客户端之间的请求;
所述高维辅助进程用于在共享内存中读取到服务进程对应的请求时,返回与所述请求对应的响应结果发送到所述共享内存中;
所述服务进程用于读取所述共享内在中的所述响应结果返回到客户端;
所述共享内存用于接收所述高维辅助进程发送的所述响应结果,以及还用于接收所述服务进程对应的所述请求;
所述客户端用于发送到所述请求到所述服务进程,以及还用于接收所述服务进程发送的所述响应结果。
第四方面,本发明实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例提供的目标数据库的高维向量搜索方法中的步骤。
第五方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现发明实施例提供的目标数据库的高维向量搜索方法中的步骤。
本发明实施例中,当高维辅助进程在共享内存中读取到服务进程对应的请求时,返回与所述请求对应的响应结果发送到所述共享内存中;通过所述服务进程读取所述共享内在中的所述响应结果返回到客户端;其中,所述高维辅助进程集成和封装有高维向量搜索库,所述服务进程用于处理所述目标数据库与所述客户端之间的请求,所述目标数据库仅支持低维向量的搜索。能够通过共享内存,使集成和封装有高维向量搜索库的高维辅助进程与目标数据库之间实现通信,需要进行高维向量搜索时,通过高维辅助进程来进行搜索,由于高维辅助进程中集成和封装,因此,可以充分利用高维向量搜索库对高维向量的搜索能力,提高目标数据库中对高维向量的搜索速度,而且可以灵活的进行低维向量搜索或高维向量搜索,通过扩展目标数据库对高维向量的搜索功能,进而在将目标数据库原本的数据库查询功能(主要是标量数据)和高维向量搜索功能结合,提高向量搜索效率以及降低了开发成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种目标数据库的高维向量搜索系统的架构图;
图1a是本发明实施例提供的另一种目标数据库的高维向量搜索系统的架构图
图2是本发明实施例提供的一种高维辅助进程的流程图;
图3是本发明实施例提供的一种目标数据库的高维向量搜索方法的流程图;
图4是本发明实施例提供的另一种目标数据库的高维向量搜索方法的流程图;
图5是本发明实施例提供的一种目标数据库的高维向量搜索装置的结构示意图;
图6是本发明实施例提供的另一种目标数据库的高维向量搜索装置的结构示意图;
图7是本发明实施例提供的另一种目标数据库的高维向量搜索装置的结构示意图;
图8是本发明实施例提供的另一种目标数据库的高维向量搜索装置的结构示意图;
图9是本发明实施例提供的一种发送模块的结构示意图;
图10是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,图1是本发明实施例提供的一种目标数据库的高维向量搜索系统的架构图,如图1所示,该目标数据库的高维向量搜索系统包括:目标数据库1、高维辅助进程2、服务进程3、共享内存4、客户端5。
其中,所述目标数据库仅支持低维向量的搜索,目标数据库中以是PostgreSQL数据库。
其中,上述高维辅助进程2集成和封装有高维向量搜索库,上述服务进程3用于处理上述目标数据库1与上述客户端5之间的请求;上述高维辅助进程2用于在共享内存4中读取到服务进程3对应的请求时,返回与上述请求对应的响应结果发送到上述共享内存4中;上述服务进程3用于读取上述共享内在中的上述响应结果返回到客户端5;上述共享内存4用于接收上述高维辅助进程2发送的上述响应结果,以及还用于接收上述服务进程3对应的上述请求;上述客户端5用于发送到上述请求到上述服务进程3,以及还用于接收上述服务进程3发送的上述响应结果。
进一步的,上述目标数据库1与客户端5信号连接,用户操作客户端5向低维向量搜索库进行查询请求,在低维向量搜索库中进行向量搜索,搜索出对应的结果后返回到客户端5。具体的,一般的目标数据库1会为每一个客户端5的连接新建一个服务进程3来处理对应的请求。
在本发明实施例中,能够通过共享内存4,使集成和封装有高维向量搜索库的高维辅助进程2与目标数据库1之间实现通信,需要进行高维向量搜索时,通过高维辅助进程2来进行搜索,由于高维辅助进程2中集成和封装,因此,可以充分利用高维向量搜索库对高维向量的搜索能力,提高目标数据库1中对高维向量的搜索速度,而且可以灵活的进行低维向量搜索或高维向量搜索,进而在不需要对目标数据库1进行搜索方式的开发,使用现在的向量搜索方法即可实现在目标数据库1进行高维向量搜索,提高向量搜索效率以及降低了开发成本。
在一种可能的实施例中,上述目标数据库1的高维向量搜索系统还包括索引扩展6。上述服务进程3通过预设的索引扩展6向上述共享内存4发送上述请求,并通过上述预设的索引扩展6定时或实时访问上述共享内存4,读取上述共享内存4的状态,并判断是否存在与上述请求对应的响应结果;上述高维辅助进程2定时或实时访问上述共享内存4,读取上述共享内存4的状态,并判断是否存在上述服务进程3对应的上述请求;其中,上述服务进程3以及上述高维辅助进程2对上述共享内存4的访问通过锁进行同步。
为更好对本发明实施例进行说明,以PostgreSQL作为目标数据库,faiss库作为高维向量搜索库来对系统架构进行进一步的说明。faiss库是为稠密向量提供高效相似度搜索和聚类的框架,faiss库可以提供多种搜索方法,并且搜索速度快。
具体的,请参见图1a,图1a是本发明实施例提供的另一种目标数据库的高维向量搜索系统的架构图,如图1a所示,该目标数据库的高维向量搜索系统包括:PostgreSQL库11、PGFaiss(高维辅助进程)12、Postgres(服务进程)13、共享内存14、客户端15。
其中,上述PGFaiss12高维辅助进程集成和封装有faiss库,上述Postgres高维辅助进程用于处理上述PostgreSQL库11与上述客户端15之间的请求;上述Postgres服务进程13用于在共享内存14中读取到服务进程Postgres13对应的请求时,返回与上述请求对应的响应结果发送到上述共享内存14中;上述Postgres服务进程13用于读取上述共享内在中的上述响应结果返回到客户端15;上述共享内存14用于接收上述PGFaiss高维辅助进程12发送的上述响应结果,以及还用于接收上述Postgres服务进程13对应的上述请求;上述客户端15用于发送到上述请求到上述Postgres服务进程13,以及还用于接收上述Postgres服务进程13发送的上述响应结果。
进一步的,上述PostgreSQL库11与客户端15信号连接,用户操作客户端15向PostgreSQL库11进行查询请求,在PostgreSQL库11中进行向量搜索,搜索出对应的结果后返回到客户端15。具体的,一般的PostgreSQL库11会为每一个客户端15的连接新建一个Postgres服务进程13来处理对应的请求。需要说明的是,在高维向量搜索的应用中,数据规模通常比较大,每一条实例数据也是高维的,为了保证搜索的速度,通常是基于内存的搜索,即数据特征和索引结构都加载到内存中进行搜索。PostgreSQL库11会为每一个客户端15连接新建一个Postgres服务进程13处理对应的请求,为了满足PostgreSQL库11的索引在面对多个连接时的搜索情况,本发明实施例创建了一个PGFaiss高维辅助进程12进行辅助,PGFaiss高维辅助进程12接收Postgres服务进程13的请求,并返回对应的响应结果。
在一种可能的实施例中,上述目标数据库的高维向量搜索系统还包括pg_faiss(索引扩展)6。上述Postgres服务进程13通过预设的索引扩展向上述共享内存14发送上述请求,并通过上述预设的索引扩展定时或实时访问上述共享内存14,读取上述共享内存14的状态,并判断是否存在与上述请求对应的响应结果;上述PGFaiss高维辅助进程12定时或实时访问上述共享内存14,读取上述共享内存14的状态,并判断是否存在上述Postgres服务进程13对应的上述请求;其中,上述Postgres服务进程13以及上述PGFaiss高维辅助进程12对上述共享内存14的访问通过锁进行同步。pg_faiss索引扩展6主要是适配PostgreSQL库11的索引扩展接口,通过pg_faiss索引扩展6以及共享内存14来建立Postgres服务进程13与PGFaiss高维辅助进程12的通信,完成客户端15连接的索引和查询请求。
可选的,请参见图2,图2是本发明实施例提供的一种高维辅助进程的流程图,如图2所示,高维辅助进程包括以下步骤:
201、信息处理函数注册。
在本发明实施例中,上述信息处理函数也可以称为信号处理函数,上述信号处理函数主要用于决定进程如何处理信号。上述信号处理函数可以使用signal()函数,也可以使用信号集函数组。
202、高维向量搜索库的索引加载。
在本发明实施例中,上述高维向量搜索库可以是任意的高维向量搜索库,优选的,上述高维向量搜索库可以是faiss库。
203、连接共享内存。
在本发明实施例中,上述共享内存指的是在多处理器的计算机系统中,可以被不同中央处理器(CPU)访问的内存。可以允许多个不相关的进程访问同一个内存。具体可以通过总线接口连接上述共享内存。
204、读取共享内存状态。
在高维辅助进程中,会不断的读取共享内存的状态,从而获取共享内存中的索引表是否更新,比如是否被写入对应请求。
205、判断是否有请求。
在本发明实施例中,上述共享内存中加载有索引表,索引表中可以通过写的形式记载请求和响应结果。在高维辅助进程中,若共享内存有请求,则转入步骤206,若无请求,则转入步骤204。
206、请求处理。
在本发明实施例中,通过高维向量搜索库搜索对应的高维向量,将搜索得到的高维向量和/或对应的数据作为响应结果。
207、写响应到共享内存,更新共享内存状态。
在本发明实施例中,将响应结果发送到共享内存,并根据共享内存中的索引表,使得索引表记载有对应的响应结果。需要说明的是,上述将响应结果发送到共享内存的操作,也可以称为将响应结果写入共享内存。
请参见图3,图3是本发明实施例提供的一种目标数据库的高维向量搜索方法的流程图,如图3所示,在上述目标数据库的高维向量搜索系统的架构基础上,该目标数据库的高维向量搜索方法包括以下步骤:
301、当高维辅助进程在共享内存中读取到服务进程对应的请求时,返回与请求对应的响应结果发送到共享内存中。
在本发明实施例中,上述高维辅助进程集成和封装有高维向量搜索库,高维辅助进程。需要说明的是,在高维向量搜索的应用中,数据规模通常比较大,每一条实例数据也是高维的,为了保证搜索的速度,通常是基于内存的搜索,即数据特征(高维向量)和索引结构都加载到内存中进行搜索。目标数据库会为每一个客户端连接新建一个高维辅助进程处理对应的请求,为了满足目标数据库的索引在面对多个客户端连接时的搜索情况,本发明实施例创建一个高维辅助进程,该高维辅助进程接收服务进程的请求,并返回对应的响应结果。
进一步的,服务进程接收到客户端的请求,建立服务进程到共享内存的连接,以使服务进程能够访问共享内存。服务进程将请求写到共享内存中,以供高维辅助进程进行读取,在高维辅助进程在共享内存中读取到请求时,则会根据该请求在高维向量搜索库中进行搜索,得到对应的响应结果写入共享内存中,以供服务进程进行读取。在本发明实施例中,上述服务进程以及上述高维辅助进程对上述共享内存的访问通过锁进行同步。
可选的,在本发明实施例中,上述请求包括操作请求以及查询请求等请求类型,上述操作请求包括客户端连接的增、删、改等操作请求,上述增、删、改操作可以是对高维向量搜索库的插入、删除的操作,同时进行插入和删除的操作可以实现对高维向量搜索库的修改。
具体的,以PostgreSQL库作为目标数据库,faiss库作为高维向量搜索库来进行说明,上述请求类型主要包括BUILD(创建索引),INSERT(在索引中插入一条数据),SEARCH(通过索引进行查询),REMOVE(从索引中删除一条数据),SAVE(保存索引),DROP(删除索引)。其中BUILD,INSERT,SEARCH,REMOVE对应faiss库中的创建、插入、查询、删除操作,SAVE和DROP则对应的是在PostgreSQL库中保存索引信息到磁盘上和从磁盘上删除索引信息。
可选的,所述目标数据库的索引信息存储在磁盘中,每次初始化上述高维辅助进程时,将上述索引信息加载到的共享内存中,上述索引信息用于记录上述服务进程对应的上述查询请求;当上述共享内存中的上述索引信息发生变化时,将变化后的索引信息发送到上述磁盘上时行更新。上述索引信息可以是目标数据库的索引表。
具体的,在PostgreSQL库中,索引信息包括索引表、用户创建的表以及系统表,上述索引表、用户创建的表以及系统表都使用统一的组织方式,在对索引表、用户创建的表以及系统表进行更新之后,会在特定的时间将这些更新从缓冲区中刷新到磁盘中,需要时再从磁盘加载到缓冲区。在本发明实施例中,索引是常驻在内存中的,具体来说,是常驻在共享内存中的,Postgres服务进程通过与PGFaiss高维辅助进程通信以完成索引的相关功能(搜索查找),因此需要额外提供索引保存与加载功能,在每次数据库启动时初始化PGFaiss高维辅助进程的过程中,加载磁盘上的索引信息到内存中,然后等待Postgres高维辅助进程的访问请求。在每次索引信息有变化时,将索引信息的变化更新到磁盘上的索引文件中。
在本发明实施例中,结构化的高维向量也存储在目标数据库对应的磁盘中,上述高维辅助进程集成和封装高维向量搜索库的搜索支持,拥有高维向量搜索库的高维向量搜索能力。
可选的,在本发明实施例中,还可以通过处理上述客户端连接的异常断开以及请求中断,以防止上述共享内存中的锁发生死锁。
需要说明的是,上述目标数据库中的各个进程都提供了对各种信号的处理机制,对于本发明实施例中新增的高维辅助进程,也需要处理相关信号。
进一步的,在本发明实施例中,高维辅助进程需要处理的信号主要包括客户端连接的异常断开以及请求中断。由于高维辅助进程与服务进程的通信主要是通过共享内存进行通信的,而共享内存的同步则是通过锁进行的,因此为了防止共享内存中的锁发生死锁,可以通过处理客户端连接的异常断开以及请求中断来作为高维辅助进程对信号的处理机制。
具体的,PGFaiss高维辅助进程需要处理的信号主要包括客户端连接的异常断开以及请求中断。由于PGFaiss高维辅助进程与Postgres服务进程的通信主要是通过共享内存进行通信的,而共享内存的同步则是通过锁进行的,因此为了防止共享内存中的锁发生死锁,可以处理客户端连接的异常断开以及请求中断。
302、通过服务进程读取共享内在中的响应结果返回到客户端。
在本发明实施例中,当高维辅助进程根据请求返回响应结果到共享内存后,服务进程读取共享内在中的响应结果,并将响应结果返回到客户端。
本发明实施例中,能够通过共享内存,使集成和封装有高维向量搜索库的高维辅助进程与目标数据库之间实现通信,需要进行高维向量搜索时,通过高维辅助进程来进行搜索,由于高维辅助进程中集成和封装,因此,可以充分利用高维向量搜索库对高维向量的搜索能力,提高目标数据库中对高维向量的搜索速度,而且可以灵活的进行低维向量搜索或高维向量搜索,通过扩展目标数据库对高维向量的搜索功能,进而在将目标数据库原本的数据库查询功能(主要是标量数据)和高维向量搜索功能结合,提高向量搜索效率以及降低了开发成本。
可选的,请参见图4,图4是本发明实施例提供的另一种目标数据库的高维向量搜索方法的流程图,如图4所示,在图3实施例的步骤301之前,所述方法还包括,包括:
401、服务进程通过预设的索引扩展向共享内存发送请求。
在本发明实施例中,上述索引扩展可以是按照目标数据库提供的索引接口,进一步的,上述索引扩展的大部分功能都是通过向高维辅助进程进程发送请求完成的。
可选的,上述预设的索引扩展包括参数、访问方法以及操作符类,其中,上述参数用于对上述索引扩展的索引创建过程和索引搜索过程进行支持,不同的访问方法对应不同的响应结果,上述操作符类用于标识上述访问方法对应的特定数据类型。
可选的,所述访问方法包括索引创建、索引插入、索引删除以及索引查询中的至少一项,在本发明实施例中,可以通过上述服务进程获取上述客户端的访问方法;将上述访问方法对应的请求进行封装,得到上述请求;将上述请求发送到上述共享内存中。
具体的,pg_faiss索引扩展的参数主要是在索引创建和索引搜索过程中需要用到的相关参数。pg_faiss索引扩展的参数主要包括向量维度、索引类型以及索引参数(faiss库)。
更具体的,PostgreSQL库提供了索引扩展需要的相关访问方法(access method),访问方法主要包括索引创建(ambuild),索引插入(aminsert),索引删除(ambulkdelete、amvacuumcleanup),索引查询(amgettuple、amgetbitmap)等。pg_faiss索引扩展中实现的访问方法,主要是将索引创建、索引插入、索引删除以及索引查询这些访问方法对应的请求封装为统一的格式,然后发送对应的请求到共享内存中,最后从共享内存中获取PGFaiss高维辅助进程的响应结果进行返回,完成对应访问方法的功能。
进一步的,在PostgreSQL库中,索引扩展中的访问方法并不直接了解它将要操作的数据类型,而是由一个操作符类来标识访问方法操作的特定数据类型。通过操作符类,可以指定索引扩展中的访问方法内部操作所需的支持函数。在本发明实施例中,pg_faiss索引扩展定义了用于操作原始向量的float4[]类型的操作符<@>和用于操作高维向量的bytea类型的操作符<=>。通过对float4[]/bytea类型的数据调用对应的操作符,即可使用pg_faiss索引,完成高维向量的快速查询,提高搜索速度。
402、服务进程通过预设的索引扩展定时或实时访问共享内存,读取共享内存的状态。
在本发明实施例中,服务进程在通过索引扩展向共享内存发送对应的请求后,等待高维辅助进程返回的响应结果,在这个过程中,可以通过预设的索引扩展定时或实时访问共享内存,读取共享内存的状态。
403、判断是否存在与所述请求对应的响应结果。
在本发明实施例中,检测到共享内存中存在对应的响应结果后,服务进程在通过索引扩展立刻读取出该响应结果返回到客户端。
404、高维辅助进程定时或实时访问共享内存,读取共享内存的状态,并判断是否存在服务进程对应的请求。
在本发明实施例中,高维辅助进程检测到共享内存中存在服务进程对应的请求,则读取上述请求进行处理,上述请求包括查询请求或操作请求,上述查询请求对应于数据实例的索引和搜索,上述操作请求对应于高维向量搜索库的增、删、改等操作请求。
需要说明的是,上述服务进程以及上述高维辅助进程对上述共享内存的访问可以通过锁进行同步。
可选的,所述请求包括对所述高维向量搜索库的操作请求,上述响应结果包括对上述高维向量搜索库的操作结果,在本发明实施例中,当高维辅助进程在共享内存中读取到服务进程对应的操作请求时,按上述操作请求对上述高维向量搜索库进行操作,并将对应的操作结果发送到上述共享内存;通过上述服务进程读取上述共享内在中的上述操作结果返回到上述客户端。
需要说明的是,本发明实施例提供的目标数据库的高维向量搜索方法可以应用于可以进行数据搜索的智能手机、电脑、服务器等设备。
可选的,请参见图5,图5是本发明实施例提供的一种目标数据库的高维向量搜索装置的结构示意图,如图5所示,所述装置包括:
读取模块501,用于当高维辅助进程在共享内存中读取到服务进程对应的请求时,返回与所述请求对应的响应结果发送到所述共享内存中;
返回模块502,用于通过所述服务进程读取所述共享内在中的所述响应结果返回到客户端;
其中,所述高维辅助进程集成和封装有高维向量搜索库,所述服务进程用于处理所述目标数据库与所述客户端之间的请求,所述目标数据库仅支持低维向量的搜索。
可选的,如图6所示,所述装置还包括:
发送模块503,用于所述服务进程通过预设的索引扩展向所述共享内存发送所述请求,并通过所述预设的索引扩展定时或实时访问所述共享内存,读取所述共享内存的状态,并判断是否存在与所述请求对应的响应结果;
判断模块504,用于所述高维辅助进程定时或实时访问所述共享内存,读取所述共享内存的状态,并判断是否存在所述服务进程对应的所述请求;
其中,所述服务进程以及所述高维辅助进程对所述共享内存的访问通过锁进行同步。
可选的,如图7所示,所述目标数据库的索引表存储在磁盘中,所述装置还包括:
加载模块505,用于每次初始化所述高维辅助进程时,将所述索引表加载到的共享内存中,所述索引表用于记录所述服务进程对应的所述查询请求;
更新模块506,用于当所述共享内存中的所述索引表发生变化时,将变化后的索引表发送到所述磁盘上时行更新。
可选的,所述请求包括对所述高维向量搜索库的操作请求,所述响应结果包括对所述高维向量搜索库的操作结果,所述读取模块501还用于当高维辅助进程在共享内存中读取到服务进程对应的操作请求时,按所述操作请求对所述高维向量搜索库进行操作,并将对应的操作结果发送到所述共享内存;
所述返回模块502还用于通过所述服务进程读取所述共享内在中的所述操作结果返回到所述客户端。
可选的,如图8的所示,所述装置还包括:
信号处理模块507,用于通过处理所述客户端连接的异常断开以及请求中断,以防止所述共享内存中的锁发生死锁。
可选的,所述预设的索引扩展包括参数、访问方法以及操作符类,其中,所述参数用于对所述索引扩展的索引创建过程和索引搜索过程进行支持,不同的访问方法对应不同的响应结果,所述操作符类用于标识所述访问方法对应的特定数据类型。
可选的,如图9所示,所述访问方法包括索引创建、索引插入、索引删除以及索引查询中的至少一项,所述发送模块503包括:
获取单元5031,用于通过所述服务进程获取所述客户端的访问方法;
封装单元5032,用于将所述访问方法对应的请求进行封装,得到所述请求;
发送单元5033,用于将所述请求发送到所述共享内存中。
需要说明的是,本发明实施例提供的目标数据库的高维向量搜索装置可以应用于可以进行数据搜索的智能手机、电脑、服务器等设备。
本发明实施例提供的目标数据库的高维向量搜索装置能够实现上述方法实施例中目标数据库的高维向量搜索方法实现的各个过程,且可以达到相同的有益效果。为避免重复,这里不再赘述。
参见图10,图10是本发明实施例提供的一种电子设备的结构示意图,如图10所示,包括:存储器1002、处理器1001及存储在所述存储器1002上并可在所述处理器1001上运行的目标数据库的高维向量搜索方法的计算机程序,其中:
处理器1001用于调用存储器1002存储的计算机程序,执行如下步骤:
当高维辅助进程在共享内存中读取到服务进程对应的请求时,返回与所述请求对应的响应结果发送到所述共享内存中;
通过所述服务进程读取所述共享内在中的所述响应结果返回到客户端;
其中,所述高维辅助进程集成和封装有高维向量搜索库,所述服务进程用于处理所述目标数据库与所述客户端之间的请求,所述目标数据库仅支持低维向量的搜索。
可选的,在所述当高维辅助进程在共享内存中读取到服务进程对应的请求时,返回与所述请求对应的响应结果发送到所述共享内存中的步骤之前,所述处理器1001执行方法还包括:
所述服务进程通过预设的索引扩展向所述共享内存发送所述请求,并通过所述预设的索引扩展定时或实时访问所述共享内存,读取所述共享内存的状态,并判断是否存在与所述请求对应的响应结果;
所述高维辅助进程定时或实时访问所述共享内存,读取所述共享内存的状态,并判断是否存在所述服务进程对应的所述请求;
其中,所述服务进程以及所述高维辅助进程对所述共享内存的访问通过锁进行同步。
可选的,所述目标数据库的索引表存储在磁盘中,所述处理器1001执行的方法还包括:
每次初始化所述高维辅助进程时,将所述索引表加载到的共享内存中,所述索引表用于记录所述服务进程对应的所述查询请求;
当所述共享内存中的所述索引表发生变化时,将变化后的索引表发送到所述磁盘上时行更新。
可选的,所述请求包括对所述高维向量搜索库的操作请求,所述响应结果包括对所述高维向量搜索库的操作结果,在所述当所述共享内存中的所述索引表发生变化时,将变化后的索引表发送到所述磁盘上时行更新的步骤之前,所述处理器1001执行的方法还包括:
当高维辅助进程在共享内存中读取到服务进程对应的操作请求时,按所述操作请求对所述高维向量搜索库进行操作,并将对应的操作结果发送到所述共享内存;
通过所述服务进程读取所述共享内在中的所述操作结果返回到所述客户端。
可选的,所述处理器1001执行的方法还包括:
通过处理所述客户端连接的异常断开以及请求中断,以防止所述共享内存中的锁发生死锁。
可选的,所述预设的索引扩展包括参数、访问方法以及操作符类,其中,所述参数用于对所述索引扩展的索引创建过程和索引搜索过程进行支持,不同的访问方法对应不同的响应结果,所述操作符类用于标识所述访问方法对应的特定数据类型。
可选的,处理器1001执行的所述访问方法包括索引创建、索引插入、索引删除以及索引查询中的至少一项,所述服务进程通过预设的索引扩展向所述共享内存发送所述请求,包括:
通过所述服务进程获取所述客户端的访问方法;
将所述访问方法对应的请求进行封装,得到所述请求;
将所述请求发送到所述共享内存中。
第二方面,本发明实施例提供一种目标数据库的高维向量搜索装置,所述装置包括:
读取模块,用于当高维辅助进程在共享内存中读取到服务进程对应的请求时,返回与所述请求对应的响应结果发送到所述共享内存中;
返回模块,用于通过所述服务进程读取所述共享内在中的所述响应结果返回到客户端;
其中,所述高维辅助进程集成和封装有高维向量搜索库,所述服务进程用于处理所述目标数据库与所述客户端之间的请求。
需要说明的是,本发明实施例提供的电子设备可以应用于可以进行数据搜索的智能手机、电脑、服务器等设备。
本发明实施例提供的电子设备能够实现上述方法实施例中目标数据库的高维向量搜索方法实现的各个过程,且可以达到相同的有益效果。为避免重复,这里不再赘述。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现本发明实施例提供的目标数据库的高维向量搜索方法或应用端目标数据库的高维向量搜索方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存取存储器(Random AccessMemory,简称RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (11)
1.一种目标数据库的高维向量搜索方法,其特征在于,包括以下步骤:
当高维辅助进程在共享内存中读取到服务进程对应的请求时,返回与所述请求对应的响应结果发送到所述共享内存中;
通过所述服务进程读取所述共享内在中的所述响应结果返回到客户端;
其中,所述高维辅助进程集成和封装有高维向量搜索库,所述服务进程用于处理所述目标数据库与所述客户端之间的请求,所述目标数据库仅支持低维向量的搜索。
2.如权利要求1所述的方法,其特征在于,在所述当高维辅助进程在共享内存中读取到服务进程对应的请求时,返回与所述请求对应的响应结果发送到所述共享内存中的步骤之前,所述方法还包括:
所述服务进程通过预设的索引扩展向所述共享内存发送所述请求,并通过所述预设的索引扩展定时或实时访问所述共享内存,读取所述共享内存的状态,并判断是否存在与所述请求对应的响应结果;
所述高维辅助进程定时或实时访问所述共享内存,读取所述共享内存的状态,并判断是否存在所述服务进程对应的所述请求;
其中,所述服务进程以及所述高维辅助进程对所述共享内存的访问通过锁进行同步。
3.如权利要求2所述的方法,其特征在于,所述目标数据库的索引表存储在磁盘中,所述方法还包括:
每次初始化所述高维辅助进程时,将所述索引表加载到的共享内存中,所述索引表用于记录所述服务进程对应的所述查询请求;
当所述共享内存中的所述索引表发生变化时,将变化后的索引表发送到所述磁盘上时行更新。
4.如权利要求3所述的方法,其特征在于,所述请求包括对所述高维向量搜索库的操作请求,所述响应结果包括对所述高维向量搜索库的操作结果,在所述当所述共享内存中的所述索引表发生变化时,将变化后的索引表发送到所述磁盘上时行更新的步骤之前,所述方法还包括:
当高维辅助进程在共享内存中读取到服务进程对应的操作请求时,按所述操作请求对所述高维向量搜索库进行操作,并将对应的操作结果发送到所述共享内存;
通过所述服务进程读取所述共享内在中的所述操作结果返回到所述客户端。
5.如权利要求2所述的方法,其特征在于,所述方法还包括:
通过处理所述客户端连接的异常断开以及请求中断,以防止所述共享内存中的锁发生死锁。
6.如权利要求2所述的方法,其特征在于,所述预设的索引扩展包括参数、访问方法以及操作符类,其中,所述参数用于对所述索引扩展的索引创建过程和索引搜索过程进行支持,不同的访问方法对应不同的响应结果,所述操作符类用于标识所述访问方法对应的特定数据类型。
7.如权利要求6所述的方法,其特征在于,所述访问方法包括索引创建、索引插入、索引删除以及索引查询中的至少一项,所述服务进程通过预设的索引扩展向所述共享内存发送所述请求,包括:
通过所述服务进程获取所述客户端的访问方法;
将所述访问方法对应的请求进行封装,得到所述请求;
将所述请求发送到所述共享内存中。
8.一种目标数据库的高维向量搜索装置,其特征在于,所述装置包括:
读取模块,用于当高维辅助进程在共享内存中读取到服务进程对应的请求时,返回与所述请求对应的响应结果发送到所述共享内存中;
返回模块,用于通过所述服务进程读取所述共享内在中的所述响应结果返回到客户端;
其中,所述高维辅助进程集成和封装有高维向量搜索库,所述服务进程用于处理所述目标数据库与所述客户端之间的请求,所述目标数据库仅支持低维向量的搜索。
9.一种目标数据库的高维向量搜索系统,其特征在于,所述系统包括:高维辅助进程、服务进程、共享内存、客户端,其中,所述高维辅助进程集成和封装有高维向量搜索库,所述服务进程用于处理所述目标数据库与所述客户端之间的请求,所述目标数据库仅支持低维向量的搜索;
所述高维辅助进程用于在共享内存中读取到服务进程对应的请求时,返回与所述请求对应的响应结果发送到所述共享内存中;
所述服务进程用于读取所述共享内在中的所述响应结果返回到客户端;
所述共享内存用于接收所述高维辅助进程发送的所述响应结果,以及还用于接收所述服务进程对应的所述请求;
所述客户端用于发送到所述请求到所述服务进程,以及还用于接收所述服务进程发送的所述响应结果。
10.一种电子设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的目标数据库的高维向量搜索方法中的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的目标数据库的高维向量搜索方法中的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111674870.3A CN114490727A (zh) | 2021-12-31 | 2021-12-31 | 目标数据库的高维向量搜索方法及相关设备 |
PCT/CN2022/143512 WO2023125836A1 (zh) | 2021-12-31 | 2022-12-29 | 目标数据库的高维向量搜索方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111674870.3A CN114490727A (zh) | 2021-12-31 | 2021-12-31 | 目标数据库的高维向量搜索方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114490727A true CN114490727A (zh) | 2022-05-13 |
Family
ID=81507643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111674870.3A Pending CN114490727A (zh) | 2021-12-31 | 2021-12-31 | 目标数据库的高维向量搜索方法及相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114490727A (zh) |
WO (1) | WO2023125836A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023125836A1 (zh) * | 2021-12-31 | 2023-07-06 | 青岛云天励飞科技有限公司 | 目标数据库的高维向量搜索方法及相关设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6888484B2 (ja) * | 2017-08-29 | 2021-06-16 | 富士通株式会社 | 検索プログラム、検索方法、及び、検索プログラムが動作する情報処理装置 |
CN109669724B (zh) * | 2018-11-26 | 2021-04-06 | 许昌许继软件技术有限公司 | 一种基于Linux系统的多命令并发式代理服务方法及系统 |
CN114490727A (zh) * | 2021-12-31 | 2022-05-13 | 深圳云天励飞技术股份有限公司 | 目标数据库的高维向量搜索方法及相关设备 |
-
2021
- 2021-12-31 CN CN202111674870.3A patent/CN114490727A/zh active Pending
-
2022
- 2022-12-29 WO PCT/CN2022/143512 patent/WO2023125836A1/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023125836A1 (zh) * | 2021-12-31 | 2023-07-06 | 青岛云天励飞科技有限公司 | 目标数据库的高维向量搜索方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2023125836A1 (zh) | 2023-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8868595B2 (en) | Enhanced control to users to populate a cache in a database system | |
US20090024794A1 (en) | Enhanced Access To Data Available In A Cache | |
CN111324665B (zh) | 一种日志回放方法及装置 | |
CN110377369B (zh) | 一种运行小程序的方法、设备和计算机存储介质 | |
CN111737564B (zh) | 一种信息查询方法、装置、设备及介质 | |
CN109815240A (zh) | 用于管理索引的方法、装置、设备和存储介质 | |
CN111651424A (zh) | 一种数据处理方法、装置、数据节点及存储介质 | |
CN114490727A (zh) | 目标数据库的高维向量搜索方法及相关设备 | |
CN113157609A (zh) | 存储系统、数据处理方法、装置、电子设备及存储介质 | |
CN111930684A (zh) | 基于hdfs的小文件处理方法、装置、设备及存储介质 | |
CN116361287A (zh) | 路径解析方法、装置以及系统 | |
WO2020092279A1 (en) | Recording lineage in query optimization | |
CN115203211A (zh) | 一种唯一哈希序号生成方法和系统 | |
CN114637969A (zh) | 目标对象的鉴权方法及装置 | |
CN113742050B (zh) | 操作数据对象的方法、装置、计算设备和存储介质 | |
CN114817160A (zh) | 文件解压方法、装置、电子设备及计算机可读存储介质 | |
CN111399753B (zh) | 写入图片的方法和装置 | |
US10114864B1 (en) | List element query support and processing | |
CN112765503A (zh) | 页面加载数据的静态化处理方法和装置 | |
CN113127717A (zh) | 一种密钥检索方法和系统 | |
CN107679093B (zh) | 一种数据查询方法及装置 | |
CN112347794A (zh) | 数据翻译方法、装置、设备及计算机存储介质 | |
US11822797B1 (en) | Object computational storage system, data processing method, client and storage medium | |
CN111752941B (zh) | 一种数据存储、访问方法、装置、服务器及存储介质 | |
WO2024001280A1 (zh) | 数据流动感知方法及相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |