首頁 > 科技週邊 > 人工智慧 > 從理論到實施的GraphRag -Analytics Vidhya

從理論到實施的GraphRag -Analytics Vidhya

Christopher Nolan
發布: 2025-03-17 11:17:09
原創
713 人瀏覽過

GraphRag採用了一種更具結構化和分層的方法來檢索增強生成(RAG),將自己與依賴於無組織文本摘要的基本語義搜索的傳統抹布方法區分開來。該過程首先將原始文本轉換為知識圖,將數據組織為社區結構,並總結這些分組。這種結構化的方法使GraphRag能夠利用這些有組織的信息,增強其在基於抹布的任務中的有效性,並提供更精確和更加感知的結果。

學習目標

  • 了解什麼是GraphRag,並探討GraphRag的重要性及其在傳統的幼稚抹布模型上如何改進。
  • 對Microsoft的GraphRag,尤其是其知識圖,社區檢測和層次結構的應用更深入了解。了解該系統內的全球和本地搜索功能如何運作。
  • 參加Microsoft的GraphRag庫的實施Python實施,以實際了解其工作流程和集成。
  • 比較和對比GraphRag和傳統的抹布方法產生的輸出,以突出改進和差異。
  • 確定GraphRag面臨的關鍵挑戰,包括大規模應用程序中的資源密集過程和優化需求。

本文作為數據科學博客馬拉鬆的一部分發表

目錄

  • 學習目標
  • 什麼是GraphRag?
  • 為什麼要在傳統/幼稚的抹布上繪畫?
  • GraphRag解決的抹布的局限性
  • 微軟的GraphRag如何工作?
    • 索引階段
    • 查詢階段
  • Microsoft的GraphRag實現Python
    • 步驟1:創建Python虛擬環境和庫的安裝
    • 步驟2:生成設置.yaml文件
    • 步驟3:運行索引管道
    • 步驟4:運行查詢
    • 本地搜索
  • GraphRag的挑戰
  • 結論
    • 關鍵要點
  • 常見問題

什麼是GraphRag?

檢索授權的生成(RAG)是一種新穎的方法,它將預訓練的大語言模型(LLM)與外部數據源相結合,以創建更精確且上下文上更豐富的輸出。最先進的LLMS的協同作用與上下文數據的協同作用,使RAG能夠提供良好的響應,不僅可以很好地劃分,而且在事實和統治性知識中也構成了紮根。

GraphRag(基於圖的檢索增強生成)是一種標准或傳統抹布的高級方法,它通過利用知識圖來改善信息檢索和響應生成來增強它。與標準抹布(依賴簡單的語義搜索和純文本片段)不同,GraphRag以結構化的層次結構格式組織和處理信息。

為什麼要在傳統/幼稚的抹布上繪畫?

與散佈在不同來源的信息的鬥爭。傳統的檢索生成一代(RAG)在散佈在多個來源的綜合信息方面面臨挑戰。它努力識別和結合通過微妙或間接關係聯繫起來的見解,從而使其對需要相互聯繫的推理的問題的有效性降低。

缺乏捕獲更廣泛的背景。傳統的抹布方法通常在捕獲更廣泛的上下文或匯總複雜數據集方面缺乏。這種限制源於缺乏提取總體主題或準確提取複雜文檔的關鍵點所需的更深入的語義理解。當我們執行諸如“數據集中的主要主題是什麼?”之類的查詢時,除非數據集明確定義這些主題,否則傳統抹布很難識別相關的文本塊。從本質上講,這是一項以查詢為重點的摘要任務,而不是傳統抹布鬥爭的明確檢索任務。

GraphRag解決的抹布的局限性

現在,我們將研究Graprag解決的抹布的局限性:

  • 通過利用實體之間的互連,GraphRag優化了其以更高的精度查明和檢索相關數據的能力。
  • 通過使用知識圖,GraphRag提供了對查詢的更詳細,更細微的理解,可幫助更準確的響應生成。
  • 通過將其在結構化的事實數據中紮根,GraphRag顯著減少了產生錯誤或捏造信息的機會。

微軟的GraphRag如何工作?

GraphRag通過合併兩階段的操作設計:索引階段和查詢階段,擴展了傳統檢索演出生成(RAG)的功能。在索引階段,它構建了知識圖,分層組織提取的信息。在查詢階段,它利用該結構化表示形式來對用戶查詢提供高度上下文和精確的響應。

索引階段

