《GraphRAG- From Local to Global:A Graph RAG Approach to Query-Focused Summarization》
想從數以萬計的新聞文章中迅速找到健康政策的核心內容?Graph RAG 利用知識圖譜,讓您輕鬆掌握重要資訊。
無論您是科技記者還是市場分析師,Graph RAG 能快速回答複雜問題,如「當前科技行業的主要趨勢是什麼?」幫助您生成全面且多樣的答案。
先備知識:
- RAG
- 知識圖譜
- 大型語言模型(LLM)
傳統 RAG 的限制:以新聞摘要為例
由於上下文長度限制、信息片段化、重複性、主題整合能力不足及缺乏深度分析,無法有效生成全面、連貫且具深度的摘要。
- 全局問題的處理不足:面對全局性問題(如「當前全球氣候變化的主要趨勢是什麼?」),傳統 RAG 無法從多篇新聞中整合出關鍵見解。
- 信息片段化與上下文理解不足:提取的孤立的片段缺乏上下文連貫性,導致摘要無法提供完整的故事,且在生成摘要時無法充分理解報導的背景,影響內容的深度。
- 重複性和冗餘:在多篇報導中,重複提取相似信息,生成冗長且重複的摘要。
- 無法捕捉關鍵主題:當新聞涉及多個主題時,可能無法有效整合這些主題,影響摘要的全面性。
- 無法應對大規模數據:隨著新聞數據量的激增,在處理大規模文本數據時可能無法有效地檢索和整合信息,導致性能下降。
這些限制使得傳統 RAG 在新聞摘要中顯得不足,無法滿足用戶對全面和高品質資訊的需求。
為什麼需要 Graph RAG?
- 全局查詢能力:
Graph RAG
能有效處理針對整個文本語料庫的查詢,通過構建知識圖譜來組織信息,從而生成更具針對性的社群摘要,這使得用戶能夠獲得更全面的主題理解,克服傳統 RAG 在全局查詢上的不足。 - 高效的上下文管理:
Graph RAG
在處理大規模數據時,顯著減少了所需的上下文令牌數量,這不僅提高了系統的運行效率,還使得在多次查詢中能夠快速響應,解決了傳統方法在面對大量文本時的性能瓶頸。 - 增強的回答品質:通過生成多個社群摘要並進行整合,
Graph RAG
提供更豐富的回答,這不僅提升了回答的多樣性,還確保了信息的完整性,幫助用戶獲得更深入的見解,克服了傳統方法在回答品質上的局限。
這些優勢使得 Graph RAG
成為解決傳統 RAG 限制的理想選擇,接下來我們將深入探討其基本原理和流程,了解它是如何實現這些改進的。
Graph RAG 的基本原理及流程

- 切分文本(源文檔 → 文本塊):將收集到的源文檔切分成小的文本塊(例如每塊 600 個字元),以便於後續處理。(與傳統 RAG 的文本處理方式相同)
- 提取信息(文本塊 → 元素實例):使用 LLM 從文本塊中提取出不同的元素實例,包括:
- 實體(Entities):
- 意義:指文本中提到的具體事物,如人名、地名、組織等。
- 例子:如“馬克·祖克伯格”、“北京”、“微軟”。
- 關係(Relationships):
- 意義:描述實體之間的聯繫或互動。
- 例子:如“創建”、“位於”、“屬於”。
- 聲明(Claims):
- 意義:文本中表達的具體陳述或觀點。
- 例子:如“微軟是全球最大的軟件公司”。
- 實體(Entities):
- 元素實例 → 元素摘要:將提取到的元素實例進行總結,生成更具意義的描述。通過生成簡明的摘要,提升信息的可讀性和可用性,為後續分析和決策提供支持。
- 層次聚類(元素摘要 → 圖社群):將已生成的元素摘要轉化為圖中的社群。過程如下:

