iT邦幫忙

2024 iThome 鐵人賽

DAY 28
0
AI/ ML & Data

【AI筆記】30天從論文入門到 Pytorch 實戰系列 第 28

【AI筆記】30天從論文入門到 Pytorch 實戰:GraphRAG 論文閱讀 Day 27

  • 分享至 

  • xImage
  •  

Paper | GitHub | Microsoft

GraphRAG

GraphRAG 是一種新穎的方法,用於回答針對整個文本集合的全局性問題。它結合了知識圖譜、檢索增強生成(RAG)和查詢聚焦摘要技術,實現了對大規模文本集合的全面理解和回答。

簡單介紹

傳統RAG 方法主要用於回答局部問題,通過檢索相關文本片段並生成答案。然而,當問題涉及整個文本集合時,傳統RAG方法往往無法提供全面的回答。

Graph RAG 則不同,它首先從來源文件中提取實體和關係,構建知識圖譜,然後使用社群檢測算法將知識圖譜分割成模塊。每個模塊生成一個摘要,這些摘要可以並行處理,最終匯總成全局答案。

例子

假設我們有一個包含大量新聞文章的資料集,並且我們想知道烏克蘭戰爭對股市的影響,但新聞沒有提到。傳統 RAG 方法可能會檢索到一些提到烏克蘭戰爭的文章,但無法全面回答這個問題。

GraphRAG 則會先構建一個包含所有實體和關係的知識圖譜,然後將這些實體和關係分成不同的社群模塊。每個模塊生成一個摘要,這些摘要可以並行處理,最終匯總成全局答案。這樣我們就可以得到一個全面的回答,說明烏克蘭戰爭如何影響股市。

這種方法不僅提高了回答的全面性和多樣性,還節省了大量的上下文信息量,提升了查詢效率。

GraphRAG Pipeline

Pipeline

Source Documents → Text Chunks

text extraction and chunking
內文中提到另一篇論文 Kuratov et al., 2024; Liu et al., 2023

  • Longer Chunks: 使用更長的 chunks 對 LLM 的呼叫更少,可以提高效率
  • Recall Degradation: 但同時會降低準確度

HotPotQA, Yang et al., 2018
當使用 600 個 tokens 的 Chunks 大小時,提取的 entity 數量幾乎是使用 2400 個 tokens 的 Chunks 大小時的兩倍。這表明較小的 Chunks 可以得到更詳細的資訊

  • Tokens: 在自然語言處理中,tokens 是指文本中的基本單位,通常是單詞或標點符號。例如,句子 "I love AI." 包含三個 tokens:"I"、"love" 和 "AI"。
  • Entity: Entity 是指文本中具有特定意義的實體,例如人名、地名、組織名等。例如,在句子 "Microsoft is a tech company." 中,"Microsoft" 是一個 entity,表示一家公司。
  • Chunk: Chunk 是指將文本分割成較小的部分,便於處理和分析。例如,一篇長文章可以被分割成多個段落,每個段落就是一個 chunk。
    instances(實例): 指的是從文本中識別和提取出的具體實體和它們之間的關係。這些實體和關係被視為圖形節點和邊的實例。(實體實例/關係實例)

實際例子
假設我們有一篇關於科技公司的文章:

Microsoft was founded by Bill Gates and Paul Allen. It is headquartered in Redmond, Washington. The company is known for its software products like Windows and Office.
  • Tokens: 這段文字包含 31 個 tokens。 標點符號也算。
  • Entities: "Microsoft"、"Bill Gates"、"Paul Allen"、"Redmond"、"Washington"、"Windows"、"Office" 都是 entities。
  • Chunks: 這段文字可以被分成兩個 chunks:
    1. "Microsoft was founded by Bill Gates and Paul Allen. It is headquartered in Redmond, Washington."
    2. "The company is known for its software products like Windows and Office."

Text Chunks → Element Instances

定義完Chunks大小之後,要從每個 chunks 裡面提取出 Element Instances,這一步驟的基本要求是提取 graph nodes 和 edges,建立每個 nodes 關聯。但因為不是每次檢測都能順利提取出所有的關聯性,所以他們採用多輪“收集”,提取多次抓出所有可能遺漏的任何其他實體。

  • 領域特化:通過提供少量示例來進行上下文學習,特化提示以適應文檔語料庫的領域(如科學、醫學、法律)。
  • 輔助提取:支持提取與檢測到的 node instances 相關的附加協變量,如主體、客體、類型、描述、來源文本範圍以及開始和結束日期。
  • 多輪提取:使用多輪“收集”來鼓勵 LLM 檢測任何在先前提取輪次中可能遺漏的實體,確保高效和高質量的提取。
  • 評斷標準:使用 LLM 評估是否提取了所有實體