索引階段包括以下步驟:

  • 將輸入文本分為較小的,易於管理的塊。
  • 從每個塊中提取實體和關係。
  • 將實體和關係總結為結構化格式。
  • 用節點作為實體和邊緣作為關係構建知識圖。
  • 使用算法確定知識圖中的社區。
  • 總結較小社區內的個人實體和關係。
  • 為匯總社區層次創建更高級別的摘要。

查詢階段

配備了知識圖和詳細的社區摘要,GraphRag然後可以以良好的精度來響應用戶查詢,以利用查詢階段中存在的不同步驟。

全球搜索 - 需要對數據集進行廣泛分析的查詢,例如“討論的主要主題是什麼?”,GraphRag利用了編譯的社區摘要。這種方法使系統能夠整合整個數據集的見解,從而提供透徹且全面的答案。

本地搜索 - 針對特定實體的查詢,GraphRag利用了知識圖的互連結構。通過瀏覽實體的直接聯繫並檢查相關的主張,它收集了相關的細節,從而使系統能夠提供準確和上下文敏感的響應。

Microsoft的GraphRag實現Python

現在讓我們在下面的詳細步驟中研究Microsoft的GraphRag的Python實現:

步驟1:創建Python虛擬環境和庫的安裝

製作一個文件夾,並在其中創建Python虛擬環境。我們創建文件夾GraphRag,如下所示。然後,在創建的文件夾中,我們使用命令 - “ PIP INSTALS GRAPHRAG”安裝GraphRag庫。

 PIP安裝GraphRag
登入後複製

步驟2:生成設置.yaml文件

在GraphRag文件夾中,我們創建一個輸入文件夾,然後將一些文本文件放入文件夾中。我們已經使用了此TXT文件並將其保存在輸入文件夾中。本文的文字已從該新聞網站獲取。

從包含輸入文件夾的文件夾中,運行以下命令:

 python -m graphrag.index -init -root
登入後複製

此命令導致創建.ENV文件和設置.yaml文件。

從理論到實施的GraphRag -Analytics Vidhya

在.envfile中,輸入您的OpenAI鍵,將其分配給graphRag_api_key。然後,在“ llm”字段下的settings.yaml文件使用。其他參數(例如模型名稱,max_tokens,塊大小)可以在settings.yaml文件中定義。我們已經使用了“ GPT-4O”模型,並在settings.yaml文件中定義了它。

從理論到實施的GraphRag -Analytics Vidhya

步驟3:運行索引管道

我們使用以下命令從“ GraphRag”文件夾的內部運行索引管道。

 Python -M graphRag.index -Root。
登入後複製

一旦我們執行上述命令,在上一節中定義的所有步驟都會在後端進行。

提示文件夾

為了執行索引階段的所有步驟,例如實體和關係檢測,知識圖創建,社區檢測以及不同社區的摘要生成,系統使用“提示”文件夾中定義的提示進行了多個LLM調用。運行索引命令時,系統會自動生成此文件夾。

從理論到實施的GraphRag -Analytics Vidhya

適應提示與文檔的特定域保持一致,這對於改善結果至關重要。例如,在entity_extraction.txt文件中,您可以保留文本語料庫所在域相關實體的示例,以從抹布中獲得更準確的結果。

存儲在lancedb中的嵌入

此外,LancedB用於存儲每個文本塊的嵌入式數據。

圖形數據的鑲木文件

該輸出文件夾存儲了與圖形和相關數據相對應的許多鑲木式文件,如下圖所示。

從理論到實施的GraphRag -Analytics Vidhya

步驟4:運行查詢

為了運行像“文檔的頂部主題”之類的全局查詢,我們可以從GraphRag文件夾中的終端運行以下命令。

全局搜索

Python -M GraphRag.Query -Root。 - 使用“全球”“文檔中的首要主題是什麼?”
登入後複製

全球查詢使用生成的社區摘要來回答這個問題。中間答案用於生成最終答案。

我們的TXT文件的輸出將如下:

從理論到實施的GraphRag -Analytics Vidhya

與幼稚抹布的產出的比較:

幼稚抹布的代碼可以在我的github中找到。

 1。SAP和Microsoft 365應用程序的集成
2。無縫用戶體驗的潛力
3。SAP和Microsoft之間的合作
4。最大化生產率的目標
5。Microsoft Ignite的預覽
6。限量預覽公告
7。註冊有限預覽的機會。
登入後複製

本地搜索

為了運行與我們的文檔相關的本地查詢,例如“什麼是Microsoft和SAP合作朝著努力?”,我們可以從GraphRag文件夾中的終端運行以下命令。下面的命令專門將查詢指定為本地查詢,以確保執行更深入地研究知識圖,而不是依靠全局查詢中使用的社區摘要。

 Python -M GraphRag.Query -Root。 - 使用本地的“ SAP和Microsoft是什麼合作努力的?
