CN114138831A - 一种数据搜索方法、装置及存储介质 - Google Patents

一种数据搜索方法、装置及存储介质 Download PDF

Info

Publication number
CN114138831A
CN114138831A CN202111355145.XA CN202111355145A CN114138831A CN 114138831 A CN114138831 A CN 114138831A CN 202111355145 A CN202111355145 A CN 202111355145A CN 114138831 A CN114138831 A CN 114138831A
Authority
CN
China
Prior art keywords
search
task
data
data block
gpu
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
Application number
CN202111355145.XA
Other languages
English (en)
Inventor
郑鹏
刘志徽
周东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangxi Guigang Zhongke Shuguang Cloud Computing Co ltd
Guangxi Zhongke Shuguang Cloud Computing Co ltd
Original Assignee
Guangxi Guigang Zhongke Shuguang Cloud Computing Co ltd
Guangxi Zhongke Shuguang Cloud Computing Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangxi Guigang Zhongke Shuguang Cloud Computing Co ltd, Guangxi Zhongke Shuguang Cloud Computing Co ltd filed Critical Guangxi Guigang Zhongke Shuguang Cloud Computing Co ltd
Priority to CN202111355145.XA priority Critical patent/CN114138831A/zh
Publication of CN114138831A publication Critical patent/CN114138831A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据搜索方法、装置及存储介质,其中方法包括:接收搜索请求,并根据搜索请求读取表文件,根据搜索请求为每一个表文件创建一个对应的搜索任务;获取搜索任务在每个计算设备上的预计完成时间,选择预计完成时间的值最小的计算设备为搜索任务的计算设备;将搜索任务加入到计算设备的任务队列上,利用CPU资源上的加载线程依次完成任务队列上的每一个搜索任务的数据加载,得到对应的数据块文件;利用GPU资源将数据块文件从内存读入显存中,并根据GPU资源执行数据块文件对应的搜索任务,将执行得到的搜索结果回传至内存中,将所有搜索结果进行归并得到最终的搜索结果。本发明实施例能够有效提高数据搜索的效率。

Description