Element Instances → Element Summaries

因為上一輪已經建立好實體和關係,這已經是一種抽象摘要形式。但會出現一個問題,因為多輪提取的關係會有實體重複。
實體一致性問題:LLM可能無法一致地提取相同實體的引用,導致實體元素重複。

接下來會使用 communities 的特性會檢測和統整出所有相同實體,LLM的能力可以理解多個名稱變化和重點摘要的需求相一致。

Element Summaries → Graph Communities

利用前面的實體和關係建立一個加權無向圖。這個圖為層次結構 (實驗使用了4層 (C0, C1, C2, C3)),而每個層級都提供了一個社區分區,該分區以互斥的、群集詳盡的方式覆蓋圖的節點,同時也為全局摘要。

  • Graph RAG 方法:結合檢索增強生成(RAG)和圖形索引,通過建立實體知識圖譜來處理大規模文本數據。
  • 社區檢測:使用 Leiden, Traag et al., 2019 算法將圖形索引劃分為模塊化社區,這些社區可以在查詢時並行生成部分答案。
  • 全局摘要:通過對所有相關社區摘要進行最終的查詢導向摘要,生成全局答案。

Graph Communities → Community Summaries

摘要作為理解資料集的整體結構和語義的一種方式,用戶可以直接點擊某一level的社區摘要,尋找感興趣的主題,他會出現一些連接線,為每個相關的子主題並提供了更多資訊。

  • 社群摘要:使用Leiden層次結構生成每個社群的報告式摘要,這些摘要有助於理解數據集的全局結構和語義。
  • Leaf-level Communities:優先處理 Leaf-level 社群的摘要,並逐步添加到LLM上下文窗口,直到達到 token 限制。
  • Higher-level communities:如果所有元素摘要都能適應 token 限制,則生成 Higher-level 社群的摘要,否則按 Sub Communities 摘要替換元素摘要,直到適應上下文窗口。

這是為了確保在生成摘要時,能夠最大限度地利用上下文窗口的容量,從而提供更全面和詳細的回答。這樣可以避免重要信息因為上下文窗口的限制而被忽略,確保生成的摘要能夠涵蓋所有相關的細節和觀點。

Community Summaries → Community Answers → Global Answer

  • 準備社群摘要:將社群摘要隨機打亂並分成預定大小的區塊,確保相關資訊分布均勻,避免集中在單一上下文窗口中。
  • 生成社群答案:對每個區塊生成中間答案,並請求LLM(大型語言模型)給出0-100的分數,表示答案對問題的幫助程度。分數為0的答案會被過濾掉。(有點像 rerank)
  • 縮減為全局答案:將中間答案按幫助分數降序排列,並逐步加入新的上下文窗口,直到達到 token 限制。最終的上下文用於生成返回給用戶的全局答案。

優缺點

  • 優點:
    • GraphRAG:利用知識圖譜來捕捉和利用不同信息之間的關係,提供更豐富的上下文和多跳推理能力,能夠更準確地回答複雜的查詢。
    • RAG:能夠實時檢索最新的外部資料,減少AI幻覺,適用於需要準確和即時回答的應用,如聊天機器人和虛擬助手。
  • 缺點:
    • GraphRAG:構建和維護知識圖譜需要更多的計算資源和時間,且在處理非常大的資料集時可能會遇到性能瓶頸。

      同樣的資料大小與設備情況下,RAG 只需要30秒就能回答出答案,但 GraphRAG 可能需要到1分半鐘才能回答答案。

    • RAG:在處理需要推理的複雜查詢時,可能會因為缺乏結構化資料而表現不佳,並且系統的透明度和可解釋性較低。

Reference

LLMs之GraphRAG:《From Local to Global: A Graph RAG Approach to Query-Focused Summarization》翻译与解读

微软GraphRag论文节选翻译


上一篇
【AI筆記】30天從論文入門到 Pytorch 實戰:使用Llama進行RAG建立 Day 26
下一篇
【AI筆記】30天從論文入門到 Pytorch 實戰:在Kaggle上參加競賽與學習 Day 28
系列文
【AI筆記】30天從論文入門到 Pytorch 實戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言