知識(shí)圖譜與向量數(shù)據(jù)庫(kù)的相遇
原創(chuàng)在《大模型應(yīng)用的10種架構(gòu)模式》一文 中,知識(shí)圖譜是RAG系統(tǒng)中的一種重要的技術(shù), 基于知識(shí)圖譜的大模型應(yīng)用也成為一個(gè)典型的架構(gòu)模式。但是,在一般的RAG系統(tǒng)中, 都會(huì)用到向量數(shù)據(jù)庫(kù),那么,當(dāng)知識(shí)圖譜與向量數(shù)據(jù)庫(kù)相遇后,會(huì)是怎樣的場(chǎng)景呢?
1.關(guān)于知識(shí)圖譜
知識(shí)圖譜是一種結(jié)構(gòu)化的信息表示形式,用于說(shuō)明不同概念之間的關(guān)系。它充當(dāng)一張地圖,連接各種數(shù)據(jù),并以易于理解的方式表示這些關(guān)系。知識(shí)圖譜經(jīng)常被用來(lái)存儲(chǔ)復(fù)雜的信息,并通過(guò)鏈接相關(guān)概念來(lái)促進(jìn)對(duì)大量數(shù)據(jù)集的理解。
1.1 知識(shí)圖譜的主要特征
知識(shí)數(shù)據(jù)庫(kù)一般通過(guò)圖數(shù)據(jù)庫(kù)承載,是集中式信息管理的關(guān)鍵,它提供了優(yōu)化可訪問(wèn)性的結(jié)構(gòu)化存儲(chǔ)庫(kù)。先進(jìn)的搜索功能提高了數(shù)據(jù)檢索效率,確保快速和準(zhǔn)確的信息發(fā)現(xiàn)。協(xié)作工具進(jìn)一步促進(jìn)實(shí)時(shí)貢獻(xiàn),促進(jìn)共享知識(shí)和不斷改進(jìn)的文化。
節(jié)點(diǎn)與邊緣
知識(shí)圖譜由節(jié)點(diǎn)(表示實(shí)體或想法)和邊(表示這些實(shí)體之間的聯(lián)系)組成。例如,在以書(shū)籍為中心的知識(shí)圖譜中,實(shí)體可以象征特定的書(shū)籍、作者和類(lèi)別,而連接可以象征鏈接,如“屬于什么類(lèi)別”或“由誰(shuí)所有”等。
語(yǔ)義關(guān)系
它們捕獲語(yǔ)義關(guān)系,這意味著它們理解數(shù)據(jù)的上下文和含義。這使得它們對(duì)于像推薦系統(tǒng)和搜索引擎這樣的應(yīng)用程序非常有用,因?yàn)樵谶@些應(yīng)用程序中,理解數(shù)據(jù)背后的含義是至關(guān)重要的。
靈活性
知識(shí)圖譜具有高度的靈活性,能夠以傳統(tǒng)數(shù)據(jù)庫(kù)難以處理的方式表示復(fù)雜的、相互連接的數(shù)據(jù)。
1.2 查詢示例
以一個(gè)簡(jiǎn)單的圖書(shū)知識(shí)圖譜為例,在這里,我們希望搜索由特定作者編著的所有書(shū)籍。
# 使用SPARQL 來(lái)通過(guò)作者查找圖書(shū)
query = "
SELECT ?bookTitle WHERE {
?book rdf:type :Book .
?book :writtenBy :AuthorName .
?book :title ?bookTitle .
}
“
BookTitle 是一個(gè)變量,它將保存指定作者所寫(xiě)的書(shū)的標(biāo)題。此查詢?cè)趫D中搜索具有: writtenBy 關(guān)系的所有書(shū)籍。
2. 關(guān)于向量數(shù)據(jù)庫(kù)
矢量數(shù)據(jù)庫(kù)以矢量的形式存儲(chǔ)數(shù)據(jù)。向量只是表示某些信息的數(shù)字序列。例如,在機(jī)器學(xué)習(xí)中,向量經(jīng)常被用來(lái)表示數(shù)據(jù)點(diǎn)的特征。
2.1 矢量數(shù)據(jù)庫(kù)的主要特征
矢量數(shù)據(jù)庫(kù)在處理復(fù)雜和大型數(shù)據(jù)(如照片、文檔和傳感器信號(hào))方面正變得越來(lái)越流行。它們是為快速有效地處理大型數(shù)據(jù)集而設(shè)計(jì)的。
數(shù)值表達(dá)
這里數(shù)據(jù)以數(shù)值向量的形式存儲(chǔ)。這使得它適用于需要數(shù)學(xué)運(yùn)算的應(yīng)用程序,例如相似性搜索或機(jī)器學(xué)習(xí)。
高效率的搜尋
矢量數(shù)據(jù)庫(kù)非常適合執(zhí)行快速搜索和比較。特別是在處理大型數(shù)據(jù)集時(shí)。它們是圖像或文本相似性搜索等應(yīng)用程序的理想選擇,在這些應(yīng)用程序中,需要查找與給定查詢最相似的項(xiàng)。
高維空間
向量可以有多個(gè)維度,允許復(fù)雜和詳細(xì)的數(shù)據(jù)表示。例如,圖像可以由一個(gè)高維向量來(lái)表示,該向量捕獲圖像的像素信息、顏色和其他特征。
2.2 向量數(shù)據(jù)庫(kù)查詢示例
假設(shè)我們擁有一個(gè)矢量數(shù)據(jù)庫(kù),每個(gè)矢量代表一個(gè)圖像。我們的目標(biāo)是識(shí)別類(lèi)似于指定查詢圖像的圖像。
import faiss
import numpy as np
# `image_vectors` 是一個(gè)圖像向量;`query_vector` 是待查找的圖像向量
index = faiss.IndexFlatL2(image_vectors.shape[1])
index.add(image_vectors)
# 查找最相似的5個(gè)圖像
D, I = index.search(np.array([query_vector]), 5)
print("Indices of similar images:", I)
其中,IndexFlatL2被用來(lái)創(chuàng)建一個(gè)基于最近鄰搜索歐幾里得度量的索引,搜索以查詢向量的方式提供了前5個(gè)最相似的圖像。
3. 知識(shí)圖譜與矢量數(shù)據(jù)庫(kù)的比較
當(dāng)對(duì)知識(shí)圖譜與矢量數(shù)據(jù)庫(kù)進(jìn)行比較時(shí),了解它們?cè)陲@示和查找數(shù)據(jù)方面的差異非常重要。知識(shí)圖譜能很好地顯示事物之間的聯(lián)系,非常適合根據(jù)意義來(lái)查找信息。與此同時(shí),矢量數(shù)據(jù)庫(kù)更善于處理復(fù)雜的數(shù)據(jù),比如文本、圖像和沒(méi)有組織的數(shù)據(jù),這使得它們成為需要處理這類(lèi)數(shù)據(jù)的任務(wù)的關(guān)鍵。
知識(shí)圖譜與矢量數(shù)據(jù)庫(kù)在數(shù)據(jù)表達(dá)、性能和典型用例的比較如下:
對(duì)比項(xiàng) | 知識(shí)圖譜 | 向量知識(shí)庫(kù) |
數(shù)據(jù)表達(dá) | 使用帶有節(jié)點(diǎn)和邊的圖形結(jié)構(gòu)來(lái)表示實(shí)體及其關(guān)系 | 使用矢量(數(shù)字陣列)表示數(shù)據(jù)點(diǎn),適用于數(shù)值和高維數(shù)據(jù)。 |
用例 | 對(duì)于理解實(shí)體之間的關(guān)系至關(guān)重要的應(yīng)用程序非常理想。它們通常用于語(yǔ)義搜索、推薦系統(tǒng)和知識(shí)管理系統(tǒng)。 | 最適合于需要相似性搜索的應(yīng)用程序,如圖像識(shí)別、自然語(yǔ)言處理和機(jī)器學(xué)習(xí)。 |
性能 | 在表示復(fù)雜關(guān)系方面提供了很大的靈活性,但在處理大規(guī)模的數(shù)字?jǐn)?shù)據(jù)時(shí)可能會(huì)遇到性能問(wèn)題。 | 為數(shù)值數(shù)據(jù)和相似性搜索提供優(yōu)秀的性能,但在表示復(fù)雜的、相互關(guān)聯(lián)的數(shù)據(jù)時(shí)可能不那么靈活。 |
4. 知識(shí)圖譜與向量數(shù)據(jù)庫(kù)的結(jié)合
在某些情況下,同時(shí)使用知識(shí)圖和矢量數(shù)據(jù)庫(kù)可能非常強(qiáng)大。例如,在推薦系統(tǒng)中,可以使用知識(shí)圖譜來(lái)理解目標(biāo)和用戶之間的關(guān)系,而向量數(shù)據(jù)庫(kù)可以用來(lái)執(zhí)行快速相似性搜索以找到最相關(guān)的目標(biāo)。
kg_query = "'
SELECT ?relatedItem WHERE {
:UserID :likes ?item .
?item :relatedTo ?relatedItem .
}
"'
# 從知識(shí)圖譜中找到目標(biāo)列表
related_items = ["Item1", "Item2", "Item3"]
# 使用向量數(shù)據(jù)庫(kù)查找相似的目標(biāo)
similar_items = []
for item in related_items:
item_vector = get_vector(item)
D, I = index.search(np.array([item_vector]), 5)
similar_items.extend(I)
# 得出推薦列表
print("Recommended items:", similar_items)
在這個(gè)例子中,使用知識(shí)圖來(lái)查找與用戶喜歡的對(duì)象相關(guān)目標(biāo),使用向量數(shù)據(jù)庫(kù)來(lái)查找與這些相關(guān)對(duì)象相似的目標(biāo),從而形成一個(gè)相對(duì)全面的推薦系統(tǒng)。
5. 知識(shí)圖譜的向量化
知識(shí)圖譜的向量化一般表達(dá)為嵌入模型,這些模型旨在將實(shí)體和關(guān)系映射到度量空間中的低維向量表示(嵌入)。在關(guān)系型相關(guān)變換下,實(shí)體之間的接近度反映了知識(shí)圖譜中存在相應(yīng)的邊的可能性。換句話說(shuō),如果兩個(gè)實(shí)體通過(guò)知識(shí)圖譜中的一個(gè)特定關(guān)系連接在一起,那么在應(yīng)用相應(yīng)的關(guān)系特定轉(zhuǎn)換之后,它們的嵌入應(yīng)該是緊密相關(guān)的。
5.1 嵌入模型
例如,兩種知識(shí)圖譜嵌入模型:TransE 和 PairRE。TransE 將每個(gè)實(shí)體和關(guān)系表示為嵌入空間中的一個(gè)向量。對(duì)于給定的三元組(頭部、關(guān)系、尾部) ,TransE 的目標(biāo)是使頭部實(shí)體的嵌入和關(guān)系的嵌入之和近似等于尾部實(shí)體的嵌入。這種基于翻譯的方法允許 TransE 有效地建模實(shí)體之間的簡(jiǎn)單關(guān)系。
另一方面,PairRE 將每個(gè)關(guān)系表示為一對(duì)向量(rH,rT) ,并將元素相乘(Hadamard 乘積)應(yīng)用于實(shí)體嵌入。對(duì)于一個(gè)給定的三元組(頭,關(guān)系,尾) ,PairRE 的目的是使 rh ° h (其中 rh 是頭特定關(guān)系嵌入)的元素智能積近似等于 rt ° t (其中 rt 是尾特定關(guān)系嵌入)的元素的Hadamard乘積。這種方法允許 PairRE 建模實(shí)體之間更復(fù)雜的關(guān)系,同時(shí)考慮到頭部和尾部實(shí)體在關(guān)系中的特定角色。
TransE 和 PairRE 都使用梯度下降法進(jìn)行訓(xùn)練,以便在滿足各自的約束時(shí)盡量減少誤差。然而,由于問(wèn)題的規(guī)模,在大型知識(shí)圖譜中訓(xùn)練這些模式可能是具有挑戰(zhàn)性的。隨著知識(shí)圖譜中實(shí)體數(shù)量的增加,潛在三元組的數(shù)量以二次方式增加,這使得在訓(xùn)練期間考慮所有可能的三元組在計(jì)算上是不可行的。為了解決這個(gè)問(wèn)題,一般會(huì)使用負(fù)抽樣來(lái)估計(jì)知識(shí)圖譜中不存在的三元組的誤差。這種技術(shù)通過(guò)破壞正三元組(即 知識(shí)圖譜中存在的三元組)來(lái)生成負(fù)三元組,方法是用一個(gè)隨機(jī)實(shí)體替換頭部或尾部的實(shí)體。然后,訓(xùn)練該模型,使其正三元組的得分高于負(fù)三元組。這種方法允許模型從現(xiàn)有的和不存在的關(guān)系中學(xué)習(xí),同時(shí)保持可管理的計(jì)算復(fù)雜性。
5.2 鏈路預(yù)測(cè)和評(píng)估度量
知識(shí)圖譜嵌入模型的主要任務(wù)之一是鏈接預(yù)測(cè),它包括推斷圖中缺失的鏈接。鏈路預(yù)測(cè)有兩個(gè)常見(jiàn)的應(yīng)用: 二叉鏈路分類(lèi)和潛在鏈路完成度排序。
- 二叉鏈路分類(lèi)。給定一個(gè)三元組(頭部,關(guān)系,尾部) ,預(yù)測(cè)三元組可能是真或假。這對(duì)于諸如事實(shí)檢查或知識(shí)庫(kù)補(bǔ)全等任務(wù)非常有用。
- 潛在鏈路補(bǔ)全的排序。給定一個(gè)部分三元組,例如,(頭,關(guān)系,?),模型對(duì)缺失實(shí)體的潛在候選者進(jìn)行排序。這對(duì)于諸如推薦系統(tǒng)或問(wèn)題回答之類(lèi)的任務(wù)非常有用。
為了評(píng)估 KG 嵌入模型在鏈路預(yù)測(cè)任務(wù)中的性能,使用了兩個(gè)常用的指標(biāo):
- hit@N,衡量的是排在 N 個(gè)預(yù)測(cè)前列的正確實(shí)體的比例。例如,如果給定(頭部,關(guān)系)對(duì)的正確尾部實(shí)體在100個(gè)潛在候選者中排名第3,那么 Hits@10得分將為1(因?yàn)檎_的實(shí)體在前10名中) ,而 Hits@1得分將為0(因?yàn)檎_的實(shí)體不是最高預(yù)測(cè))。
- MRR,此度量計(jì)算正確實(shí)體的倒數(shù)排名的平均值。倒數(shù)排名是第一個(gè)正確預(yù)測(cè)的排名的倒數(shù)。例如,如果正確的尾部實(shí)體排名第三,倒數(shù)排名將是1/3。
5.3 學(xué)習(xí)機(jī)制
當(dāng)前,大致有三種不同的學(xué)習(xí)機(jī)制,有助于提升知識(shí)圖譜嵌入模型的性能: 非結(jié)構(gòu)化統(tǒng)計(jì)學(xué)習(xí),網(wǎng)絡(luò)學(xué)習(xí)和主題學(xué)習(xí)。這些機(jī)制為嵌入式模型如何捕獲和利用知識(shí)圖譜中的信息提供了不同的視角。通過(guò)了解每個(gè)機(jī)制的作用,深入了解各種嵌入模型的優(yōu)點(diǎn)和局限性,從而開(kāi)發(fā)出更有效的知識(shí)圖譜學(xué)習(xí)方法。
非結(jié)構(gòu)化統(tǒng)計(jì)學(xué)習(xí)
非結(jié)構(gòu)化統(tǒng)計(jì)學(xué)習(xí)是一種面向知識(shí)圖譜的學(xué)習(xí)方法,其重點(diǎn)是利用潛在變量建模三元組(h,r,t)的概率分布。此方法沒(méi)有明確考慮圖結(jié)構(gòu)或關(guān)系之間的邏輯規(guī)則。相反,它依賴于實(shí)體的統(tǒng)計(jì)共同出現(xiàn)的頻率和知識(shí)圖譜內(nèi)的關(guān)系作出預(yù)測(cè)。在非結(jié)構(gòu)化統(tǒng)計(jì)學(xué)習(xí)中,每個(gè)頭部實(shí)體、尾部實(shí)體和關(guān)系在嵌入空間中用一個(gè)不同的向量表示。模型根據(jù)這些嵌入在數(shù)據(jù)中共同出現(xiàn)的頻率和模式來(lái)學(xué)習(xí)它們。三元組(h,r,t)的得分通常使用點(diǎn)積或嵌入的頭部、關(guān)系和尾部之間的另一個(gè)相似性度量來(lái)計(jì)算。
這種方法不直接利用圖的結(jié)構(gòu)屬性,而是關(guān)注實(shí)體和關(guān)系之間的統(tǒng)計(jì)關(guān)系。這使得非結(jié)構(gòu)化統(tǒng)計(jì)學(xué)習(xí)在數(shù)據(jù)表現(xiàn)出強(qiáng)共現(xiàn)模式時(shí)特別有用,這種模式不需要詳細(xì)的圖結(jié)構(gòu)分析就可以捕獲。
網(wǎng)絡(luò)學(xué)習(xí)
網(wǎng)絡(luò)學(xué)習(xí)是一種不需要明確考慮關(guān)系的語(yǔ)義就可以獲取知識(shí)圖譜的結(jié)構(gòu)特征的機(jī)制。這種方法利用連通性模式和圖的拓?fù)浣Y(jié)構(gòu)來(lái)學(xué)習(xí)反映實(shí)體的鄰近性和相關(guān)性的嵌入。
像 TransE 這樣的嵌入模型可以通過(guò)基于圖譜中觀察到的連通性調(diào)整實(shí)體和關(guān)系嵌入來(lái)學(xué)習(xí)潛在的網(wǎng)絡(luò)模式。在訓(xùn)練過(guò)程中,該模型試圖最小化由邊直接連接的實(shí)體之間的嵌入距離,同時(shí)最大化不直接連接的實(shí)體之間的距離。這個(gè)優(yōu)化過(guò)程允許模型學(xué)習(xí)反映圖結(jié)構(gòu)的嵌入,在圖中更接近的實(shí)體具有更相似的嵌入。
通過(guò)學(xué)習(xí)這些結(jié)構(gòu)模式,網(wǎng)絡(luò)學(xué)習(xí)允許嵌入模型捕獲知識(shí)圖譜的重要拓?fù)涮卣?,這對(duì)于像鏈接預(yù)測(cè)或?qū)嶓w聚類(lèi)這樣的任務(wù)可能是至關(guān)重要的,尤其是在沒(méi)有詳細(xì)的關(guān)系信息的情況下。
主題學(xué)習(xí)
這是知識(shí)圖嵌入過(guò)程中發(fā)現(xiàn)關(guān)系規(guī)則的一種機(jī)制。主題是知識(shí)圖譜中可以表示邏輯規(guī)則或關(guān)系之間約束的小的、重復(fù)出現(xiàn)的子圖。
知識(shí)圖譜的嵌入模型,如 TransE,可以通過(guò)優(yōu)化關(guān)系嵌入來(lái)學(xué)習(xí)這些模式,以滿足模式所隱含的約束條件。主題學(xué)習(xí)可以捕捉圖結(jié)構(gòu)之外的各種規(guī)則,比如對(duì)稱(chēng)性(如果 A 與 B 相關(guān),那么 B 與 A 相關(guān)),為知識(shí)圖譜中的規(guī)則學(xué)習(xí)提供了一個(gè)精確的定義,它完全依賴于圖的結(jié)構(gòu)而不是外部信息或推理。這種方法有助于捕獲和利用知識(shí)圖譜中固有的模式來(lái)提高嵌入質(zhì)量和預(yù)測(cè)性能。
5.4 評(píng)價(jià)知識(shí)圖譜的嵌入
在鏈接預(yù)測(cè)任務(wù)中增加負(fù)樣本的數(shù)量和多樣性,以提供更具挑戰(zhàn)性和代表性的測(cè)試。重采樣指標(biāo)(R-MRR)和標(biāo)準(zhǔn)指標(biāo)一起使用,可以以獲得更準(zhǔn)確的模型性能評(píng)估,特別是對(duì)于大型知識(shí)圖譜,統(tǒng)一的負(fù)樣本可能會(huì)產(chǎn)生誤導(dǎo)。
6. 小結(jié)
知識(shí)圖譜和矢量數(shù)據(jù)庫(kù)各有其獨(dú)特的優(yōu)勢(shì),適合不同類(lèi)型的任務(wù)。知識(shí)圖譜擅長(zhǎng)表示和查詢實(shí)體之間的復(fù)雜關(guān)系,這使它們成為語(yǔ)義搜索和推薦系統(tǒng)等應(yīng)用程序的理想選擇。矢量數(shù)據(jù)庫(kù)為存儲(chǔ)和搜索大量數(shù)字?jǐn)?shù)據(jù)而進(jìn)行了優(yōu)化,使它們非常適合進(jìn)行圖像和文本相似性搜索等任務(wù)。在某些情況下,結(jié)合這兩種技術(shù)可以提供一個(gè)強(qiáng)大的解決方案,利用各自的優(yōu)勢(shì)來(lái)獲得更好的結(jié)果。其中,知識(shí)圖譜的向量化提供了一種新的結(jié)合嘗試。