一种数据搜索方法、装置及存储介质
技术领域
本发明涉及数据处理技术领域,尤其是涉及一种数据搜索方法、装置及存储介质。
背景技术
随着信息化技术的不断进步、人工智能技术的普及,特别是大规模人脸识别技术的应用,市场对于大规模向量高性能检索的需求越发急迫。大规模向量检索场景下的数据管理策略为:如何使数据更适合向量检索引擎的并行检索,以及如何减少数据在各级缓存中置换的性能损耗。人们正经历***式的数据增长。非结构数据(如图片、视频、语音和文字)比传统的结构化数据增长更快,数据量更大。之所以称其为非结构数据,是因为这些数据无法以传统方式进行处理与价值挖掘。如何从非结构数据中提取有价值的内容与信息,已经逐渐成为行业进一步挖掘数据价值的关键。由于在非结构化数据中含有大量隐式的语义信息,而这些信息无法通过语言文字进行准确的描述,导致现有的数据搜索方法的效率较差。
发明内容
本发明提供了一种数据搜索方法,以解决现有的数据搜索方法的效率较差的技术问题。
本发明的一个实施例提供了一种数据搜索方法,包括:
接收搜索请求,并根据所述搜索请求读取表文件,根据所述搜索请求为每一个所述表文件创建一个对应的搜索任务;
获取所述搜索任务在每个计算设备上的预计完成时间,选择预计完成时间的值最小的计算设备为所述搜索任务的计算设备;
将所述搜索任务加入到所述计算设备的任务队列上,利用CPU资源上的加载线程依次完成所述任务队列上的每一个搜索任务的数据加载,得到对应的数据块文件;
利用GPU资源将所述数据块文件从内存读入显存中,并根据GPU资源执行所述数据块文件对应的搜索任务,将执行得到的搜索结果回传至内存中,将所有搜索结果进行归并得到最终的搜索结果。
进一步的,在接收搜索请求之前,还包括:
启动特征向量数据库服务,根据配置文件中的GPU资源配置启动对应的GPU资源。
进一步的,所述GPU资源为所述配置文件中测查询资源和建立索引资源的并集,所述GPU资源包括一个Loader和一个Executor,所述Loader负责将任务队列中的任务数据加载到当前设备上,所述Executor负责执行已加载任务的搜索。
进一步的,所述接收搜索请求,并根据所述搜索请求读取表文件,包括:
接收所述搜索请求,验证所述搜索请求中的表文件是否存在,若存在,则验证所述表文件的维度是否一致,在所述表文件的维度一致时,读出所述表文件的列表。
进一步的,所述获取所述搜索任务在每个计算设备上的预计完成时间,选择预计完成时间的值最小的计算设备为所述搜索任务的计算设备,包括:
所述计算设备的预计时间为所述CPU的预计时间和所述GPU的预计时间的平均值,其中,CPU的预计完成时间为前一个搜索任务的预计消耗时间与当前搜索任务的预计消耗时间的和;GPU的预计完成时间为数据块加载到GPU的时间与当前SearchTask的预计消耗时间的和。
进一步的,所述将所述搜索任务加入到所述计算设备的任务队列上,利用CPU资源上的加载线程依次完成所述任务队列上的每一个搜索任务的数据加载,得到对应的数据块文件,包括:
将所述搜索任务加入到所述计算设备的任务队列上,利用CPU资源上的加载线程完成任务队列上的数据加载,得到对应的数据块文件,将所述数据块文件读入内存中,所述内存引入了基于LRU的缓存,当所述内存的缓存存满后,优先存储最新的数据块。
进一步的,所述根据GPU资源执行所述数据块文件对应的搜索任务,将执行得到的搜索结果回传至内存中,包括:
基于故障转移机制和故障恢复机制,根据GPU资源执行所述数据块文件对应的搜索任务。
进一步的,所述故障转移机制包括:
若配置的集群中有一台服务器出现故障或请求超时,通过Nginx将已经发送至该服务器的请求转发至另一台服务器。
进一步的,所述故障恢复机制包括:
如检测到发生故障的服务器恢复工作,通过Nginx自动将所述服务器添加到请求处理的队伍中。
本发明的一个实施例提供了一种数据搜索装置,包括:
搜索任务创建模块,用于接收搜索请求,并根据所述搜索请求读取表文件,根据所述搜索请求为每一个所述表文件创建一个对应的搜索任务;
计算设备选择模块,用于获取所述搜索任务在每个计算设备上的预计完成时间,选择预计完成时间的值最小的计算设备为所述搜索任务的计算设备;
搜索任务加载模块,用于将所述搜索任务加入到所述计算设备的任务队列上,利用CPU资源上的加载线程依次完成所述任务队列上的每一个搜索任务的数据加载,得到对应的数据块文件;
搜索结果归并模块,用于利用GPU资源将所述数据块文件从内存读入显存中,并根据GPU资源执行所述数据块文件对应的搜索任务,将执行得到的搜索结果回传至内存中,将所有搜索结果进行归并得到最终的搜索结果。
本发明的一个实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的数据搜索方法的步骤。
本发明实施例选择预计完成时间的值最小的计算设备为搜索任务的计算设备,在进行搜索任务的计算时,能够有效减少搜索任务的计算时间,从而能够有效提高数据搜索的效率;本发明实施例利用CPU资源的加载线程对搜索任务进行数据加载,并根据GPU资源执行数据块对应的搜索任务,实现了CPU和多GPU对搜索任务的融合计算,从而有效提高向量搜索的性能;本发明实施例将所有搜索结果进行归并得到最终的搜索结果,进一步提高了数据搜索的效率。
附图说明
图1是本发明实施例提供的数据搜索方法的流程示意图;
图2是本发明实施例提供的数据搜索***的结构示意图;
图3是本发明实施例提供的数据搜索装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本申请的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
请参阅图1,本发明的一个实施例提供了一种数据搜索方法,包括:
S1、接收搜索请求,并根据搜索请求读取表文件,根据搜索请求为每一个表文件创建一个对应的搜索任务;搜索任务包括搜索的目标向量、搜索参数和表文件的文件名;
本发明实施例可以在一种数据搜索***中执行,该数据搜索***包括软件开发工具、负载群均衡器、协调服务、访问层、消息存储层、工作节点和对象存储。
在本发明实施例中,在接收搜索请求之前,启动特征向量库服务,并根据配置文件中的GPU启动对应的GPU资源和磁盘资源,采用GPU资源和磁盘资源对搜索请求生成的搜索任务进行加载和执行,且能够高度扩展,能够有效解决在不同硬件场景以配置的方式启动计算资源。
在本发明实施例中,通过软件开发工具发送搜索请求至访问层,根据该搜索请求验证表是否存在、维度是否一致,若是,则读出此表的表文件列表。本发明实施例发送搜索请求,充分利用了软件开发工具包易用性的特点,且还能支持集群管理工具、多语言SDK、部署工具、运维工具等,有效提高了数据检索的可靠性。
S2、获取搜索任务在每个计算设备上的预计完成时间,选择预计完成时间的值最小的计算设备为搜索任务的计算设备;
需要说明的是,一个搜索任务在哪个设备上计算取决于在每个设备上的预计完成时间,本发明实施例中的预计完成时间为该任务从当前时间到计算完成的预计时间,例如,当一个搜索任务的数据块已经加载到内存里之后,此时CPU的任务丢了存在一个搜索任务等待计算,CPU的计算队列是空闲状态,即CPU的预计完成时间等于前一个搜索任务的预计消耗时间加上当前搜索任务的预计消耗时间;GPU的预计完成时间为搜索任务加载到GPU的时间加上当前SearchTask的预计消耗时间。计算设备上的预计完成时间即为CPU的预计完成时间和GPU的预计完成时间的平均值。
S3、将搜索任务加入到计算设备的任务队列上,利用CPU资源上的加载线程依次完成任务队列上的每一个搜索任务的数据加载,得到对应的数据块文件;
在本发明实施例中,加载得到的对应的数据块文件存储与内存中,在搜索任务被移动到GPU资源上时,GPU资源上的加载线程将数据块从内存中拷贝至显存中,再由GPU资源执行数据块对应的搜索任务。
S4、利用GPU资源将数据块文件从内存读入显存中,并根据GPU资源执行数据块文件对应的搜索任务,将执行得到的搜索结果回传至内存中,将所有搜索结果进行归并得到最终的搜索结果。
在本发明实施例中,最终的搜索结果由向量搜索的计算过程的N次独立的向量搜索(N为数据块个数)和N-1次结果归并组成,搜索结果的归并过程较短,本发明实施例的数据块加载和搜索计算同时执行,能够有效减少整个搜索时间,从而有效提高数据检索的效率。
在一个实施例中,在接收搜索请求之前,还包括:
启动特征向量数据库服务,根据配置文件中的GPU资源配置启动对应的GPU资源。
在一个实施例中,GPU资源为配置文件中测查询资源和建立索引资源的并集,GPU资源包括一个Loader和一个Executor,Loader负责将任务队列中的任务数据加载到当前设备上,Executor负责执行已加载任务的搜索。
在本发明实施例中,GPU资源为配置文件中测查询资源和建立索引资源的并集,如{gpu0,gpu1},其定义了包括DiskResource、CpuResource和GpuResource。一个CpuResource代表一颗CPU,一个GpuResource代表一张GPU卡。Resource启动好后可接收搜索任务,每个Resource内部包含一个Loader和一个Executor,Loader负责将任务队列中的任务数据加载到当前设备上,Executor负责执行已加载任务的搜索。
在一个实施例中,接收搜索请求,并根据搜索请求读取表文件,包括:
接收搜索请求,验证搜索请求中的表文件是否存在,若存在,则验证表文件的维度是否一致,在表文件的维度一致时,读出表文件的列表。
在一个实施例中,获取搜索任务在每个计算设备上的预计完成时间,选择预计完成时间的值最小的计算设备为搜索任务的计算设备,包括:
计算设备的预计时间为CPU的预计时间和GPU的预计时间的平均值,其中,CPU的预计完成时间为前一个搜索任务的预计消耗时间与当前搜索任务的预计消耗时间的和;GPU的预计完成时间为数据块加载到GPU的时间与当前SearchTask的预计消耗时间的和。
在本发明实施例中,搜索任务的计算设备通过特征向量数据库计算该搜索任务,特征向量数据库支持向量、布尔值、整型、浮点等数据类型,从而能够适用不同数据类型的搜索任务。在特征向量数据库中,一个collection可以包含多个字段来代表数据特征或属性,特征向量数据库还支持在向量相似度检索过程中进行标量字段过滤。
在一个实施例中,将搜索任务加入到计算设备的任务队列上,利用CPU资源上的加载线程依次完成任务队列上的每一个搜索任务的数据加载,得到对应的数据块文件,包括:
将搜索任务加入到计算设备的任务队列上,利用CPU资源上的加载线程完成任务队列上的数据加载,得到对应的数据块文件,将数据块文件读入内存中,内存引入了基于LRU的缓存,当内存的缓存存满后,优先存储最新的数据块。
在本发明实施例中,基于LRU(Least Recently Used)的缓存机制能够在缓存充满时,由新的数据块将在之前最先存储的数据块挤出去,能够有效避免重复的数据加载,且使得用户根据当前***存储空间的大小,通过配置文件设置缓存的大小,能够有效减少数据加载的时间,以提高数据搜索响应速度。
在本发明实施例中,通过CPU和GPU对搜索任务进行融合计算,能够有效提高数据搜索的效率。
在一个实施例中,根据GPU资源执行数据块文件对应的搜索任务,将执行得到的搜索结果回传至内存中,包括:
基于故障转移机制和故障恢复机制,根据GPU资源执行数据块文件对应的搜索任务。
在一个实施例中,故障转移机制包括:
若配置的集群中有一台服务器出现故障或请求超时,通过Nginx将已经发送至该服务器的请求转发至另一台服务器。
在一个实施例中,故障恢复机制包括:
如检测到发生故障的服务器恢复工作,通过Nginx自动将服务器添加到请求处理的队伍中。
在本发明实施例中,通过设置故障转移机制和故障恢复机制,在服务终端时,确保数据的应用和业务连续性。进一步的,本发明实施例还引入消息存储进行数据的***和修改,仅通过消息存储的交互,实现数据的***和修改。
实施本发明实施例,具有以下有益效果:
本发明实施例选择预计完成时间的值最小的计算设备为搜索任务的计算设备,在进行搜索任务的计算时,能够有效减少搜索任务的计算时间,从而能够有效提高数据搜索的效率;本发明实施例利用CPU资源的加载线程对搜索任务进行数据加载,并根据GPU资源执行数据块对应的搜索任务,实现了CPU和多GPU对搜索任务的融合计算,从而有效提高向量搜索的性能;本发明实施例将所有搜索结果进行归并得到最终的搜索结果,进一步提高了数据搜索的效率。
请参阅图2,在本发明的一个实施例中,本发明实施例的数据搜索方法在如图2所示的一种数据搜索***中执行,该数据搜索***包括软件开发工具、负载群均衡器、协调服务、访问层、消息存储层、工作节点和对象存储。
软件开发工具包封装特征向量库中使用的各种基本操作。交互式编程环境下连接特征向量库服务器,支持在集合中***数据、创建索引,提高向量搜索的效率,可以collection中的某一列Field创建索引、查询向量、删除操作,创新点是支持通过ID删除指定向量的功能、支持删除索引、删除partition、删除collection、断开与服务器的连接等操作。
负载均衡器是前层,也是用户的端点。它是开源、高性能HTTP服务器和反向代理服务器。如Nginx负载均衡器可以通过反向代理实现负载均衡、转发请求、故障转移、恢复添加、收集结果的功能。
(1)转发功能:根据用户配置的策略将客户端请求转发到不同的服务器上,减轻单台服务器压力,提高***并发能力。
(2)故障转移:若配置的集群中有一台服务器出现了故障或者请求超时,Nginx会将已经发送至该服务器的请求转发至另一台服务器。
(3)恢复添加:如检测到发生故障的服务器恢复工作,Nginx自动将其添加到请求处理队伍中。
访问层作为***界面向外公开客户端连接的端点,负责处理客户端连接,进行静态验证,对用户请求进行基本的动态检查,转发请求,收集结果并返回给客户端等功能。代理本身是无状态的,通过负载均衡组件(Nginx、Kubernetess Ingress、NodePort、LVS)向外界提供统一的访问地址和服务。
协调器服务负责集群拓扑节点管理、负载均衡、时间戳生成、数据声明和数据管理,将任务分配给工作节点。协调器服务有四种不同协调器类型:根协调器(root coord)、数据协调器(data coord)、查询协调器(query coord)和索引协调器(index coord)。
根协调器(root coord):处理数据定义语言(DDL)和数据控制语言(DCL)请求,例如创建或删除集合、分区、索引等。负责维护timestamp oracle(TSO)的中央计时模块和时间窗口的推进。
数据协调器(data coord):负责管理数据节点的拓扑结构,维护后台操作的元数据(例如,刷新或压缩段)。
查询协调器(query coord):负责管理查询节点的拓扑结构,实现查询节点间数据段的负载均衡,实现增长段到密封段的切换。
索引协调器(index coord):负责管理索引节点的拓扑,协调索引构建任务,维护索引元数据。
元数据存储具有可用性、强一致性和事务支持。
消息存储支持日志代理、分布式日志、分布式消息发布/订阅传递。
日志代理:主要用于存储增量日志,实现可靠的异步通知。
分布式日志:以低延迟收集和发送大量日志数据。同时适用于离线和在线消息消费使用。
分布式消息发布/订阅传递:负责将数据从一个应用传递到另外一个应用,应用只需关注于数据,无需关注数据在两个或多个应用间是如何传递的。分布式消息传递基于可靠的消息队列,在客户端应用和消息***之间异步传递消息。主要的消息传递模式是发布-订阅模式,比如Kafka。
工作节点或称为执行节点,作为***的一部分,执行由协调器服务发出的指令和由代理发起的数据操作(DML)命令,遵循协调器服务的指令并响应来自访问层的读/写请求。由于存储和计算的分离,工作节点是无状态的,可以使用Kubernetes快速实现扩展和故障恢复。
工作节点有三种类型的工作节点,它们分为查询节点、数据节点、索引节点。
查询节点通过订阅日志代理获取增量日志数据,从Object Storage获取历史数据,并提供矢量和标量数据的混合搜索。
查询节点具有最近邻检索和精确搜索两种功能。创新点是支持混合搜索,除了向量,特征向量数据库还额外支持布尔、整数、浮点数等数据类型。特征向量数据库中的一个集合可以包含多个字段,用于容纳不同的数据特征或属性。特征向量数据库创新的将标量过滤与强大的矢量相似性搜索结合。
查询节点提供基于树的搜索算法基于哈希的搜索算法向量量化的编码算法,SPTAG向量检索算法、FAISS多媒体文件相似性搜索算法,根据数据的相似性,从数据库中寻找与目标数据最相似的项目。这种相似性通常会被量化到空间上数据之间的距离,数据在空间中的距离越近,则数据之间的相似性越高。例如人工智能(AI)场景下,用于将非结构化数据例如视频剪辑、照片或声音剪辑转换为向量嵌入。通过将非结构化数据投影到n维空间中的坐标点,近似最近邻(ANN)算法可用于计算非结构化数据之间的相似性。
最近邻检索功能具有查找相似性信息能力,在***中,最近邻检索也被广泛应用于位置信息,空间数据关系的查询、分析与统计。而在这些领域中大多会涉及到海量的多媒体数据信息的处理,其中包括大量图像、视频信息。在图像处理与检索的研究中,基于内容的图像检索方法(CBIR)是目前的主流,这里的“内容”指的是图像中包含的主要对象的几何形状、颜色强度、表面纹理等外在特性,以及前景与后景的对比程度等整体特征。为了获得图像中这些特定的信息或方便后续处理,我们通常会利用多种不同的描述方式来表示图像,包括局部特征描述子(SIFT、SURF、BRIEF),全局特征描述子(GIST),特征频率直方图,纹理信息,显著性区域等。最近邻检索的引入将图像检索转化到特征向量空间,通过查找与目标特征向量距离最近的向量来获得相应图像之间的关系。这种特征向量之间的距离通常被定义为欧几里得距离(Euclidean distance),即是空间中两点之间的直线距离。最近邻检索利用了数据量增大后数据之间会形成簇状聚集分布的特性,通过对数据分析聚类的方法对数据库中的数据进行分类或编码,对于目标数据根据其数据特征预测其所属的数据类别,返回类别中的部分或全部作为检索结果。近似最近邻检索是搜索可能是近邻的数据项而不再只局限于返回最可能的项目,在牺牲可接受范围内的精度的情况下提高检索效率。
最近邻检索同时采用支持分为两种创新方法,一种是采用哈希散列方法,另一种则是矢量量化方法。
对象存储主要用于存储日志快照、数据文件和索引文件。结合流处理和批处理进行数据存储,存储日志的快照文件、标量/矢量索引文件和中间查询处理结果,平衡时效性和效率。采用统一的界面使矢量相似性搜索变得更直接简单。
本模块是存储文件特征向量特征值和特征向量。对构建的向量索引模型数据压缩比高,达到大幅缩减内存使占用的目的,高度可扩展和弹性、组件级的可扩展性使得按需扩展和缩减成为可能。可以根据负载类型在组件级别自动伸缩,使资源调度更加高效。
对象存储具备线性扩展能力和增加的资源成比例。如:原有2个node节点,每个可以运行20个任务,通过新增加一个节点,资源相当于增加了50%。
本发明实施例具有以下有益效果:
1)具有高性能优点,为海量向量搜索场景而设计。不但集成了业界成熟的向量搜索技术如Faiss和SPTAG,也实现了高效的NSG图索引,同时针对Faiss IVF索引进行了深度优化,实现了CPU与多GPU的融合计算,大幅提高了向量搜索性能。特征向量数据库构建使用后可以在单机环境下完成SIFT1b十亿级向量搜索任务。
2)具有智能索引优点,针对不同应用场景,提供多种向量相似度计算方式和索引类型。目前支持主流的欧式距离、点积、余弦相似度等相似度计算算法。同时,提供适用于n:N查询的量化索引,适用于1:N查询的图索引或树图混合索引。
3)具有易于开发优点,为用户提供向量数据管理服务,以及集成的应用开发包(Java/Python/C++/RESTful API)。相比直接调用Faiss和SPTAG那样的程序库,向量特征库的应用开发更便捷,数据管理更简单。
4)具有计算成本可控优点,不仅提供传统的CPU计算方案,通过引入GPU等高算力ASIC,可以有效降低大规模向量搜索所需的硬件规模,从而降低***的成本。
5)具有应用场景广泛优点,向量搜索引擎通过特征向量库可以对接包括图片识别,视频处理,声音识别,自然语言处理等深度学习模型。为向量化后的非结构数据提供搜索分析服务。
请参阅图3,基于与上述实施例相同的发明构思,本发明的一个实施例提供了一种数据搜索装置,包括:
搜索任务创建模块10,用于接收搜索请求,并根据搜索请求读取表文件,根据搜索请求为每一个表文件创建一个对应的搜索任务;
计算设备选择模块20,用于获取搜索任务在每个计算设备上的预计完成时间,选择预计完成时间的值最小的计算设备为搜索任务的计算设备;
搜索任务加载模块30,用于将搜索任务加入到计算设备的任务队列上,利用CPU资源上的加载线程依次完成任务队列上的每一个搜索任务的数据加载,得到对应的数据块文件;
搜索结果归并模块40,用于利用GPU资源将数据块文件从内存读入显存中,并根据GPU资源执行数据块文件对应的搜索任务,将执行得到的搜索结果回传至内存中,将所有搜索结果进行归并得到最终的搜索结果。
在一个实施例中,该装置还包括资源启动模块,用于:
启动特征向量数据库服务,根据配置文件中的GPU资源配置启动对应的GPU资源。
在一个实施例中,GPU资源为配置文件中测查询资源和建立索引资源的并集,GPU资源包括一个Loader和一个Executor,Loader负责将任务队列中的任务数据加载到当前设备上,Executor负责执行已加载任务的搜索。
在一个实施例中,搜索任务创建模块10,用于:
接收搜索请求,验证搜索请求中的表文件是否存在,若存在,则验证表文件的维度是否一致,在表文件的维度一致时,读出表文件的列表。
在一个实施例中,计算设备选择模块,用于:
计算设备的预计时间为CPU的预计时间和GPU的预计时间的平均值,其中,CPU的预计完成时间为前一个搜索任务的预计消耗时间与当前搜索任务的预计消耗时间的和;GPU的预计完成时间为数据块加载到GPU的时间与当前SearchTask的预计消耗时间的和。
在一个实施例中,搜索任务加载模块30,用于:
将搜索任务加入到计算设备的任务队列上,利用CPU资源上的加载线程完成任务队列上的数据加载,得到对应的数据块文件,将数据块文件读入内存中,内存引入了基于LRU的缓存,当内存的缓存存满后,优先存储最新的数据块。
在一个实施例中,搜索结果归并模块40,用于:
基于故障转移机制和故障恢复机制,根据GPU资源执行数据块文件对应的搜索任务。
在一个实施例中,故障转移机制包括:
若配置的集群中有一台服务器出现故障或请求超时,通过Nginx将已经发送至该服务器的请求转发至另一台服务器。
在一个实施例中,故障恢复机制包括:
如检测到发生故障的服务器恢复工作,通过Nginx自动将服务器添加到请求处理的队伍中。
本发明的一个实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述的数据搜索方法的步骤。
以上是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

