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