GraphRag採用了一種更具結構化和分層的方法來檢索增強生成(RAG),將自己與依賴於無組織文本摘要的基本語義搜索的傳統抹布方法區分開來。該過程首先將原始文本轉換為知識圖,將數據組織為社區結構,並總結這些分組。這種結構化的方法使GraphRag能夠利用這些有組織的信息,增強其在基於抹布的任務中的有效性,並提供更精確和更加感知的結果。
本文作為數據科學博客馬拉鬆的一部分發表。
檢索授權的生成(RAG)是一種新穎的方法,它將預訓練的大語言模型(LLM)與外部數據源相結合,以創建更精確且上下文上更豐富的輸出。最先進的LLMS的協同作用與上下文數據的協同作用,使RAG能夠提供良好的響應,不僅可以很好地劃分,而且在事實和統治性知識中也構成了紮根。
GraphRag(基於圖的檢索增強生成)是一種標准或傳統抹布的高級方法,它通過利用知識圖來改善信息檢索和響應生成來增強它。與標準抹布(依賴簡單的語義搜索和純文本片段)不同,GraphRag以結構化的層次結構格式組織和處理信息。
與散佈在不同來源的信息的鬥爭。傳統的檢索生成一代(RAG)在散佈在多個來源的綜合信息方面面臨挑戰。它努力識別和結合通過微妙或間接關係聯繫起來的見解,從而使其對需要相互聯繫的推理的問題的有效性降低。
缺乏捕獲更廣泛的背景。傳統的抹布方法通常在捕獲更廣泛的上下文或匯總複雜數據集方面缺乏。這種限制源於缺乏提取總體主題或準確提取複雜文檔的關鍵點所需的更深入的語義理解。當我們執行諸如“數據集中的主要主題是什麼?”之類的查詢時,除非數據集明確定義這些主題,否則傳統抹布很難識別相關的文本塊。從本質上講,這是一項以查詢為重點的摘要任務,而不是傳統抹布鬥爭的明確檢索任務。
現在,我們將研究Graprag解決的抹布的局限性:
GraphRag通過合併兩階段的操作設計:索引階段和查詢階段,擴展了傳統檢索演出生成(RAG)的功能。在索引階段,它構建了知識圖,分層組織提取的信息。在查詢階段,它利用該結構化表示形式來對用戶查詢提供高度上下文和精確的響應。
索引階段包括以下步驟:
配備了知識圖和詳細的社區摘要,GraphRag然後可以以良好的精度來響應用戶查詢,以利用查詢階段中存在的不同步驟。
全球搜索 - 需要對數據集進行廣泛分析的查詢,例如“討論的主要主題是什麼?”,GraphRag利用了編譯的社區摘要。這種方法使系統能夠整合整個數據集的見解,從而提供透徹且全面的答案。
本地搜索 - 針對特定實體的查詢,GraphRag利用了知識圖的互連結構。通過瀏覽實體的直接聯繫並檢查相關的主張,它收集了相關的細節,從而使系統能夠提供準確和上下文敏感的響應。
現在讓我們在下面的詳細步驟中研究Microsoft的GraphRag的Python實現:
製作一個文件夾,並在其中創建Python虛擬環境。我們創建文件夾GraphRag,如下所示。然後,在創建的文件夾中,我們使用命令 - “ PIP INSTALS GRAPHRAG”安裝GraphRag庫。
PIP安裝GraphRag
在GraphRag文件夾中,我們創建一個輸入文件夾,然後將一些文本文件放入文件夾中。我們已經使用了此TXT文件並將其保存在輸入文件夾中。本文的文字已從該新聞網站獲取。
從包含輸入文件夾的文件夾中,運行以下命令:
python -m graphrag.index -init -root
此命令導致創建.ENV文件和設置.yaml文件。
在.envfile中,輸入您的OpenAI鍵,將其分配給graphRag_api_key。然後,在“ llm”字段下的settings.yaml文件使用。其他參數(例如模型名稱,max_tokens,塊大小)可以在settings.yaml文件中定義。我們已經使用了“ GPT-4O”模型,並在settings.yaml文件中定義了它。
我們使用以下命令從“ GraphRag”文件夾的內部運行索引管道。
Python -M graphRag.index -Root。
一旦我們執行上述命令,在上一節中定義的所有步驟都會在後端進行。
為了執行索引階段的所有步驟,例如實體和關係檢測,知識圖創建,社區檢測以及不同社區的摘要生成,系統使用“提示”文件夾中定義的提示進行了多個LLM調用。運行索引命令時,系統會自動生成此文件夾。
適應提示與文檔的特定域保持一致,這對於改善結果至關重要。例如,在entity_extraction.txt文件中,您可以保留文本語料庫所在域相關實體的示例,以從抹布中獲得更準確的結果。
此外,LancedB用於存儲每個文本塊的嵌入式數據。
該輸出文件夾存儲了與圖形和相關數據相對應的許多鑲木式文件,如下圖所示。
為了運行像“文檔的頂部主題”之類的全局查詢,我們可以從GraphRag文件夾中的終端運行以下命令。
Python -M GraphRag.Query -Root。 - 使用“全球”“文檔中的首要主題是什麼?”
全球查詢使用生成的社區摘要來回答這個問題。中間答案用於生成最終答案。
我們的TXT文件的輸出將如下:
與幼稚抹布的產出的比較:
幼稚抹布的代碼可以在我的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的輸出
與幼稚抹布的產出的比較:
幼稚抹布的代碼可以在我的github中找到。
Microsoft和SAP正在致力於無縫集成其AI副駕駛Joule和Microsoft 365 Copilot,以重新定義工作場所的生產力,並允許用戶在不轉換應用程序之間從兩個系統中執行任務和訪問數據。
從全球和局部產出中觀察到的那樣,與幼稚抹布的響應相比,GraphRag的響應更加全面和解釋。
GraphRag鬥爭存在某些挑戰,以下列出:
GraphRag通過解決其在推理,上下文理解和可靠性方面的局限性,證明了對傳統抹布的顯著進步。通過利用知識圖和結構化實體關係,它可以綜合跨數據集的分散信息,從而實現更深入的語義理解,從而擅長於跨數據集。
Microsoft的GraphRag通過結合兩相方法來增強傳統抹布:索引和查詢。索引階段從提取的實體和關係中構建了層次知識圖,將數據組織到結構化摘要中。在查詢階段,GraphRag利用此結構進行精確和上下文富含的響應,可滿足全局數據集分析和基於特定實體的查詢。
但是,GraphRag的好處帶來了挑戰,包括高資源需求,對結構化數據的依賴以及語義聚類的複雜性。儘管有這些障礙,但它提供準確的整體響應的能力將其確立為可處理複雜查詢的天真抹布系統的有力替代方法。
A. GraphRag通過利用實體之間的互連而脫穎而出的綜合見解,這與傳統的抹布不同,這與傳統的抹布相同,這在識別微妙的關係方面掙扎。
Q2。 GraphRag如何在索引階段創建知識圖?答:它處理文本塊以提取實體和關係,使用萊頓等算法進行層次組織,並構建一個知識圖,其中節點表示實體和邊緣表示關係。
Q3。 GraphRag查詢階段中的兩個關鍵搜索方法是什麼?全球搜索:使用社區摘要進行廣泛分析,回答諸如“討論的主要主題是什麼?”之類的查詢。
本地搜索:通過在知識圖中探索其直接連接來關注特定實體。
A. GraphRag遇到由於多個LLM調用,語義聚類困難以及處理非結構化或嘈雜數據而引起的高計算成本等問題。
Q5。 GraphRag如何增強響應生成中的上下文理解?答:通過將其在層次知識圖和基於社區的摘要中的響應紮根,GraphRag提供了更深入的語義理解和上下文豐富的答案。
本文所示的媒體不由Analytics Vidhya擁有,並由作者酌情使用。
以上是從理論到實施的GraphRag -Analytics Vidhya的詳細內容。更多資訊請關注PHP中文網其他相關文章!