本說(shuō)明書(shū)一個(gè)或多個(gè)實(shí)施例涉及計(jì)算機(jī)領(lǐng)域,尤其涉及在向量數(shù)據(jù)庫(kù)中寫(xiě)入、搜索向量數(shù)據(jù)的方法和裝置。
背景技術(shù):
1、向量數(shù)據(jù)庫(kù)是具備存儲(chǔ)和查詢向量數(shù)據(jù)功能的數(shù)據(jù)庫(kù),其存儲(chǔ)的向量數(shù)據(jù)可以來(lái)自于對(duì)文本、語(yǔ)音、圖像、視頻等的向量化。與傳統(tǒng)數(shù)據(jù)庫(kù)相比,向量數(shù)據(jù)庫(kù)可以處理更多的非結(jié)構(gòu)化數(shù)據(jù),比如圖像和音頻。在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中,常常會(huì)用到向量數(shù)據(jù),也就是說(shuō),數(shù)據(jù)通常以向量形式表示。其中,向量數(shù)據(jù)可以屬于用戶的隱私數(shù)據(jù)的表征,例如,向量數(shù)據(jù)可以來(lái)自于對(duì)人臉圖像的向量化或者對(duì)指紋圖像的向量化,而人臉圖像和指紋圖像常常被視為隱私數(shù)據(jù)。
2、在搜索向量數(shù)據(jù)時(shí),向量數(shù)據(jù)庫(kù)主要關(guān)注的是向量之間的相似性計(jì)算,而不是精確匹配。在寫(xiě)入向量數(shù)據(jù)時(shí),需要構(gòu)建向量索引,向量索引是指在向量數(shù)據(jù)庫(kù)中,為了加速相似性搜索而建立的一種數(shù)據(jù)結(jié)構(gòu)?,F(xiàn)有技術(shù)中,在向量數(shù)據(jù)庫(kù)中寫(xiě)入向量數(shù)據(jù)的方案,以及在向量數(shù)據(jù)庫(kù)中搜索向量數(shù)據(jù)的方案,在針對(duì)大規(guī)模的向量數(shù)據(jù)時(shí),常常無(wú)法兼顧實(shí)時(shí)性和存儲(chǔ)成本。
技術(shù)實(shí)現(xiàn)思路
1、本說(shuō)明書(shū)一個(gè)或多個(gè)實(shí)施例描述了一種在向量數(shù)據(jù)庫(kù)中寫(xiě)入、搜索向量數(shù)據(jù)的方法和裝置,能夠兼顧實(shí)時(shí)性和存儲(chǔ)成本。
2、第一方面,提供了一種在向量數(shù)據(jù)庫(kù)中寫(xiě)入向量數(shù)據(jù)的方法,方法包括:
3、接收針對(duì)目標(biāo)向量數(shù)據(jù)的寫(xiě)入請(qǐng)求;
4、在內(nèi)存表中向量數(shù)據(jù)庫(kù)的動(dòng)態(tài)的第一索引中添加所述目標(biāo)向量數(shù)據(jù)對(duì)應(yīng)的索引更新信息;所述第一索引為基于內(nèi)存的實(shí)時(shí)讀寫(xiě)向量圖索引;
5、當(dāng)所述內(nèi)存表刷新到磁盤(pán)時(shí),將所述內(nèi)存表中動(dòng)態(tài)的第一索引的索引更新信息存儲(chǔ)到分布式文件系統(tǒng),得到靜態(tài)的第一索引;
6、將所述分布式文件系統(tǒng)中靜態(tài)的第一索引轉(zhuǎn)化為第二索引;所述第二索引為基于磁盤(pán)的低成本向量圖索引。
7、在一種可能的實(shí)施方式中,所述方法還包括:
8、將多個(gè)數(shù)據(jù)量小于目標(biāo)值的第二索引合并為一個(gè)數(shù)據(jù)量大于或等于所述目標(biāo)值的第二索引。
9、在一種可能的實(shí)施方式中,所述第一索引是hnsw索引,第二索引是di?skann索引。
10、進(jìn)一步地,所述索引更新信息包括:hnsw索引中鄰接關(guān)系的更新,和/或多個(gè)分層圖的層次結(jié)構(gòu)的調(diào)整。
11、進(jìn)一步地,所述將所述分布式文件系統(tǒng)中靜態(tài)的第一索引轉(zhuǎn)化為第二索引,包括:
12、獲取所述分布式文件系統(tǒng)中靜態(tài)的hnsw索引中底層的圖結(jié)構(gòu),將其作為di?skann中的圖結(jié)構(gòu);
13、獲取所述向量數(shù)據(jù)庫(kù)包括的各個(gè)向量數(shù)據(jù),生成各個(gè)向量數(shù)據(jù)分別對(duì)應(yīng)的壓縮向量;
14、基于所述圖結(jié)構(gòu)、所述壓縮向量構(gòu)建所述第二索引的索引文件,將所述索引文件存儲(chǔ)于所述分布式文件系統(tǒng)。
15、第二方面,提供了一種在向量數(shù)據(jù)庫(kù)中搜索向量數(shù)據(jù)的方法,方法包括:
16、接收針對(duì)目標(biāo)向量數(shù)據(jù)的搜索請(qǐng)求;
17、基于所述目標(biāo)向量數(shù)據(jù)執(zhí)行目標(biāo)搜索,從而確定搜索結(jié)果,所述目標(biāo)搜索包括,利用內(nèi)存中存儲(chǔ)的動(dòng)態(tài)的第一索引、分布式文件系統(tǒng)中存儲(chǔ)的靜態(tài)的第一索引和第二索引中分別進(jìn)行向量搜索,將各自搜索得到的結(jié)果合并后作為匹配結(jié)果集;其中,所述第一索引為基于內(nèi)存的實(shí)時(shí)讀寫(xiě)向量圖索引,所述第二索引為基于磁盤(pán)的低成本向量圖索引,所述第二索引是通過(guò)將從內(nèi)存轉(zhuǎn)存至磁盤(pán)的第一索引進(jìn)行轉(zhuǎn)化得到的。
18、在一種可能的實(shí)施方式中,所述向量數(shù)據(jù)庫(kù)中存儲(chǔ)多個(gè)數(shù)據(jù)行,一個(gè)數(shù)據(jù)行包括多種類型數(shù)據(jù)分別對(duì)應(yīng)的數(shù)據(jù)列,所述多種類型數(shù)據(jù)包括向量數(shù)據(jù)和其他類型數(shù)據(jù)。
19、進(jìn)一步地,所述搜索請(qǐng)求還包括針對(duì)其他類型數(shù)據(jù)的過(guò)濾搜索條件;所述目標(biāo)搜索還包括:
20、在所述向量搜索之后,根據(jù)所述過(guò)濾搜索條件,利用過(guò)濾的方式得到過(guò)濾結(jié)果集;
21、利用所述過(guò)濾結(jié)果集對(duì)所述匹配結(jié)果集進(jìn)行過(guò)濾,根據(jù)過(guò)濾結(jié)果確定搜索結(jié)果。
22、進(jìn)一步地,所述搜索請(qǐng)求還包括針對(duì)其他類型數(shù)據(jù)的過(guò)濾搜索條件;所述目標(biāo)搜索還包括:
23、在所述向量搜索之前,根據(jù)所述過(guò)濾搜索條件,利用過(guò)濾的方式得到過(guò)濾結(jié)果集;
24、所述向量搜索包括,利用所述第一索引和第二索引,從所述過(guò)濾結(jié)果集對(duì)應(yīng)的子搜索范圍中進(jìn)行搜索,得到所述匹配結(jié)果集。
25、進(jìn)一步地,所述根據(jù)所述過(guò)濾搜索條件,利用過(guò)濾的方式得到過(guò)濾結(jié)果集,包括:
26、根據(jù)所述過(guò)濾搜索條件包括的至少一種其他類型數(shù)據(jù),搜索得到若干行號(hào);其中,行號(hào)用于標(biāo)識(shí)所述數(shù)據(jù)行;
27、將所述若干行號(hào),或其對(duì)應(yīng)的若干數(shù)據(jù)行包括的目標(biāo)數(shù)據(jù)列的向量數(shù)據(jù),確定為所述過(guò)濾結(jié)果集。
28、進(jìn)一步地,所述目標(biāo)搜索得到與所述目標(biāo)向量數(shù)據(jù)相匹配的若干行號(hào);其中,行號(hào)用于標(biāo)識(shí)所述數(shù)據(jù)行;所述確定搜索結(jié)果包括,獲取所述相匹配的若干行號(hào)對(duì)應(yīng)的數(shù)據(jù)行中的若干目標(biāo)數(shù)據(jù)列的數(shù)據(jù)信息及其后置處理信息,所述后置處理信息包括,搜索過(guò)程中的統(tǒng)計(jì)信息。
29、第三方面,提供了一種在向量數(shù)據(jù)庫(kù)中寫(xiě)入向量數(shù)據(jù)的裝置,裝置包括:
30、代理服務(wù)器,用于接收針對(duì)目標(biāo)向量數(shù)據(jù)的寫(xiě)入請(qǐng)求;
31、搜索節(jié)點(diǎn),用于在內(nèi)存表中向量數(shù)據(jù)庫(kù)的動(dòng)態(tài)的第一索引中添加所述代理服務(wù)器接收的目標(biāo)向量數(shù)據(jù)對(duì)應(yīng)的索引更新信息;所述第一索引為基于內(nèi)存的實(shí)時(shí)讀寫(xiě)向量圖索引;
32、數(shù)據(jù)整合引擎,用于當(dāng)所述內(nèi)存表刷新到磁盤(pán)時(shí),將所述搜索節(jié)點(diǎn)添加的所述內(nèi)存表中動(dòng)態(tài)的第一索引的索引更新信息存儲(chǔ)到分布式文件系統(tǒng),得到靜態(tài)的第一索引;
33、存儲(chǔ)引擎,用于將所述數(shù)據(jù)整合引擎得到的所述分布式文件系統(tǒng)中靜態(tài)的第一索引轉(zhuǎn)化為第二索引;所述第二索引為基于磁盤(pán)的低成本向量圖索引。
34、第四方面,提供了一種在向量數(shù)據(jù)庫(kù)中搜索向量數(shù)據(jù)的裝置,裝置包括:
35、代理服務(wù)器,用于接收針對(duì)目標(biāo)向量數(shù)據(jù)的搜索請(qǐng)求;
36、搜索節(jié)點(diǎn),用于基于所述代理服務(wù)器接收的目標(biāo)向量數(shù)據(jù)執(zhí)行目標(biāo)搜索,從而確定搜索結(jié)果,所述目標(biāo)搜索包括,利用內(nèi)存中存儲(chǔ)的動(dòng)態(tài)的第一索引、分布式文件系統(tǒng)中存儲(chǔ)的靜態(tài)的第一索引和第二索引中分別進(jìn)行向量搜索,將各自搜索得到的結(jié)果合并后作為匹配結(jié)果集;其中,所述第一索引為基于內(nèi)存的實(shí)時(shí)讀寫(xiě)向量圖索引,所述第二索引為基于磁盤(pán)的低成本向量圖索引,所述第二索引是通過(guò)將從內(nèi)存轉(zhuǎn)存至磁盤(pán)的第一索引進(jìn)行轉(zhuǎn)化得到的。
37、第五方面,提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,當(dāng)所述計(jì)算機(jī)程序在計(jì)算機(jī)中執(zhí)行時(shí),令計(jì)算機(jī)執(zhí)行第一方面或第二方面的方法。
38、第六方面,提供了一種計(jì)算設(shè)備,包括存儲(chǔ)器和處理器,所述存儲(chǔ)器中存儲(chǔ)有可執(zhí)行代碼,所述處理器執(zhí)行所述可執(zhí)行代碼時(shí),實(shí)現(xiàn)第一方面或第二方面的方法。
39、通過(guò)本說(shuō)明書(shū)實(shí)施例提供的在向量數(shù)據(jù)庫(kù)中寫(xiě)入向量數(shù)據(jù)的方法和裝置,首先接收針對(duì)目標(biāo)向量數(shù)據(jù)的寫(xiě)入請(qǐng)求;然后在內(nèi)存表中向量數(shù)據(jù)庫(kù)的動(dòng)態(tài)的第一索引中添加所述目標(biāo)向量數(shù)據(jù)對(duì)應(yīng)的索引更新信息;所述第一索引為基于內(nèi)存的實(shí)時(shí)讀寫(xiě)向量圖索引;接著當(dāng)所述內(nèi)存表刷新到磁盤(pán)時(shí),將所述內(nèi)存表中動(dòng)態(tài)的第一索引的索引更新信息存儲(chǔ)到分布式文件系統(tǒng),得到靜態(tài)的第一索引;最后將所述分布式文件系統(tǒng)中靜態(tài)的第一索引轉(zhuǎn)化為第二索引;所述第二索引為基于磁盤(pán)的低成本向量圖索引。由上可見(jiàn),本說(shuō)明書(shū)實(shí)施例,采用了分布式文件系統(tǒng)來(lái)代替本地存儲(chǔ),能夠適應(yīng)于大規(guī)模的向量數(shù)據(jù),并且,采用了復(fù)合索引方案,通過(guò)將分布式文件系統(tǒng)中靜態(tài)的第一索引轉(zhuǎn)化為第二索引,實(shí)現(xiàn)了釋放出內(nèi)存空間,后續(xù)可以使用第一索引服務(wù)實(shí)時(shí)增量的向量數(shù)據(jù),第二索引服務(wù)存量歷史向量數(shù)據(jù),從而能夠兼顧實(shí)時(shí)性和存儲(chǔ)成本。
40、通過(guò)本說(shuō)明書(shū)實(shí)施例提供的在向量數(shù)據(jù)庫(kù)中搜索向量數(shù)據(jù)的方法和裝置,首先接收針對(duì)目標(biāo)向量數(shù)據(jù)的搜索請(qǐng)求;然后基于所述目標(biāo)向量數(shù)據(jù)執(zhí)行目標(biāo)搜索,從而確定搜索結(jié)果,所述目標(biāo)搜索包括,利用內(nèi)存中存儲(chǔ)的動(dòng)態(tài)的第一索引、分布式文件系統(tǒng)中存儲(chǔ)的靜態(tài)的第一索引和第二索引中分別進(jìn)行向量搜索,將各自搜索得到的結(jié)果合并后作為匹配結(jié)果集;其中,所述第一索引為基于內(nèi)存的實(shí)時(shí)讀寫(xiě)向量圖索引,所述第二索引為基于磁盤(pán)的低成本向量圖索引,所述第二索引是通過(guò)將從內(nèi)存轉(zhuǎn)存至磁盤(pán)的第一索引進(jìn)行轉(zhuǎn)化得到的。由上可見(jiàn),本說(shuō)明書(shū)實(shí)施例,在搜索向量數(shù)據(jù)時(shí),同時(shí)使用了第一索引和第二索引,發(fā)揮了第一索引和第二索引的優(yōu)點(diǎn),從而能夠兼顧實(shí)時(shí)性和存儲(chǔ)成本。