- 建立圖結構:將實體(點)和它們之間的關係(邊)組織成一個無向加權圖,邊的權重代表關係的強度或頻率。
- 社群檢測:使用社群檢測算法(如Leiden算法)來識別圖中緊密相連的節點群體,這些群體稱為社群。這些社群由彼此之間有較強連結的實體組成,且社群彼此互不重疊。(參考上圖,圓圈的大小表示該實體的度數,顏色則表示其所屬的社群)
- 分層結構:社區檢測過程中,會生成一個層次結構,便於從不同層級理解和分析數據。
- 圖社群 → 社群摘要:將社群中的信息整理成簡潔的摘要。這裡有兩種社群的摘要生成方式:
- 葉級社群(Leaf-level communities):是圖中最底層的社群,包含最具體的節點和邊。這些社群通常由少數幾個緊密相連的實體組成,能提供詳細的資訊。生成流程:
- 對於每個葉級社群,首先根據節點的整體重要性(即源節點和目標節點的度數)排序。
- 然後,將這些節點的描述(包括節點本身、連接的邊和相關的變數)逐一添加到 LLM 的上下文窗口中,直到達到令牌限制。
- 高級社群(Higher-level communities):由多個葉級社群組成的更大範圍的社群,通常包含更廣泛的主題或概念。這些社群提供了更高層次的概覽,適用於理解整體結構。生成流程:
- 如果所有元素摘要長度低於上下文窗口的令牌限制,則直接對整個高級社群進行摘要(同葉級社群)。
- 如果長度超出限制,則根據元素摘要的令牌數量對子社群進行排序,並逐步用較短的子社群摘要替換較長的元素摘要,直到達到上下文窗口的限制。(盡可能最多子社群)
- 摘要的詳細程度:葉級社群的摘要通常包含更多具體的資訊,而高級社群的摘要則更注重整體結構和主題的概覽。
- 生成方式:葉級社群的生成過程更直接,專注於具體的節點和邊;高級社群則需要考慮如何在令牌限制內有效地整合多個子社群的資訊。
- 葉級社群(Leaf-level communities):是圖中最底層的社群,包含最具體的節點和邊。這些社群通常由少數幾個緊密相連的實體組成,能提供詳細的資訊。生成流程:
- 社群摘要 → 社群答案 → 全局答案:利用社群摘要來生成多個中間答案,然後通過評分和排序,選出最有幫助的答案,最終形成全局答案。關鍵步驟:
- 準備社群摘要
- 隨機打亂:將社群摘要隨機打亂,以確保相關資訊均勻分佈在不同的上下文窗口中,而非集中在單一窗口中。
- 分割成塊:如同第一步切分文本,將打亂後的社群摘要分割成塊,以便於處理。
- 對映(Map)社群答案
- 生成中間答案:對每個塊,並行生成中間答案。LLM 根據社群摘要和用戶的查詢生成答案。
- 評分:LLM 還會為每個生成的答案打分(0 到 100),表示該答案對於回答目標問題的幫助程度。分數為 0 的答案會被過濾掉。
- 歸約(Reduce)全局答案
- 排序和選擇:根據幫助程度的分數對中間答案排序,然後逐步將最有幫助的答案添加到新的上下文窗口中,直到達到令牌限制。
- 生成最終答案:使用這個最終的上下文來生成返回給用戶的全局答案。
- 準備社群摘要
Takeaways
- 克服傳統 RAG 限制:傳統 RAG 無法有效回答全局性問題,因為它僅依賴逐個檢索文本片段。
Graph RAG
則專注於查詢聚焦總結,能更全面地整合整個文本語料庫的資訊。 - 創新圖形索引:
Graph RAG
的圖索引結構能高效組織和總結資料,生成社群摘要,顯著提升查詢效率和準確性,特別適合大規模文本資料。 - 多階段處理流程:
Graph RAG
通過構建實體知識圖譜和生成社群摘要,確保最終回答的全面性和品質,從而有效整合各社群的資訊以回應用戶。