Claims (10)

1.一种数据搜索方法,其特征在于,包括:
接收搜索请求,并根据所述搜索请求读取表文件,根据所述搜索请求为每一个所述表文件创建一个对应的搜索任务;
获取所述搜索任务在每个计算设备上的预计完成时间,选择预计完成时间的值最小的计算设备为所述搜索任务的计算设备;
将所述搜索任务加入到所述计算设备的任务队列上,利用CPU资源上的加载线程依次完成所述任务队列上的每一个搜索任务的数据加载,得到对应的数据块文件;
利用GPU资源将所述数据块文件从内存读入显存中,并根据GPU资源执行所述数据块文件对应的搜索任务,将执行得到的搜索结果回传至内存中,将所有搜索结果进行归并得到最终的搜索结果。
2.如权利要求1所述的数据搜索方法,其特征在于,在接收搜索请求之前,还包括:
启动特征向量数据库服务,根据配置文件中的GPU资源配置启动对应的GPU资源。
3.如权利要求2所述的数据搜索方法,其特征在于,所述GPU资源为所述配置文件中测查询资源和建立索引资源的并集,所述GPU资源包括一个Loader和一个Executor,所述Loader负责将任务队列中的任务数据加载到当前设备上,所述Executor负责执行已加载任务的搜索。
4.如权利要求1所述的数据搜索方法,其特征在于,所述接收搜索请求,并根据所述搜索请求读取表文件,包括:
接收所述搜索请求,验证所述搜索请求中的表文件是否存在,若存在,则验证所述表文件的维度是否一致,在所述表文件的维度一致时,读出所述表文件的列表。
5.如权利要求1所述的数据搜索方法,其特征在于,所述获取所述搜索任务在每个计算设备上的预计完成时间,选择预计完成时间的值最小的计算设备为所述搜索任务的计算设备,包括:
所述计算设备的预计时间为所述CPU的预计时间和所述GPU的预计时间的平均值,其中,CPU的预计完成时间为前一个搜索任务的预计消耗时间与当前搜索任务的预计消耗时间的和;GPU的预计完成时间为数据块加载到GPU的时间与当前SearchTask的预计消耗时间的和。
6.如权利要求1所述的数据搜索方法,其特征在于,所述将所述搜索任务加入到所述计算设备的任务队列上,利用CPU资源上的加载线程依次完成所述任务队列上的每一个搜索任务的数据加载,得到对应的数据块文件,包括:
将所述搜索任务加入到所述计算设备的任务队列上,利用CPU资源上的加载线程完成任务队列上的数据加载,得到对应的数据块文件,将所述数据块文件读入内存中,所述内存引入了基于LRU的缓存,当所述内存的缓存存满后,优先存储最新的数据块。
7.如权利要求1所述的数据搜索方法,其特征在于,所述根据GPU资源执行所述数据块文件对应的搜索任务,将执行得到的搜索结果回传至内存中,包括:
基于故障转移机制和故障恢复机制,根据GPU资源执行所述数据块文件对应的搜索任务。
8.如权利要求1所述的数据搜索方法,其特征在于,所述故障转移机制包括:若配置的集群中有一台服务器出现故障或请求超时,通过Nginx将已经发送至该服务器的请求转发至另一台服务器;所述故障恢复机制包括:如检测到发生故障的服务器恢复工作,通过Nginx自动将所述服务器添加到请求处理的队伍中。
9.一种数据搜索装置,其特征在于,包括:
搜索任务创建模块,用于接收搜索请求,并根据所述搜索请求读取表文件,根据所述搜索请求为每一个所述表文件创建一个对应的搜索任务;
计算设备选择模块,用于获取所述搜索任务在每个计算设备上的预计完成时间,选择预计完成时间的值最小的计算设备为所述搜索任务的计算设备;
搜索任务加载模块,用于将所述搜索任务加入到所述计算设备的任务队列上,利用CPU资源上的加载线程依次完成所述任务队列上的每一个搜索任务的数据加载,得到对应的数据块文件;
搜索结果归并模块,用于利用GPU资源将所述数据块文件从内存读入显存中,并根据GPU资源执行所述数据块文件对应的搜索任务,将执行得到的搜索结果回传至内存中,将所有搜索结果进行归并得到最终的搜索结果。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的数据搜索方法的步骤。
CN202111355145.XA 2021-11-16 2021-11-16 一种数据搜索方法、装置及存储介质 Pending CN114138831A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111355145.XA CN114138831A (zh) 2021-11-16 2021-11-16 一种数据搜索方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111355145.XA CN114138831A (zh) 2021-11-16 2021-11-16 一种数据搜索方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN114138831A true CN114138831A (zh) 2022-03-04

