本發(fā)明涉及數(shù)據(jù)庫,更具體地,涉及一種基于分布式數(shù)據(jù)庫的向量索引方法、裝置、電子設(shè)備。
背景技術(shù):
1、隨著互聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能等技術(shù)的的快速發(fā)展,非結(jié)構(gòu)化數(shù)據(jù)開始了爆炸性的增長(zhǎng),如何快速、準(zhǔn)確地檢索和查詢這些數(shù)據(jù),為傳統(tǒng)數(shù)據(jù)庫行業(yè)帶來了愈發(fā)嚴(yán)峻的挑戰(zhàn)。人工智能算法廣泛使用的embedding技術(shù)將非結(jié)構(gòu)化數(shù)據(jù)抽象為向量數(shù)據(jù),由此,非結(jié)構(gòu)化數(shù)據(jù)的檢索轉(zhuǎn)換為了向量檢索過程,為這一問題的解決帶來了新的方法。
2、目前,分布式數(shù)據(jù)庫集群將向量化的非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)在不同的數(shù)據(jù)節(jié)點(diǎn)上,實(shí)現(xiàn)大規(guī)模數(shù)據(jù)存儲(chǔ)和高并發(fā)查詢?;诜植际綌?shù)據(jù)庫的非結(jié)構(gòu)化數(shù)據(jù)的向量索引,一般是向每個(gè)數(shù)據(jù)節(jié)點(diǎn)發(fā)送向量獲取請(qǐng)求,以實(shí)現(xiàn)非結(jié)構(gòu)化數(shù)據(jù)的查詢。
3、然而,由于分布式數(shù)據(jù)庫集群涉及的數(shù)據(jù)節(jié)點(diǎn)的數(shù)量龐大,與多個(gè)數(shù)據(jù)節(jié)點(diǎn)之間的交互操作會(huì)影響查詢效率。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本發(fā)明提供了一種基于分布式數(shù)據(jù)庫的向量索引方法、裝置、電子設(shè)備。
2、本發(fā)明的一個(gè)方面提供了一種基于分布式數(shù)據(jù)庫的向量索引方法,包括:響應(yīng)于接收到由客戶端發(fā)送的數(shù)據(jù)查詢請(qǐng)求,獲取查詢向量,其中,查詢向量是由非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換得到的;利用分布式數(shù)據(jù)庫的分片存儲(chǔ)算法,確定用于存儲(chǔ)查詢向量的存儲(chǔ)區(qū)域,并將存儲(chǔ)區(qū)域作為目標(biāo)待查詢區(qū)域;根據(jù)向量索引信息中的質(zhì)心向量,確定與查詢向量相匹配的多個(gè)待查詢子區(qū)域;根據(jù)目標(biāo)待查詢區(qū)域與多個(gè)待查詢子區(qū)域之間的第一分布信息,確定與每個(gè)待查詢子區(qū)域相匹配的向量獲取數(shù)目;以及基于向量獲取數(shù)目,根據(jù)查詢向量從多個(gè)待查詢子區(qū)域中獲取多個(gè)目標(biāo)向量。
3、根據(jù)本發(fā)明的實(shí)施例,根據(jù)向量索引信息中的質(zhì)心向量,確定與查詢向量相匹配的多個(gè)待查詢子區(qū)域,包括:計(jì)算查詢向量與分布式數(shù)據(jù)庫中每個(gè)質(zhì)心向量之間的相似度,其中,每個(gè)質(zhì)心向量與一個(gè)存儲(chǔ)子區(qū)域?qū)?yīng);根據(jù)相似度,基于多個(gè)質(zhì)心向量各自對(duì)應(yīng)的存儲(chǔ)子區(qū)域,確定多個(gè)待查詢子區(qū)域。
4、根據(jù)本發(fā)明的實(shí)施例,根據(jù)目標(biāo)待查詢區(qū)域與多個(gè)待查詢子區(qū)域之間的第一分布信息,確定與每個(gè)待查詢子區(qū)域相匹配的向量獲取數(shù)目,包括:確定與每個(gè)待查詢子區(qū)域相匹配的第一預(yù)設(shè)數(shù)目;根據(jù)目標(biāo)待查詢區(qū)域與多個(gè)待查詢子區(qū)域之間的第一分布信息,確定與每個(gè)待查詢子區(qū)域?qū)?yīng)的數(shù)量權(quán)重;以及根據(jù)數(shù)量權(quán)重和第一預(yù)設(shè)數(shù)目,確定與每個(gè)待查詢子區(qū)域相匹配的向量獲取數(shù)目。
5、根據(jù)本發(fā)明的實(shí)施例,確定與每個(gè)待查詢子區(qū)域相匹配的第一預(yù)設(shè)數(shù)目,包括:基于預(yù)定規(guī)則,確定與每個(gè)待查詢子區(qū)域相匹配的第一預(yù)設(shè)數(shù)目。
6、根據(jù)本發(fā)明的實(shí)施例,確定與每個(gè)待查詢子區(qū)域?qū)?yīng)的第一預(yù)設(shè)數(shù)目,包括:獲取向量索引信息中的區(qū)域距離分布信息,其中,區(qū)域距離分布信息包括每個(gè)數(shù)據(jù)節(jié)點(diǎn)存儲(chǔ)的向量與質(zhì)心向量之間的距離;基于區(qū)域距離分布信息,從每個(gè)待查詢子區(qū)域中確定預(yù)設(shè)數(shù)量個(gè)第一備選數(shù)據(jù)節(jié)點(diǎn),得到備選數(shù)據(jù)節(jié)點(diǎn)集合;從備選數(shù)據(jù)節(jié)點(diǎn)集合中,確定與查詢向量最相似的預(yù)設(shè)數(shù)量個(gè)第二備選數(shù)據(jù)節(jié)點(diǎn);以及根據(jù)第二備選數(shù)據(jù)節(jié)點(diǎn)在多個(gè)待查詢子區(qū)域中的第二分布信息,確定與每個(gè)待查詢子區(qū)域相匹配的第一預(yù)設(shè)數(shù)目。
7、根據(jù)本發(fā)明的實(shí)施例,根據(jù)第二備選數(shù)據(jù)節(jié)點(diǎn)在多個(gè)待查詢子區(qū)域中的第二分布信息,確定與每個(gè)待查詢子區(qū)域相匹配的第一預(yù)設(shè)數(shù)目,包括:根據(jù)第二備選數(shù)據(jù)節(jié)點(diǎn)在多個(gè)待查詢子區(qū)域中的第二分布信息,確定屬于每個(gè)待查詢子區(qū)域的第二備選數(shù)據(jù)節(jié)點(diǎn)的第二預(yù)設(shè)數(shù)目;以及根據(jù)每個(gè)第二預(yù)設(shè)數(shù)目與預(yù)設(shè)數(shù)量的比值,確定與每個(gè)待查詢子區(qū)域相匹配的第一預(yù)設(shè)數(shù)目。
8、根據(jù)本發(fā)明的實(shí)施例,基于向量獲取數(shù)目,根據(jù)查詢向量從多個(gè)待查詢子區(qū)域中獲取多個(gè)目標(biāo)向量,包括:針對(duì)每個(gè)待查詢子區(qū)域,根據(jù)查詢向量與待查詢子區(qū)域中多個(gè)數(shù)據(jù)節(jié)點(diǎn)內(nèi)存儲(chǔ)的向量之間的相似度,確定向量獲取數(shù)目個(gè)目標(biāo)數(shù)據(jù)節(jié)點(diǎn);向每個(gè)目標(biāo)數(shù)據(jù)節(jié)點(diǎn)發(fā)送向量獲取請(qǐng)求,其中,每個(gè)目標(biāo)數(shù)據(jù)節(jié)點(diǎn)存儲(chǔ)一個(gè)目標(biāo)向量;以及從每個(gè)目標(biāo)數(shù)據(jù)節(jié)點(diǎn)接收與向量獲取請(qǐng)求對(duì)應(yīng)的目標(biāo)向量。
9、根據(jù)本發(fā)明的實(shí)施例,該方法還包括:按照多個(gè)目標(biāo)向量與查詢向量之間的相似度,對(duì)多個(gè)目標(biāo)向量進(jìn)行排序;以及向客戶端發(fā)送排序后的多個(gè)目標(biāo)向量。
10、本發(fā)明的另一個(gè)方面提供了一種基于分布式數(shù)據(jù)庫的向量索引裝置,其特征在于,裝置包括:獲取模塊,用于響應(yīng)于接收到由客戶端發(fā)送的數(shù)據(jù)查詢請(qǐng)求,獲取查詢向量,其中,查詢向量是由非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換得到的;第一確定模塊,用于利用分布式數(shù)據(jù)庫的分片存儲(chǔ)算法,確定用于存儲(chǔ)查詢向量的存儲(chǔ)區(qū)域,并將存儲(chǔ)區(qū)域作為目標(biāo)待查詢區(qū)域;第二確定模塊,用于根據(jù)向量索引信息中的質(zhì)心向量,確定與查詢向量相匹配的多個(gè)待查詢子區(qū)域;第三確定模塊,用于根據(jù)目標(biāo)待查詢區(qū)域與多個(gè)待查詢子區(qū)域之間的第一分布信息,確定與每個(gè)待查詢子區(qū)域相匹配的向量獲取數(shù)目;以及查詢模塊,用于基于向量獲取數(shù)目,根據(jù)查詢向量從多個(gè)待查詢子區(qū)域中獲取多個(gè)目標(biāo)向量。
11、本發(fā)明的另一個(gè)方面提供了一種電子設(shè)備,包括:一個(gè)或多個(gè)處理器;存儲(chǔ)器,用于存儲(chǔ)一個(gè)或多個(gè)程序,其中,當(dāng)一個(gè)或多個(gè)程序被一個(gè)或多個(gè)處理器執(zhí)行時(shí),使得一個(gè)或多個(gè)處理器實(shí)現(xiàn)如上的方法。
12、本發(fā)明的另一方面提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,指令在被執(zhí)行時(shí)用于實(shí)現(xiàn)如上的方法。
13、本發(fā)明的另一方面提供了一種計(jì)算機(jī)程序產(chǎn)品,計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可執(zhí)行指令,指令在被執(zhí)行時(shí)用于實(shí)現(xiàn)如上的方法。
14、本發(fā)明的實(shí)施例從存儲(chǔ)和查詢兩個(gè)角度實(shí)現(xiàn)了非結(jié)構(gòu)化數(shù)據(jù)的向量索引。一方面,在查詢角度,基于質(zhì)心向量預(yù)先選取多個(gè)待查詢子區(qū)域,以避免與分布式數(shù)據(jù)庫中所有的數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交互,減少交互的節(jié)點(diǎn)數(shù)量。同時(shí),由于質(zhì)心向量表征了待查詢子區(qū)域的整體特征,因此,預(yù)先確定的待查詢子區(qū)域也能夠保證向量準(zhǔn)確度。另一方面,在存儲(chǔ)角度,結(jié)合分布式數(shù)據(jù)庫的分片存儲(chǔ)算法,將分布式數(shù)據(jù)庫的分片規(guī)則和架構(gòu)的影響考慮在內(nèi)。由此,結(jié)合存儲(chǔ)角度確定的目標(biāo)待查詢區(qū)域、查詢角度確定的多個(gè)待查詢子區(qū)域,以確定每個(gè)待查詢子區(qū)域的向量獲取數(shù)目,在保證向量搜索準(zhǔn)確性的情況下,能夠更精準(zhǔn)地從待查詢子區(qū)域中確定更少數(shù)量的數(shù)據(jù)節(jié)點(diǎn),進(jìn)行通過向更少數(shù)量的數(shù)據(jù)節(jié)點(diǎn)發(fā)送請(qǐng)求,提高查詢效率和查詢速度。
1.一種基于分布式數(shù)據(jù)庫的向量索引方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)向量索引信息中的質(zhì)心向量,確定與所述查詢向量相匹配的多個(gè)待查詢子區(qū)域,包括:
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述目標(biāo)待查詢區(qū)域與多個(gè)所述待查詢子區(qū)域之間的第一分布信息,確定與每個(gè)所述待查詢子區(qū)域相匹配的向量獲取數(shù)目,包括:
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述確定與每個(gè)所述待查詢子區(qū)域相匹配的第一預(yù)設(shè)數(shù)目,包括:
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述確定與每個(gè)所述待查詢子區(qū)域?qū)?yīng)的第一預(yù)設(shè)數(shù)目,還包括:
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述根據(jù)所述第二備選數(shù)據(jù)節(jié)點(diǎn)在所述多個(gè)待查詢子區(qū)域中的第二分布信息,確定與每個(gè)所述待查詢子區(qū)域相匹配的第一預(yù)設(shè)數(shù)目,包括:
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述基于所述向量獲取數(shù)目,根據(jù)所述查詢向量從所述多個(gè)待查詢子區(qū)域中獲取多個(gè)目標(biāo)向量,包括:
8.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:
9.一種基于分布式數(shù)據(jù)庫的向量索引裝置,其特征在于,所述裝置包括:
10.一種電子設(shè)備,包括: