GraphRAG 檢索增強+圖模型

Lachrymosa發表於2024-09-02

https://arxiv.org/pdf/2404.16130

往期的NaiveRAG基本都是顯式檢索,而GraphRAG透過知識圖譜實現了總結能力。知識圖譜通常是事先生成的,並儲存在系統中,供使用者查詢和模型使用。

1 引入

通常意義上,RAG的作用是從外部知識源中檢索相關資訊,使LLM能夠回答有關私有或以前未見過的文件集合的問題。對於顯式的檢索任務,RAG表現優異;但是對於例如“資料集中主要的主題是什麼?”這類問題,由於這是一個全域性性問題,一般的RAG通常表現不佳。

GraphRAG使用LLM在兩個階段構建基於圖的文字索引:首先從源文件中提取實體知識圖譜,然後使用社群檢測方法為所有密切相關的實體群體預生成社群總結。

2 流程管道

GraphRAG 檢索增強+圖模型

面向領域的總結(Domain-tailored Summarization)指的是根據特定的領域的要求,使用適應該領域的提示詞和方法,從文件中提取和生成高度相關且有意義的總結資訊。協變數(Covariates)指的是協因變數變的量,在這裡指的是實體節點或關係邊相關聯的額外屬性,屬於包含在摘要中的資訊。

協變體現了子類的擴充套件性,允許子型別替換父型別,通常用於返回型別(A=B,G(A)=G(B));逆變體現了子類的繼承性,允許父型別替換子型別,通常用於引數型別(A=B,G(B)=G(A))。

2.1 Source Documents → Text Chunks

一個基本的設計決策是確定從源文件提取的輸入文字應以何種粒度分割為文字塊以便處理。在接下來的步驟中,每個文字塊將傳遞給一組LLM提示,用於提取圖索引的各種元素。

這一步輸入原文件,輸出文字塊。

2.2 Text Chunks → Element Instances

基本要求是識別並提取每個源文字塊中的圖節點和邊的例項。作者使用一個多部分的LLM提示,首先識別文字中的所有實體,包括它們的名稱、型別和描述,然後識別所有明確相關實體之間的關係,包括源實體和目標實體及其關係的描述。這兩類元素例項都輸出為一個包含分隔元組的列表。

這一步輸入文字塊,輸出圖節點和邊的例項列表。

2.3 Element Instances → Element Summaries

對前一步列表中每個圖元素(如實體節點、關係邊和協變數)建立獨立而有意義的摘要。

這一步輸入例項列表,輸出每個例項元素的摘要。

2.4 Element Summaries → Graph Communities

在前一步中建立的索引可以建模為一個同質無向加權圖,其中實體節點透過關係邊連線,邊的權重表示檢測到的關係例項的歸一化計數。給定這樣的圖,可以使用各種社群檢測演算法將圖劃分為社群,這些社群中的節點彼此之間的連線比與圖中其他節點的連線更強。作者使用Leiden演算法,因為它能夠高效地恢復大規模圖的層次社群結構。這個層次結構的每個級別都提供了一個社群劃分,以互斥且全面覆蓋的方式覆蓋圖的所有節點,從而實現分而治之的全域性總結。

這一步輸入的是基於前一步建立的同質無向加權圖,輸出社群劃分後的結構圖。

GraphRAG 檢索增強+圖模型

2.5 Graph Communities → Community Summaries

下一步是為Leiden層次結構中的每個社群建立類似報告的摘要,這種方法設計用於擴充套件到非常大的資料集。這些摘要本身就有獨立的價值,可以用於理解資料集的整體結構和語義,甚至可以在沒有具體問題的情況下,用於解析語料庫。例如,使用者可以瀏覽某一層級的社群摘要以尋找感興趣的主題,然後跟隨連結檢視更低層級的報告,以獲取每個子主題的詳細資訊。然而,這裡我們專注於它們作為基於圖的索引的一部分,用於回答全域性查詢的實用性。

社群摘要的生成方式如下:

  • 葉節點層級社群:葉節點層級社群的元素摘要(節點、邊、協變數)按照優先順序依次新增到LLM上下文視窗中,直到達到token限制。優先順序如下:對於每個社群邊緣,根據源節點和目標節點的綜合度(即總體重要性)遞減排序,依次新增源節點、目標節點、關聯協變數和邊緣本身的描述。

  • 高層級社群:如果所有元素摘要都能在上下文視窗的token限制內,則按照葉節點層級社群的方式處理並總結社群內的所有元素摘要。否則,按照元素摘要token數量遞減順序對子社群進行排序,並迭代地用子社群摘要(較短)替換其關聯的元素摘要(較長),直到符合上下文視窗的限制。

這一步輸入的是社群結構圖,輸出各個層級的社群摘要。

2.6 Community Summaries → Community Answers → Global Answer

以上步驟以圖結構事先儲存,實際使用者查詢時只需要查詢合適的(C0,C1,C2,C3層級,從抽象到具體)節點和關係,以及社群摘要。

步驟是隨機打亂並分塊前一步的社群摘要(原本同一個摘要被放進不同塊中);為每個塊生成中間答案,給出幫助評分;按評分排序中間答案,不斷選取高評分答案加入使用者輸入,最終生成全域性答案。

這一步輸入的是使用者提問和社群摘要,輸出全域性答案。

3 評價標準

作者使用LLM評估器進行的對頭比較指標如下:

  • 全面性(Comprehensiveness):答案在多大程度上提供了足夠的細節來覆蓋問題的所有方面和細節?
  • 多樣性(Diversity):答案在提供不同觀點和見解方面有多豐富和多樣?
  • 賦能性(Empowerment):答案在多大程度上幫助讀者理解主題並做出明智的判斷?
  • 直接性(Directness):答案在多大程度上具體而清晰地回答了問題?

實驗結果如下(數字代表橫行勝過縱列的百分比):

GraphRAG 檢索增強+圖模型

這裡的TS指的是2.6節打亂分塊用的不是社群摘要,而是源文字;SS指的是NaiveRAG。

需要注意的是,儘管如QFS的總結性問題使用GraphRAG效果遠遠勝過NaiveRAG,但是面對針對性查詢仍然是NaiveRAG更好。

相關文章