人工智能和知識圖譜二:構建和使用知識圖譜的工具包和算法
一、知識表示標準
RDF 和 SPARQL
許多知識圖譜的核心是資源描述框架 (RDF),它是 W3C 標準,用于以主語-謂語-賓語三元組的形式表示信息。RDF 提供了一個靈活的圖形數(shù)據(jù)模型,其中每個三元組(例如<Alice> <worksAt> <CompanyX>)都斷言資源之間的關系。它帶有形式語義(RDF Schema、OWL 本體),可實現(xiàn)豐富的知識建模(例如類層次結(jié)構、域/范圍限制)。RDF 中的數(shù)據(jù)可以以各種格式(Turtle、JSON-LD 等)序列化,并且是模式可選的,這意味著可以從開放模式開始并逐步發(fā)展它。要查詢 RDF 數(shù)據(jù),標準語言是SPARQL(SPARQL 協(xié)議和 RDF 查詢語言)。SPARQL 是一種類似 SQL 的查詢語言,允許對三元組進行模式匹配。它支持復雜的圖形模式查詢、過濾、聚合甚至推理(通過蘊涵機制)。例如,SPARQL 查詢可以通過匹配三元組模式并利用本體關系來詢問:“查找在北京公司工作的所有人”。SPARQL 在查詢?nèi)我鈭D模式方面的表達能力是知識圖譜擅長解答復雜問題的原因之一。然而,表達能力的提升也伴隨著計算成本:SPARQL 查詢引擎必須優(yōu)化潛在的大型連接,因為單個 SPARQL 查詢可能涉及多個三元組模式。SPARQL 引擎中實現(xiàn)了圖模式匹配、連接優(yōu)化和結(jié)果分頁等算法,以處理大規(guī)模查詢。許多知識圖譜工具包原生支持 RDF/SPARQL,從而確保了互操作性。
圖數(shù)據(jù)庫模型——帶標簽屬性圖
除了 RDF 模型之外,知識圖譜 (KG) 的另一個范例是帶標簽屬性圖 (LPG)模型。在這里,節(jié)點和邊可以具有標簽以及任意一組鍵值屬性,而不是將每條邊作為預定義的“謂詞”。該模型是 Neo4j 等圖數(shù)據(jù)庫的基礎。LPG 通常使用Cypher(Neo4j 的查詢語言)或 Gremlin(一種遍歷語言)等語言進行查詢。Cypher 提供了一種非常易讀的 ASCII 語法,例如MATCH (p:Person)-[:WORKS_AT]->(c:Company {location: "Beijing"}) RETURN p用于查找在北京的公司工作的人員)。RDF 的優(yōu)勢在于標準化和推理能力,而 LPG 則在開發(fā)人員友好的建模和某些圖操作的性能方面更勝一籌。這兩種模型都共享圖遍歷算法的底層思想。工具正在日益融合:例如,Apache TinkerPop(Gremlin 的框架)可以將 RDF 表示為屬性圖,而 SPARQL 和 Cypher 都在影響新的標準圖形查詢語言(GQL)。
嵌入算法——TransE、ComplEx 等
知識圖譜嵌入算法是專門的機器學習模型,用于學習實體和關系的向量表示。其目標是使向量空間中的幾何運算與圖中的關系相對應,從而能夠預測新的鏈接或相似性查詢。TransE (平移嵌入)是一種開創(chuàng)性的算法,它將關系表示為向量平移:對于三元組(頭h,關系r,尾t),TransE 嘗試在向量空間中使h + r ≈ t 。它簡單高效,但無法很好地模擬一對多或多對多關系。后來的模型,如TransH、TransR、RotatE,引入了變體(將實體投影到特定于關系的空間或在復空間中使用旋轉(zhuǎn))來解決這些限制。ComplEx是一種嵌入模型,它使用復值向量來捕捉非對稱關系,因為復共軛可以區(qū)分r(h,t)與r(t,h) 。它在基準測試中取得了成功,實現(xiàn)了較高的鏈接預測準確率。這些算法通常優(yōu)化三元組的評分函數(shù)(例如距離或相似度),使用已知的真實三元組和負樣本(損壞的三元組)進行訓練,以使真實事實的排名高于無意義事實。它們的價值在于能夠泛化和預測知識圖譜(KG,知識圖譜補全)中的新邊。然而,嵌入是潛在表示,不易解釋,這就是為什么它們經(jīng)常與符號方法一起使用的原因。最近的嵌入技術集成了圖神經(jīng)網(wǎng)絡 (GNN):例如,關系型圖神經(jīng)網(wǎng)絡 (GCN)會聚合每個節(jié)點的鄰居信息,以迭代方式計算其嵌入,從而自然地將局部圖結(jié)構融入到表示中。圖自編碼器和基于 Transformer 的模型也用于編碼多跳鄰域。嵌入算法的選擇會影響可擴展性:像 TransE 這樣簡單的模型可以擴展到數(shù)百萬個實體,而復雜的神經(jīng)方法可能需要更多的計算(通常是 GPU)。PyKEEN或DGL-KE等庫提供了許多嵌入模型的實現(xiàn),并在實驗中得到廣泛應用。
圖神經(jīng)網(wǎng)絡
如上所述,GNN 已成為分析知識圖譜的重要工具。圖神經(jīng)網(wǎng)絡是一種通過聚合鄰居節(jié)點的表示來迭代更新節(jié)點表示的模型。在知識圖譜 (KG) 的背景下,關系型GNN 還會考慮邊的類型。像R-GCN(關系圖卷積網(wǎng)絡)這樣的模型通過為不同關系類型設置單獨的權重矩陣來擴展 GCN。GNN 擅長節(jié)點分類(例如,根據(jù)圖上下文預測實體的標簽或類型)和鏈接預測(GNN 可以輸出潛在鏈接的分數(shù))等任務。它們在我們有額外的節(jié)點特征或?qū)傩詠砼c關系信息混合的場景中也能大放異彩。一個新興的發(fā)展是Graph Transformers,它將自注意力機制應用于鄰域甚至整個子圖中的節(jié)點,有可能比 GNN 的局部聚合捕獲更多的全局交互。 Kumo.ai 博客中引用的關于關系圖 Transformer 的研究正在進行中,該研究可以處理包含多種關系類型的大型知識圖譜的復雜性。GNN 雖然功能強大,但規(guī)模相對較大——其可擴展性通常受限于內(nèi)存(用于保存鄰居信息)以及隨圖譜規(guī)模增長的計算量。諸如鄰居采樣、小批量訓練和使用歸納表征等技術被用于在大型知識圖譜上擴展 GNN。
推理器和規(guī)則引擎
在算法方面,知識圖譜的另一個重要組成部分是推理引擎。這些推理引擎包括描述邏輯推理器(用于 OWL 本體),例如 HermiT 或 Pellet,可以推斷子類關系、實例類型等,以及基于規(guī)則的引擎,例如支持 SPARQL 推理或 SWRL 規(guī)則的引擎。例如,規(guī)則引擎可能應用一條規(guī)則:“如果 X 是 Y 的父級,且 Y 是 Z 的父級,則推斷 X 是 Z 的祖父級。”此類規(guī)則可以用語義網(wǎng)標準(RIF/RuleML)編寫,也可以通過 Jena 內(nèi)置規(guī)則推理器等引擎實現(xiàn)。這些推理器確保一致性并允許推導隱性知識,但它們可能需要大量計算(在最壞情況下,大型本體的 OWL 推理速度可能會呈指數(shù)級增長)。現(xiàn)代系統(tǒng)有時會使用前向鏈接(提前實現(xiàn)所有推理)來優(yōu)化查詢應答,但這會占用存儲空間;而另一些系統(tǒng)則使用后向鏈接(動態(tài)推導查詢的依據(jù))來節(jié)省空間。一些圖數(shù)據(jù)庫(例如 Stardog、GraphDB 和 Ontotext 平臺)內(nèi)置了對常見蘊涵(RDFS/OWL 配置文件)的支持 。同時,屬性圖系統(tǒng)通常缺乏顯式推理器,不過可以通過遍歷查詢或使用外部工具(例如,將 Apache Jena 推理步驟與 Neo4j 結(jié)合進行 OWL 推理)來實現(xiàn)某些約束。
二、關鍵工具和平臺
存在多種用于處理知識圖譜的工具包,每種工具包都有不同的優(yōu)勢。
Apache Jena
一個開源 Java 框架,是語義網(wǎng)社區(qū)的中堅力量。Jena 提供了用于創(chuàng)建和操作 RDF 圖的 API、內(nèi)存和 TDB 持久存儲以及 SPARQL 查詢引擎 (ARQ)。它還包含一個內(nèi)置的基于規(guī)則的推理器。Jena 因其對 RDF/OWL 標準的全面支持而備受贊譽,并經(jīng)常在研究和企業(yè)項目中用作知識圖譜 (KG) 數(shù)據(jù)處理的“粘合劑”。在可擴展性方面,Jena TDB 可以在單臺機器上處理數(shù)千萬個三元組,而 Jena 較新的Fuseki服務器則為 Web 應用程序提供了 SPARQL 端點。但是,對于非常大的圖或高并發(fā)性需求,專用的圖數(shù)據(jù)庫可能更受歡迎。Jena 的優(yōu)勢在于其豐富的功能和作為庫的靈活性。對于使用 Java 構建自定義知識圖譜管道的開發(fā)人員來說,它是首選。
Stardog
一個商業(yè)企業(yè)知識圖譜平臺。Stardog 是一個支持 RDF 和 OWL 的圖譜數(shù)據(jù)庫,同時也提供了一定的多模型靈活性(它可以提取 JSON、CSV 等數(shù)據(jù)并將它們映射到圖中)。它具有強大的SPARQL 查詢引擎,尤其是內(nèi)置規(guī)則引擎,除了 OWL 推理之外,還可以定義推理規(guī)則。Stardog 強調(diào)企業(yè)級功能,例如安全性、可擴展性(它可以在集群模式下運行)和工具(它具有用于虛擬圖、搜索集成等的連接器)。許多用戶選擇 Stardog 是因為它在大型圖譜上的性能和便利性——它提供了一個統(tǒng)一的環(huán)境來建模本體、加載數(shù)據(jù)和進行推理查詢。在可擴展性方面,Stardog 可以通過集群處理數(shù)千億個三元組,并使用基于磁盤的索引和緩存來提高查詢速度。它還提供高級功能,例如全文搜索集成和地理空間查詢。易用性:Stardog 帶有基于 Web 的 GUI,并支持 GraphQL,方便用戶使用 GraphQL 查詢。缺點是需要支付許可費用(它是商業(yè)軟件),并且需要根據(jù)具體部署進行調(diào)整。
Neo4j
Neo4j 或許是最著名的圖數(shù)據(jù)庫,它使用帶標簽屬性圖模型和 Cypher 查詢語言。它并非專門的 RDF 存儲(盡管名為 Neosemantics 的插件允許導入/導出 RDF)。Neo4j 以其對開發(fā)人員友好的特性而聞名,設置和查詢相對簡單,并配有可視化探索工具(Neo4j 瀏覽器和 Bloom)。它在圖遍歷性能方面表現(xiàn)出色,并且擁有成熟的生態(tài)系統(tǒng)(多種語言的驅(qū)動程序和活躍的社區(qū))。Neo4j 的可擴展性傳統(tǒng)上受限于其單實例數(shù)據(jù)庫(用于 OLTP 工作負載),但最新版本(Neo4j 4.x 和 5)引入了分片和 Fabric 技術,用于讀取查詢的水平擴展。它符合 ACID 規(guī)范,可以在高端硬件上處理數(shù)百億個關系。對于知識圖譜,Neo4j 通常用于主要需要操作型圖查詢(例如,實時推薦、欺詐模式檢測)而非繁重語義推理的場景。它本身并不執(zhí)行 OWL 推理——人們要么不用,要么使用外部推理器來提前豐富圖譜。Neo4j 的一個關鍵優(yōu)勢是易用性和可視化;數(shù)據(jù)科學家可以快速啟動 Neo4j 實例并運行非常直觀的 Cypher 查詢。Neo4j 還具有圖數(shù)據(jù)科學庫,可直接在屬性圖上運行圖算法(例如中心性、社區(qū)檢測)。總而言之,Neo4j 在用戶友好性、事務性能和生態(tài)系統(tǒng)方面表現(xiàn)強勁,但與 RDF 存儲相比,其語義表達能力較弱。
Protégé
由斯坦福大學維護的開源本體編輯器和框架。Protégé 不是一個數(shù)據(jù)庫,而是一個知識建模工具。它提供了一個圖形用戶界面來定義類、屬性和邏輯約束(使用 OWL 本體),有效地充當了知識圖譜的模式編輯器。領域?qū)<液椭R工程師使用 Protégé 來設計知識圖譜的模式(本體),有時還會填充小規(guī)模實例進行測試。它支持包括推理器(例如 HermiT)在內(nèi)的插件,用于驗證類層次結(jié)構并檢查本體的一致性。Protégé 的優(yōu)勢在于它能夠幫助設計具有豐富語義的復雜模式——您可以通過友好的用戶界面指定Person是Mammal的子類,或者hasSpouse是對稱的等等。這使得它對于確保知識圖譜的理論合理性至關重要。本體設計完成后,可以將其導入到圖形數(shù)據(jù)庫中,該數(shù)據(jù)庫將強制執(zhí)行或使用該模式。 Protégé 還具有用于本體開發(fā)的團隊協(xié)作功能。它高度可用,盡管在理解形式語義方面存在一定的學習曲線。對于非專業(yè)人士來說,種類繁多的 OWL 選項可能會讓人不知所措,但 Protégé 可以有效地成為構建知識圖譜 (KG) 的 TBox(模式)的工作臺。在現(xiàn)代知識圖譜項目中,你經(jīng)常會看到這樣的工作流程:使用 Protégé 進行模式設計,而實際的實例數(shù)據(jù)存儲和管理在實現(xiàn)該模式的數(shù)據(jù)庫中,例如 GraphDB 或 Neo4j。
其他值得注意的工具
除了上述工具之外,還有其他廣泛使用的工具: Ontotext 的GraphDB(通常簡稱為 Ontotext GraphDB)是一個企業(yè)級 RDF 存儲庫,以高性能和全文搜索集成而聞名——它用于許多工業(yè)項目并提供大數(shù)據(jù)可擴展性(集群支持)。OpenLink的Virtuoso是另一個資深的三元組存儲庫,以支持 DBpedia 而聞名;它同時支持 SQL 和 SPARQL 查詢,可以充當關系數(shù)據(jù)和 RDF 數(shù)據(jù)的統(tǒng)一數(shù)據(jù)。Blazegraph (以前是 Systap 的 bigdata)是 Wikidata 查詢服務使用的開源三元組存儲庫(以其高效的查詢引擎和 GPU 加速選項而聞名)——它的開發(fā)在收購后暫停,但它仍在一些地方的生產(chǎn)中使用。RDF4J (以前是 Sesame)是一個類似于 Jena 的開源 Java 框架(一些項目更喜歡它的 API 風格)。對于屬性圖,除了 Neo4j,JanusGraph(開源,基于 Apache Cassandra 或其他后端構建)允許分布式圖存儲并支持 TinkerPop/Gremlin 查詢。我們將在第 6 節(jié)中詳細介紹TigerGraph,它是一個分布式圖數(shù)據(jù)庫,旨在處理非常大的圖和進行實時分析。Grakn (TypeDB)是一個知識圖平臺,它使用自定義查詢語言(Graql)提供超關系模型,專注于內(nèi)置的智能推理和推理。每種工具在可擴展性方面都有其優(yōu)缺點:例如,TigerGraph 和 JanusGraph 旨在跨集群進行水平擴展,而 GraphDB 和 Stardog 通常使用大型服務器或通過復制和緩存進行“垂直”擴展。在功能方面:一些強調(diào)推理(GraphDB、Stardog),另一些強調(diào)分析(TigerGraph、帶有 GDS 的 Neo4j),還有一些強調(diào)便利性(比如我們將在下一節(jié)討論的云托管服務)。前景豐富,選擇往往歸結(jié)為用例要求,例如數(shù)據(jù)大小、查詢復雜性、推理需求和團隊專業(yè)知識。
三、關鍵工具評估
對以上工具進行總結(jié):Apache Jena功能豐富,非常適合定制解決方案,但可能需要更多手動設置才能擴展(將其嵌入 Web 應用程序中需要設置 Fuseki 或類似程序)。Stardog 是企業(yè)級的,將語義嚴謹性(OWL、規(guī)則)與良好的可擴展性和流暢的用戶體驗(特別是對于那些具有 RDF 專業(yè)知識的人)相結(jié)合。Neo4j 非常用戶友好且有詳盡的文檔,使開發(fā)人員可以輕松上手;當模式可以更寬松并且圖遍歷是核心(社交網(wǎng)絡、推薦)時,它是理想的選擇。Protégé 在本體設計方面無與倫比,但不用于運行時查詢(它是離線設計)。
在性能方面:屬性圖數(shù)據(jù)庫(Neo4j、TigerGraph)在路徑密集型查詢方面通常優(yōu)于 RDF 存儲,因為它們可以有效地索引關系,而 RDF 存儲在復雜模式匹配方面表現(xiàn)出色,尤其是與推理相結(jié)合時。
擴展性方面:眾所周知,TigerGraph 和 Amazon Neptune(屬性圖 + RDF)能夠通過分布式架構處理非常大的圖(1000 億條邊),而像 Jena TDB 或單實例 Neo4j 這樣的程序在單臺機器上處理數(shù)十億條關系時會受到限制。
易用性方面:精通 SQL 的用戶一開始可能會覺得 SPARQL 很陌生,而習慣于 JSON 的用戶可能更喜歡屬性圖。現(xiàn)代工具正在彌合差距(例如,GraphDB 和 Stardog 提供了 GraphQL 端點以方便使用,Neo4j 的 GDS 庫可以輕松地將 ML 帶入圖表,等等)。
表格樣式的比較(例如在 DB-Engines上)通常顯示權衡:例如,Jena TDB 是基于文件的,對于并發(fā)寫入不是 ACID,而 Neo4j 是完全 ACID 并支持用戶定義的過程; Stardog 支持推理,Neo4j 原生不支持,等等。
最終,“最佳”工具取決于具體情況,但令人鼓舞的消息是,現(xiàn)在存在一系列成熟的工具來實現(xiàn)知識圖譜,這反映了知識圖譜在人工智能和企業(yè)應用中日益增長的重要性。