微軟開源的GraphRAG爆火,Github Star量破萬,生成式AI進入知識圖譜時代?
LLM 很強大,但也存在一些明顯缺點,比如幻覺問題、可解釋性差、抓不住問題重點、隱私和安全問題等。檢索增強式生成(RAG)可大幅提升 LLM 的生成質量和結果有用性。
本月初,微軟發布最強 RAG 知識庫開源方案 GraphRAG,項目上線即爆火,現在星標量已經達到 10.5 k。
- 項目地址:https://github.com/microsoft/graphrag
- 官方文檔:https://microsoft.github.io/graphrag/
有人表示,它比普通的 RAG 更強大:
GraphRAG 使用 LLM 生成知識圖譜,在對復雜信息進行文檔分析時可顯著提高問答性能,尤其是在處理私有數據時。
GraphRAG 和傳統 RAG 對比結果
現如今,RAG 是一種使用真實世界信息改進 LLM 輸出的技術,是大多數基于 LLM 的工具的重要組成部分,一般而言,RAG 使用向量相似性作為搜索,稱之為 Baseline RAG(基準RAG)。但 Baseline RAG 在某些情況下表現并不完美。例如:
- Baseline RAG 難以將各個點連接起來。當回答問題需要通過共享屬性遍歷不同的信息片段以提供新的綜合見解時,就會發生這種情況;
- 當被要求全面理解大型數據集甚至單個大型文檔中的總結語義概念時,Baseline RAG 表現不佳。
微軟提出的 GraphRAG 利用 LLM 根據輸入的文本庫創建一個知識圖譜。這個圖譜結合社區摘要和圖機器學習的輸出,在查詢時增強提示。GraphRAG 在回答上述兩類問題時顯示出顯著的改進,展現了在處理私有數據集上超越以往方法的性能。
不過,隨著大家對 GraphRAG 的深入了解,他們發現其原理和內容真的讓人很難理解。
近日,Neo4j 公司 CTO Philip Rathle 發布了一篇標題為《GraphRAG 宣言:將知識加入到生成式 AI 中》的博客文章,Rathle 用通俗易懂的語言詳細介紹了 GraphRAG 的原理、與傳統 RAG 的區別、GraphRAG 的優勢等。
他表示:「你的下一個生成式 AI 應用很可能就會用上知識圖譜?!?/span>
Neo4j CTO Philip Rathle
下面來看這篇文章。
我們正在逐漸認識到這一點:要使用生成式 AI 做一些真正有意義的事情,你就不能只依靠自回歸 LLM 來幫你做決定。
我知道你在想什么:「用 RAG 呀?!够蛘呶⒄{,又或者等待 GPT-5。
是的?;谙蛄康臋z索增強式生成(RAG)和微調等技術能幫到你。而且它們也確實能足夠好地解決某些用例。但有一類用例卻會讓所有這些技術折戟沉沙。
針對很多問題,基于向量的 RAG(以及微調)的解決方法本質上就是增大正確答案的概率。但是這兩種技術都無法提供正確答案的確定程度。它們通常缺乏背景信息,難以與你已經知道的東西建立聯系。此外,這些工具也不會提供線索讓你了解特定決策的原因。
讓我們把視線轉回 2012 年,那時候谷歌推出了自己的第二代搜索引擎,并發布了一篇標志性的博客文章《Introducing the Knowledge Graph: things, not strings》。他們發現,如果在執行各種字符串處理之外再使用知識圖譜來組織所有網頁中用字符串表示的事物,那么有可能為搜索帶來飛躍式的提升。
現在,生成式 AI 領域也出現了類似的模式。很多生成式 AI 項目都遇到了瓶頸,其生成結果的質量受限于這一事實:解決方案處理的是字符串,而非事物。
快進到今天,前沿的 AI 工程師和學術研究者們重新發現了谷歌曾經的發現:打破這道瓶頸的秘訣就是知識圖譜。換句話說,就是將有關事物的知識引入到基于統計的文本技術中。其工作方式就類似于其它 RAG,只不過除了向量索引外還要調用知識圖譜。也就是:GraphRAG?。℅raphRAG = 知識圖譜 + RAG)
本文的目標是全面且易懂地介紹 GraphRAG。研究表明,如果將你的數據構建成知識圖譜并通過 RAG 來使用它,就能為你帶來多種強勁優勢。有大量研究證明,相比于僅使用普通向量的 RAG,GraphRAG 能更好地回答你向 LLM 提出的大部分乃至全部問題。
單這一項優勢,就足以極大地推動人們采用 GraphRAG 了。
但還不止于此;由于在構建應用時數據是可見的,因此其開發起來也更簡單。
GraphRAG 的第三個優勢是人類和機器都能很好地理解圖譜并基于其執行推理。因此,使用 GraphRAG 構建應用會更簡單輕松,并得到更好的結果,同時還更便于解釋和審計(這對很多行業來說至關重要)。
我相信 GraphRAG 將取代僅向量 RAG,成為大多數用例的默認 RAG 架構。本文將解釋原因。
圖譜是什么?
首先我們必須闡明什么是圖譜。
圖譜,也就是 graph,也常被譯為「圖」,但也因此容易與 image 和 picture 等概念混淆。本文為方便區分,僅采用「圖譜」這一譯法。
圖譜大概長這樣:
圖譜示例
盡管這張圖常作為知識圖譜的示例,但其出處和作者已經不可考。
或這樣:
《權力的游戲》人物關系圖譜,來自 William Lyon
或這樣:
倫敦地鐵地圖。有趣小知識:倫敦交通局前段時間部署了一個基于圖譜的數字孿生應用,以提升事故響應能力并減少擁堵。
換句話說,圖譜不是圖表。
這里我們就不過多糾結于定義問題,就假設你已經明白圖譜是什么了。
如果你理解上面幾張圖片,那么你也許能看出來可以如何查詢其底層的知識圖譜數據(存儲在圖譜數據庫中),并將其用作 RAG 工作流程的一部分。也就是 GraphRAG。
兩種呈現知識的形式:向量和圖譜
典型 RAG 的核心是向量搜索,也就是根據輸入的文本塊從候選的書面材料中找到并返回概念相似的文本。這種自動化很好用,基本的搜索都大有用途。
但你每次執行搜索時,可能并未思考過向量是什么或者相似度計算是怎么實現的。下面我們來看看 Apple(蘋果)。它在人類視角、向量視角和圖譜視角下呈現出了不同的形式:
人類視角、向量視角和圖譜視角下的 Apple
在人類看來,蘋果的表征很復雜并且是多維度的,其特征無法被完整地描述到紙面上。這里我們可以充滿詩意地想象這張紅彤彤的照片能夠在感知和概念上表示一個蘋果。
這個蘋果的向量表示是一個數組。向量的神奇之處在于它們各自以編碼形式捕獲了其對應文本的本質。但在 RAG 語境中,只有當你需要確定一段文本與另一段文本的相似度時,才需要向量。為此,只需簡單地執行相似度計算并檢查匹配程度。但是,如果你想理解向量內部的含義、了解文本中表示的事物、洞察其與更大規模語境的關系,那使用向量表示法就無能為力了。
相較之下,知識圖譜是以陳述式(declarative)的形式來表示世界 —— 用 AI 領域的術語來說,也就是符號式(symbolic)。因此,人類和機器都可以理解知識圖譜并基于其執行推理。這很重要,我們后面還會提到。
此外,你還可以查詢、可視化、標注、修改和延展知識圖譜。知識圖譜就是世界模型,能表示你當前工作領域的世界。
GraphRAG 與 RAG
這兩者并不是競爭關系。對 RAG 來說,向量查詢和圖譜查詢都很有用。正如 LlamaIndex 的創始人 Jerry Liu 指出的那樣:思考 GraphRAG 時,將向量囊括進來會很有幫助。這不同于「僅向量 RAG」—— 完全基于文本嵌入之間的相似度。
根本上講,GraphRAG 就是一種 RAG,只是其檢索路徑包含知識圖譜。下面你會看到,GraphRAG 的核心模式非常簡單。其架構與使用向量的 RAG 一樣,但其中包含知識圖譜層。
GraphRAG 模式
GraphRAG 的一種常用模式
可以看到,上圖中觸發了一次圖譜查詢。其可以選擇是否包含向量相似度組件。你可以選擇將圖譜和向量分開存儲在兩個不同的數據庫中,也可使用 Neo4j 等支持向量搜索的圖譜數據庫。
下面給出了一種使用 GraphRAG 的常用模式:
1. 執行一次向量搜索或關鍵詞搜索,找到一組初始節點;
2. 遍歷圖譜,帶回相關節點的信息;
3.(可選)使用 PageRank 等基于圖譜的排名算法對文檔進行重新排名
用例不同,使用模式也會不一樣。和當今 AI 領域的各個研究方向一樣,GraphRAG 也是一個研究豐富的領域,每周都有新發現涌現。
GraphRAG 的生命周期
使用 GraphRAG 的生成式 AI 也遵循其它任意 RAG 應用的模式,一開始有一個「創建圖譜」步驟:
GraphRAG 的生命周期
創建圖譜類似于對文檔進行分塊并將其加載到向量數據庫中。工具的發展進步已經讓圖譜創建變得相當簡單。這里有三個好消息:
1. 圖譜有很好的迭代性 —— 你可以從一個「最小可行圖譜」開始,然后基于其進行延展。
2. 一旦將數據加入到了知識圖譜中,就能很輕松地演進它。你可以添加更多類型的數據,從而獲得并利用數據網絡效應。你還可以提高數據的質量,以提升應用的價值。
3. 該領域發展迅速,這就意味著隨著工具愈發復雜精妙,圖譜創建只會越來越容易輕松。
在之前的圖片中加入圖譜創建步驟,可以得到如下所示的工作流程:
添加圖譜創建步驟
下面來看看 GraphRAG 能帶來什么好處。
為什么要使用 GraphRAG?
相較于僅向量 RAG,GraphRAG 的優勢主要分為三大類:
1. 準確度更高且答案更完整(運行時間 / 生產優勢)
2. 一旦創建好知識圖譜,那么構建和維護 RAG 應用都會更容易(開發時間優勢)
3. 可解釋性、可追溯性和訪問控制方面都更好(治理優勢)
下面深入介紹這些優勢。
1. 準確度更高且答案更有用
GraphRAG 的第一個優勢(也是最直接可見的優勢)是其響應質量更高。不管是學術界還是產業界,我們都能看到很多證據支持這一觀察。
比如這個來自數據目錄公司 Data.world 的示例。2023 年底,他們發布了一份研究報告,表明在 43 個業務問題上,GraphRAG 可將 LLM 響應的準確度平均提升 3 倍。這項基準評測研究給出了知識圖譜能大幅提升響應準確度的證據。
知識圖譜將 LLM 響應的準確度提升了 54.2 個百分點,也就是大約提升了 3 倍
微軟也給出了一系列證據,包括 2024 年 2 月的一篇研究博客《GraphRAG: Unlocking LLM discovery on narrative private data》以及相關的研究論文《From Local to Global: A Graph RAG Approach to Query-Focused Summarization》和軟件:https://github.com/microsoft/graphrag(即上文開篇提到的 GraphRAG)。
其中,他們觀察到使用向量的基線 RAG 存在以下兩個問題:
- 基線 RAG 難以將點連接起來。為了綜合不同的信息來獲得新見解,需要通過共享屬性遍歷不同的信息片段,這時候,基線 RAG 就難以將不同的信息片段連接起來。
- 當被要求全面理解在大型數據集合甚至單個大型文檔上歸納總結的語義概念時,基線 RAG 表現不佳。
微軟發現:「通過使用 LLM 生成的知識圖譜,GraphRAG 可以大幅提升 RAG 的「檢索」部分,為上下文窗口填入相關性更高的內容,從而得到更好的答案并獲取證據來源?!顾麄冞€發現,相比于其它替代方法,GraphRAG 所需的 token 數量可以少 26% 到 97%,因此其不僅能給出更好的答案,而且成本更低,擴展性也更好。
進一步深入準確度方面,我們知道答案正確固然重要,但答案也要有用才行。人們發現,GraphRAG 不僅能讓答案更準確,而且還能讓答案更豐富、更完整、更有用。
領英近期的論文《Retrieval-Augmented Generation with Knowledge Graphs for Customer Service Question Answering》就是一個出色的范例,其中描述了 GraphRAG 對其客戶服務應用的影響。GraphRAG 提升了其客戶服務答案的正確性和豐富度,也因此讓答案更加有用,還讓其客戶服務團隊解決每個問題的時間中位數降低了 28.6%。
Neo4j 的生成式 AI 研討會也有一個類似的例子。如下所示,這是針對一組 SEC 備案文件,「向量 + GraphRAG」與「僅向量」方法得到的答案:
「僅向量」與「向量 + GraphRAG」方法對比
請注意「描述可能受鋰短缺影響的公司的特征」與「列出可能受影響的具體公司」之間的區別。如果你是一位想要根據市場變化重新平衡投資組合的投資者,或一家想要根據自然災害重新調整供應鏈的公司,那么上圖右側的信息肯定比左側的重要得多。這里,這兩個答案都是準確的。但右側答案明顯更有用。
Jesus Barrasa 的《Going Meta》節目第 23 期給出了另一個絕佳示例:從詞匯圖譜開始使用法律文件。
我們也時不時會看到來自學術界和產業界的新示例。比如 Lettria 的 Charles Borderie 就給出了一個「僅向量」與「向量 + GraphRAG」方法的對比示例;其中 GraphRAG 依托于一個基于 LLM 的文本到圖譜工作流程,將 10,000 篇金融文章整理成了一個知識圖譜:
僅檢索器方法與圖檢索器方法的對比
可以看到,相比于使用普通 RAG,使用 GraphRAG 不僅能提升答案的質量,并且其答案的 token 數量也少了三分之一。
再舉一個來自 Writer 的例子。他們最近發布了一份基于 RobustQA 框架的 RAG 基準評測報告,其中對比了他們的基于 GraphRAG 的方法與其它同類工具。GraphRAG 得到的分數是 86%,明顯優于其它方法(在 33% 到 76% 之間),同時還有相近或更好的延遲性能。
RAG 方法的準確度和響應時間評估結果
GraphRAG 正在給多種多樣的生成式 AI 應用帶去助益。知識圖譜打開了讓生成式 AI 的結果更準確和更有用的道路。
2. 數據理解得到提升,迭代速度更快
不管是概念上還是視覺上,知識圖譜都很直觀。探索知識圖譜往往能帶來新的見解。
很多知識圖譜用戶都分享了這樣的意外收獲:一旦投入心力完成了自己的知識圖譜,那么它就能以一種意想不到的方式幫助他們構建和調試自己的生成式 AI 應用。部分原因是如果能以圖譜的形式看待數據,那便能看到這些應用底層的數據呈現出了一副生動的數據圖景。
圖譜能讓你追溯答案,找到數據,并一路追溯其因果鏈。
我們來看看上面有關鋰短缺的例子。如果你可視化其向量,那么你會得到類似下圖的結果,只不過行列數量都更多。
向量可視化
而如果將數據轉換成圖譜,則你能以一種向量表示做不到的方式來理解它。
以下是 LlamaIndex 最近的網絡研討會上的一個例子,展示了他們使用「MENTIONS(提及)」關系提取向量化詞塊(詞匯圖譜)和 LLM 提取實體(領域圖譜)的圖譜并將兩者聯系起來的能力:
提取詞匯圖譜和領域圖譜
(也有很多使用 Langchain、Haystack 和 SpringAI 等工具的例子。)
你可以看到此圖中數據的豐富結構,也能想象其所能帶來的新的開發和調試可能性。其中,各個數據都有各自的值,而結構本身也存儲和傳達了額外的含義,你可將其用于提升應用的智能水平。
這不僅是可視化。這也是讓你的數據結構能傳達和存儲意義。下面是一位來自一家著名金融科技公司的開發者的反應,當時他們剛把知識圖譜引入 RAG 工作流程一周時間:
開發者對 GraphRAG 的反應
這位開發者的反應非常符合「測試驅動的開發」假設,即驗證(而非信任)答案是否正確。就我個人而言,如果讓我百分之百地將自主權交給決策完全不透明的 AI,我會感到毛骨悚然。更具體而言,就算你不是一個 AI 末日論者,你也會同意:如果能不將與「Apple, Inc.」有關的詞塊或文檔映射到「Apple Corps」(這是兩家完全不一樣的公司),確實會大有價值。由于推動生成式 AI 決策的最終還是數據,因此可以說評估和確保數據正確性才是最至關重要的。
3. 治理:可解釋性、安全及更多
生成式 AI 決策的影響越大,你就越需要說服在決策出錯時需要最終負責的人。這通常涉及到審計每個決策。這就需要可靠且重復的優良決策記錄。但這還不夠。在采納或放棄一個決策時,你還需要解釋其背后的原因。
LLM 本身沒法很好地做到這一點。是的,你可以參考用于得到該決策的文檔。但這些文檔并不能解釋這個決策本身 —— 更別說 LLM 還會編造參考來源。知識圖譜則完全在另一個層面上,能讓生成式 AI 的推理邏輯更加明晰,也更容易解釋輸入。
繼續來看上面的一個例子:Lettria 的 Charles 將從 10,000 篇金融文章提取出的實體載入到了一個知識圖譜中,并搭配一個 LLM 來執行 GraphRAG。我們看到這確實能提供更好的答案。我們來看看這些數據:
將從 10,000 篇金融文章提取出的實體載入知識圖譜
首先,將數據看作圖譜。另外,我們也可以導覽和查詢這些數據,還能隨時修正和更新它們。其治理優勢在于:查看和審計這些數據的「世界模型」變得簡單了很多。相較于使用同一數據的向量版本,使用圖譜讓最終負責人更可能理解決策背后的原因。
在確保質量方面,如果能將數據放在知識圖譜中,則就能更輕松地找到其中的錯誤和意外并且追溯它們的源頭。你還能在圖譜中獲取來源和置信度信息,然后將其用于計算以及解釋。而使用同樣數據的僅向量版本根本就無法做到這一點,正如我們之前討論的那樣,一般人(甚至不一般的人)都很難理解向量化的數據。
知識圖譜還可以顯著增強安全性和隱私性。
在構建原型設計時,安全性和隱私性通常不是很重要,但如果要將其打造成產品,那這就至關重要了。在銀行或醫療等受監管的行業,任何員工的數據訪問權限都取決于其工作崗位。
不管是 LLM 還是向量數據庫,都沒有很好的方法來限制數據的訪問范圍。知識圖譜卻能提供很好的解決方案,通過權限控制來規范參與者可訪問數據庫的范圍,不讓他們看到不允許他們看的數據。下面是一個可在知識圖譜中實現細粒度權限控制的簡單安全策略:
可在知識圖譜中實現的一種簡單安全策略
創建知識圖譜
構建知識圖譜需要什么?第一步是了解兩種與生成式 AI 應用最相關的圖譜。
領域圖譜(domain graph)表示的是與當前應用相關的世界模型。這里有一個簡單示例:
領域圖譜
詞匯圖譜(lexical graph)則是文檔結構的圖譜。最基本的詞匯圖譜由詞塊構成的節點組成:
詞匯圖譜
人們往往會對其進行擴展,以包含詞塊、文檔對象(比如表格)、章節、段落、頁碼、文檔名稱或編號、文集、來源等之間的關系。你還可以將領域圖譜和詞匯圖譜組合到一起,如下所示:
將領域層和詞匯層組合起來
詞匯圖譜的創建很簡單,主要就是簡單的解析和分塊。至于領域圖譜,則根據數據來源(來自結構化數據源還是非結構化數據源或者兩種來源都有)的不同,有不同的創建路徑。幸運的是,從非結構化數據源創建知識圖譜的工具正在飛速發展。
舉個例子,新的 Neo4j Knowledge Graph Builder 可以使用 PDF 文檔、網頁、YouTube 視頻、維基百科文章來自動創建知識圖譜。整個過程非常簡單,點幾下按鈕即可,然后你就能可視化和查詢你輸入的文本的領域和詞匯圖譜。這個工具很強大,也很有趣,能極大降低創建知識圖譜的門檻。
至于結構化數據(比如你的公司存儲的有關客戶、產品、地理位置等的結構化數據),則能直接映射成知識圖譜。舉個例子,對于最常見的存儲在關系數據庫中的結構化數據,可以使用一些標準工具基于經過驗證的可靠規則將關系映射成圖譜。
使用知識圖譜
有了知識圖譜后,就可以做 GraphRAG 了,為此有很多框架可選,比如 LlamaIndex Property Graph Index、Langchain 整合的 Neo4j 以及 Haystack 整合的版本。這個領域發展很快,但現在編程方法正在變得非常簡單。
在圖譜創建方面也是如此,現在已經出現了 Neo4j Importer(可通過圖形化界面將表格數據導入和映射為圖譜)和前面提到的 Neo4j Knowledge Graph Builder 等工具。下圖總結了構建知識圖譜的步驟。
自動構建用于生成式 AI 的知識圖譜
使用知識圖譜還能將人類語言的問題映射成圖譜數據庫查詢。Neo4j 發布了一款開源工具 NeoConverse,可幫助使用自然語言來查詢知識圖譜:https://neo4j.com/labs/genai-ecosystem/neoconverse/
雖然開始使用圖譜時確實需要花一番功夫來學習,但好消息是隨著工具的發展,這會越來越簡單。
總結:GraphRAG 是 RAG 的必定未來
LLM 固有的基于詞的計算和語言技能加上基于向量的 RAG 能帶來非常好的結果。為了穩定地得到好結果,就必須超越字符串層面,構建詞模型之上的世界模型。同樣地,谷歌發現為了掌握搜索能力,他們就必須超越單純的文本分析,繪制出字符串所代表的事物之間的關系。我們開始看到 AI 世界也正在出現同樣的模式。這個模式就是 GraphRAG。
技術的發展曲線呈現出 S 型:一項技術達到頂峰后,另一項技術便會推動進步并超越前者。隨著生成式 AI 的發展,相關應用的要求也會提升 —— 從高質量答案到可解釋性再到對數據訪問權限的細粒度控制以及隱私和安全,知識圖譜的價值也會隨之愈發凸顯。
生成式 AI 的進化
你的下一個生成式 AI 應用很可能就會用上知識圖譜。