Family

ID=80393442

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111355145.XA Pending CN114138831A (zh) 2021-11-16 2021-11-16 一种数据搜索方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN114138831A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115774621A (zh) * 2023-02-10 2023-03-10 浪潮电子信息产业股份有限公司 一种请求处理方法、***、设备及计算机可读存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115774621A (zh) * 2023-02-10 2023-03-10 浪潮电子信息产业股份有限公司 一种请求处理方法、***、设备及计算机可读存储介质

Similar Documents

Publication Publication Date Title
US11093468B1 (en) Advanced metadata management
US9996593B1 (en) Parallel processing framework
US9712646B2 (en) Automated client/server operation partitioning
CN104239572A (zh) 基于分布式缓存实现元数据分析的***及方法
US20240265022A1 (en) Data query request processing method, electronic device, and storage medium
US20110179013A1 (en) Search Log Online Analytic Processing
CN110222046B (zh) 列表数据的处理方法、装置、服务器和存储介质
CN114138831A (zh) 一种数据搜索方法、装置及存储介质
US11500931B1 (en) Using a graph representation of join history to distribute database data
CN108319604B (zh) 一种hive中大小表关联的优化方法
US9703788B1 (en) Distributed metadata in a high performance computing environment
US11030177B1 (en) Selectively scanning portions of a multidimensional index for processing queries
Nguyen et al. An efficient similar image search framework for large-scale data on cloud
CN109992575B (zh) 大数据的分布式存储***
CN111401482A (zh) 特征点匹配方法及装置、设备、存储介质
CN116108036A (zh) 一种后端***数据离线导出方法和装置
CN107291875B (zh) 一种基于元数据图的元数据组织管理方法和***
CN111581420A (zh) 一种基于Flink的医学图像实时检索方法
Duan et al. An improved content based image retrieval system on apache spark
WO2024119980A1 (zh) 一种数据分析方法及相关设备
CN110781210A (zh) 一种应对大规模数据多维聚合实时查询的数据处理平台
Wu Big data processing with Hadoop
CN112613390B (zh) 多gpu集群并行人脸搜索方法与***
CN116719821B (zh) 一种并发数据***Elasticsearch的排重方法、装置及存储介质
Johnson et al. Big data processing using Hadoop MapReduce programming model

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