你想要的GraphRAG的內容都在這了
最近微軟終于開源了他的GraphRAG,短短7天就集齊了6.7K Star。那GraphRAG到底是個啥???
圖片
GraphRAG的論文實際上要比代碼開源早很多,論文應是今年4月份在Arxiv上發(fā)表的,但是代碼是這個月1號才正式上傳開源。
圖片
項目開源地址:https://github.com/microsoft/graphrag
項目幫助文檔:https://microsoft.github.io/graphrag/posts/get_started/
1. 為什么要提出GraphRAG?
RAG,又稱檢索增強生成(Retrieval Augumented Generation)。RAG目前已經成為大語言模型應用的核心組件之一,利用檢索到的內容,無論是相似度檢索,還是傳統(tǒng)搜索、搜索引擎來增強大語言模型的外部知識。憑借這一能力,RAG在幫助LLM處理私有化數(shù)據(jù)集上發(fā)揮了巨大的潛力、取得了不俗的表現(xiàn),這些私有化數(shù)據(jù)集對于LLM來說是全新的,比如企業(yè)內部文檔、商業(yè)文件、用戶對話記錄等。即使如此,傳統(tǒng)RAG仍然存在很多問題,比如:
- ? 在處理多信息點時存在困難,比如某個問題的回答需要整合多個文檔、多個片段的信息,提供全新的見解時,傳統(tǒng)RAG往往在回答的全面性方面存在不足。
2. 什么是GraphRAG
圖片
如上圖所示,GraphRAG包括兩個處理階段,分別是:索引階段和查詢階段。索引階段利用LLM來自動化構建知識圖譜,提取出對應的節(jié)點(如實體)、邊(如關系)和協(xié)變量(如主張,claim),然后利用社區(qū)發(fā)現(xiàn)技術(如Leiden算法)對整個知識圖譜進行子圖劃分,然后自底而上對子圖利用LLM進行摘要、總結。針對特定查詢,“全局答案(Global Search)”匯總所有與之相關的社區(qū)摘要最后匯總生成答案。
圖片
圖片
2.1 源文檔生成文本片段
與傳統(tǒng)RAG一樣,GraphRAG也需要將源文檔轉化為文本片段(TextUnits),這個片段既會被用于圖譜抽取,也會作為知識的引用源,以便追溯回最初的原始文本內容。
圖片
在最新開源的GraphRAG代碼里,文本切分大?。ㄒ訲oken數(shù)計算)是可以根據(jù)用戶需求調整的。默認是300個Token,盡管,作者發(fā)現(xiàn)1200個token大小的文本單元能取得更好效果。但是,越大的文本塊大小會導致輸出精度降低、召回率降低、并且降低參考文本的可讀性;不過文本塊尺寸越大,可以減少LLM調用次數(shù),整個處理過程速度可以更快。
下圖展示了,在相同的提取循環(huán)次數(shù)下,提取的實體數(shù)會隨著文檔片段的大小增加。
圖片
文本單元的分組設置同樣可以根據(jù)用戶需求定制。默認GraphRAG會按照文檔邊界來對齊單元,確保文檔與文本單元之間保持嚴格的一對一關聯(lián)。在少數(shù)情況下(特別是非常短的文檔),比如推文、聊天記錄這些情況下,會組合多個文檔構成一個有意義的分析單元。
2.2 知識圖譜構建
接下來的步驟就是對于每一段文本片段,利用LLM從中提取實體、關系、主張(Claim)。下圖是GraphRAG里面用于知識圖譜構建的提示詞。
圖片
因為篇幅原因,這里不展示全部提示詞,大家可以自行參考鏈接:
./prompt_tune/template/entity_extraction.py
2.3 元素實例轉化為元素摘要
通過LLM對文檔中的實體、關系、主張進行提取,本質上是對文檔的一種抽象式摘要。同名同類型的實體將通過整合它們的描述形成統(tǒng)一的數(shù)組;同樣的,相同起點和終點的關系也將通過整合描述后進行合并。
圖譜抽取的最后一步是對代表同一現(xiàn)實世界實體但名稱不同的實體進行辨識。由于此過程通過LLM執(zhí)行,希望在不丟失信息的前提下,采取一種審慎且非破壞性的方法。
不過,目前的實體辨識實現(xiàn)是具有破壞性的。將一系列實體提供給LLM,并要求其判斷哪些實體應該合并。然后,這些實體將被合并為單一實體,并且它們的關系也會相應更新。
GraphRAG正在積極探索其他實體辨識技術。在不久的將來,實體辨識將通過在不同實體變體間建立一條邊來執(zhí)行,表明這些實體已經被索引引擎辨識。這將使用戶能夠撤銷索引端的辨識,并采用類似過程添加自己的非破壞性辨識。
2.4 元素概要至圖譜社群
上一步驟所構建的索引可以視作一個均勻無向加權圖,實體節(jié)點通過關系邊相連,邊的權重反映了所檢測到關系實例的歸一化數(shù)量?;诖祟悎D,可以應用多種社群發(fā)現(xiàn)算法,將圖遞歸劃分為多個社群,這些社群內的節(jié)點間的聯(lián)系比與圖外其他節(jié)點更為緊密。在GraphRAG中,作者選用了Leiden算法,原因在于其能夠有效地挖掘大規(guī)模圖譜的層級社群結構。
圖片
該層級結構的每一層都提供了一種劃分方式,以互斥且全面覆蓋的方式呈現(xiàn)圖中所有節(jié)點,為全局性摘要的分治策略提供了可能。
2.5 圖譜社群至社群概要
接下來利用社群(知識圖譜子圖)數(shù)據(jù),利用LLM為每個社群總結為一個摘要式報告。這有助于在圖譜的不同細節(jié)層次上獲得宏觀的理解。比如,若社區(qū)A屬于最頂層,將獲得整個圖譜的綜合報告;若社區(qū)屬于較低層次,則報告將聚焦于一個特定的局部群體。
圖片
可以通過提示詞里的示例,看一下這個知識圖譜報告長什么樣子:
圖片
通過LLM對社區(qū)報告進行濃縮、精簡,然后將這些報告內容通過embedding模型進行向量化,這里與傳統(tǒng)的RAG類似。
所以小編認為,在整個GraphRAG里面,知識圖譜提取和這一步圖譜子圖摘要式總結是最為重要和特殊的。
2.6 社群概要至社群解答,再到全局解答
針對用戶的提問,社群的層接結構特性意味著可以利用不同層級的社群摘要來回答問題。在特定的社群中,用戶的提問全局答復按以下過程生成:
- ? 準備社群概要。將社群概要隨機混洗,并劃分為預設的令牌大小的區(qū)塊。這樣做確保了相關信息均勻分布,而不是聚集(可能遺失)在單一的上下文窗口中。
- ? 映射社群解答。并行生成每個區(qū)塊的中間答案。同時要求LLM為生成的答案打分,分數(shù)范圍從0到100,以指示答案對目標問題的幫助程度。得分為0的答案將被排除。
- ? 匯總為全局答案。根據(jù)有用性得分,將中間社群答案降序排列,并逐步整合進新的上下文窗口,直至達到令牌限制。這一最終上下文將用于生成并返回給用戶的全局答案。
3. 對比分析
作者對比了六種配置的RAG,包括利用四層圖社群結構的GraphRAG(C0、C1、C2、C3),以及將Map-Reduce應用于原始文本的文本摘要方法(TS)、語義搜索RAG(SS)。
C0:利用根層級的社群概要來響應用戶查詢,數(shù)量最為稀少。
C1:利用高級別社群概要解答問題,這些是C0的子社群,如果存在的話;否則是C0社群的下投影。
C2:利用中層級社群概要來解答問題,這些是C1的子社群,如果存在的話;否則是C1社群的下投影。
C3:利用底層社群概要來解答問題,數(shù)量最多,這些是C2的子社群,如果存在的話;否則是C2社群的下投影。
TS:與GraphRAG方法相似,只是將原始文本(而非社群概要)隨機分配并分塊,用于map-reduce摘要階段。
SS:一種樸素RAG的實現(xiàn),檢索文本塊并添加至上下文窗口,直至達到設定的令牌限制。
3.1 全局方法相較于樸素RAG
圖片
如上圖,四種度量標準下每組125個問題(每組問題均重復五次并取平均值)的勝率對比圖。每一行代表的條件與每一列的條件相比較,勝者以粗體字標出。自我勝率未作計算,以預期的50%作為參考線。
在全面性和多樣性上,GraphRAG的所有條件均超越了樸素RAG。特別是條件C1至C3,在答案的全面性和多樣性方面相較于TS(不依賴圖索引的全局文本摘要)顯示出了小幅提升。
全局方法在全面性和多樣性兩個指標上,無論是播客還是新聞數(shù)據(jù)集,均持續(xù)超越了樸素RAG(SS)方法。具體來說,全局方法在播客文稿的全面性勝率介于72%到83%之間,在新聞文章上的勝率則在72%到80%之間,多樣性勝率分別為75%到82%和62%到71%。此外,我們以直接性作為有效性的檢驗,結果符合預期,即樸素RAG在所有對比中提供了最直接的回答。
3.2 社群摘要與原始文本的對比
對比社區(qū)概要和原始文本,社區(qū)概要在提升答案的全面性和多樣性方面,普遍帶來了雖小但穩(wěn)定的改進,根級概要不在此列。
- ? 在播客數(shù)據(jù)集中,中級社區(qū)概要的全面性勝率為57%
- ? 新聞數(shù)據(jù)集中,低級社區(qū)概要的全面性勝率為64%
多樣性方面:
- ? 播客中級社區(qū)概要的勝率為57%,新聞低級社區(qū)概要則為60%。
圖片
上表展示了GraphRAG相較于原始文本摘要在可擴展性上的優(yōu)勢:針對低級社區(qū)概要(C3),GraphRAG所需的上下文Token數(shù)減少了26-33%;而針對根級社區(qū)概要(C0),令牌需求量更是減少了97%以上。
與其它全局方法相比,盡管性能略有降低,根級GraphRAG依然是進行迭代問答的高效方法,這種問答是感知活動的特點,同時在全面性(勝率72%)和多樣性(勝率62%)上仍超越了樸素RAG。
3.3 回答效果展示
圖片
上圖第二、三行分別展示了GraphRAG和樸素RAG回答的效果對比,第四行展示了使用LLM對這兩個回答做出的評估結果(四個評估維度)。
本文轉載自??大語言模型論文跟蹤??,作者:HuggingAGI ????