登入後複製

GraphRag的輸出

從理論到實施的GraphRag -Analytics Vidhya

與幼稚抹布的產出的比較

幼稚抹布的代碼可以在我的github中找到。

 Microsoft和SAP正在致力於無縫集成其AI副駕駛Joule和Microsoft 365 Copilot,以重新定義工作場所的生產力,並允許用戶在不轉換應用程序之間從兩個系統中執行任務和訪問數據。
登入後複製

從全球和局部產出中觀察到的那樣,與幼稚抹布的響應相比,GraphRag的響應更加全面和解釋。

GraphRag的挑戰

GraphRag鬥爭存在某些挑戰,以下列出:

  • 多個LLM調用:由於該過程中的多個LLM調用,GraphRag可能是昂貴且緩慢的。因此,成本優化對於確保可伸縮性至關重要。
  • 高資源消耗:構建和查詢知識圖涉及大量的計算資源,尤其是在擴展大型數據集時。使用許多節點和邊緣處理大圖需要仔細的優化,以避免性能瓶頸。
  • 語義聚類中的複雜性:使用萊頓(Leiden)這樣的算法識別有意義的簇可能具有挑戰性,尤其是對於具有鬆散連接實體的數據集。誤識別的集群可能導致分散或過於廣泛的社區摘要
  • 處理各種數據格式: GraphRag依賴於結構化輸入來提取有意義的關係。非結構化,不一致或嘈雜的數據可能會使提取和圖形構建過程複雜化

結論

GraphRag通過解決其在推理,上下文理解和可靠性方面的局限性,證明了對傳統抹布的顯著進步。通過利用知識圖和結構化實體關係,它可以綜合跨數據集的分散信息,從而實現更深入的語義理解,從而擅長於跨數據集。

Microsoft的GraphRag通過結合兩相方法來增強傳統抹布:索引和查詢。索引階段從提取的實體和關係中構建了層次知識圖,將數據組織到結構化摘要中。在查詢階段,GraphRag利用此結構進行精確和上下文富含的響應,可滿足全局數據集分析和基於特定實體的查詢。

但是,GraphRag的好處帶來了挑戰,包括高資源需求,對結構化數據的依賴以及語義聚類的複雜性。儘管有這些障礙,但它提供準確的整體響應的能力將其確立為可處理複雜查詢的天真抹布系統的有力替代方法。

關鍵要點

  • GraphRag通過將原始文本組織成層次知識圖來增強抹布,從而實現精確和上下文感知的響應。
  • 它採用社區摘要來進行廣泛的分析和圖形連接,以進行特定的深入查詢。
  • GraphRag通過利用實體互連和結構化數據來克服上下文理解和推理的限制。
  • Microsoft的GraphRag庫支持使用知識圖創建和查詢工具的實用應用程序。
  • 儘管它具有精確性,但GraphRag仍面臨障礙,例如資源強度,語義聚類複雜性和處理非結構化數據。
  • 通過基於結構化知識的響應,GraphRag降低了傳統抹布系統中常見的不准確性。
  • 非常適合需要相互聯繫推理的複雜查詢,例如主題分析或特定於實體的見解。

常見問題

Q1。為什麼GraphRag比傳統的抹布更喜歡複雜的查詢?

A. GraphRag通過利用實體之間的互連而脫穎而出的綜合見解,這與傳統的抹布不同,這與傳統的抹布相同,這在識別微妙的關係方面掙扎。

Q2。 GraphRag如何在索引階段創建知識圖?

答:它處理文本塊以提取實體和關係,使用萊頓等算法進行層次組織,並構建一個知識圖,其中節點表示實體和邊緣表示關係。

Q3。 GraphRag查詢階段中的兩個關鍵搜索方法是什麼?

全球搜索:使用社區摘要進行廣泛分析,回答諸如“討論的主要主題是什麼?”之類的查詢。
本地搜索:通過在知識圖中探索其直接連接來關注特定實體。

Q4。 GraphRag面臨什麼挑戰?

A. GraphRag遇到由於多個LLM調用,語義聚類困難以及處理非結構化或嘈雜數據而引起的高計算成本等問題。

Q5。 GraphRag如何增強響應生成中的上下文理解?

答:通過將其在層次知識圖和基於社區的摘要中的響應紮根,GraphRag提供了更深入的語義理解和上下文豐富的答案。

本文所示的媒體不由Analytics Vidhya擁有,並由作者酌情使用。

以上是從理論到實施的GraphRag -Analytics Vidhya的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板