GraphRAG 入門教程:從原理到實戰

GraphRAG 入門教程:從原理到實戰

在這里插入圖片描述

1. 什么是 GraphRAG?

GraphRAG 是一種結構化的、分層的檢索增強生成(Retrieval-Augmented Generation,簡稱 RAG)方法

  • 和傳統的 RAG 不同,GraphRAG 不僅僅依賴文本相似度搜索,而是先把文本轉成 知識圖譜(-Knowledge Graph),再基于圖譜結構來檢索和生成答案。
  • 【回答質量高,但 token 消耗大、生成時間久,所以使用代價較高,個人部署不建議 ~~~ 】

簡單來說:

  • 傳統 RAG:找到和問題最像的文本片段 → 直接生成答案。
  • GraphRAG:先提取實體和關系 → 構建知識圖譜 → 檢索更精準的信息 → 生成更豐富的答案。

這樣做的好處是:

  • 更好地處理跨文檔、多跳推理的問題。
  • 能發現信息之間的隱含聯系,而不僅是關鍵詞匹配。

2. GraphRAG 原理

在這里插入圖片描述

GraphRAG 核心思想:

  1. 從原始文本中提取知識圖譜
    • 節點(實體)+ 邊(關系)
  2. 構建社區層級(Community Levels)
    • 發現信息的群體結構,比如哪些實體屬于同一主題、組織或地理位置。
  3. 為這些社區生成摘要
    • 讓模型理解某個社區的整體背景。
  4. 結合 RAG 任務執行問答
    • 通過圖譜檢索找到最相關的信息,再生成答案。

類比一下:傳統 RAG 是“在書里找幾段相關的句子”,GraphRAG 是“先畫一張信息關系圖,再從圖上找到最優路徑來回答問題”。


3. GraphRAG 的流程

GraphRAG 的整體流程可以分為兩大部分:索引階段查詢階段
在這里插入圖片描述

3.1 索引階段(Indexing)

  1. 切分文本: 把大文本庫切成可處理的小單元(TextUnits)。
  2. 提取實體、關系和關鍵聲明:用 LLM 從文本中抽取人物、地點、事件等實體及它們之間的關系。
  3. 構建知識圖譜:節點是實體,邊是關系。
  4. 社區檢測與聚類:用 Leiden 等算法將圖譜分成若干社區。
  5. 生成社區摘要:用 LLM 總結社區關鍵信息。
  6. 存儲到圖數據庫:方便后續高效檢索。

3.2 查詢階段(Querying)

  1. 解析用戶問題:分解查詢、識別涉及的實體。
  2. 全局檢索:從社區摘要中獲取整體背景。
  3. 局部檢索:深入鄰居節點和相關關系,獲取細節。
  4. 生成答案:將檢索結果交給 LLM,生成自然語言回答。

4. 示例對比

在這里插入圖片描述

假設問題是:

“Query:19世紀的藝術運動是如何影響20世紀現代藝術的發展的?”

  • 傳統 LLM 直接回答

    “19 世紀的藝術運動通過鼓勵對色彩、形式和主題的實驗,影響了 20 世紀的現代藝術……”

    籠統,沒有細節鏈路!

  • 普通 RAG 回答(檢索文本片段):

    檢索:1. 像克勞德·莫奈這樣的印象派藝術家引入了新技術,徹底改變了對光和顏色的描繪。2. 印象派的技法影響了后來的 …
    回答:莫奈引入新技術,改變了光和色彩的描繪;印象派影響了后來的藝術運動;畢加索開創立體主義……

    回答依舊可能割裂!

  • GraphRAG 回答(基于知識圖譜):

    檢索:(莫奈)- [引進] →(新技術)- [革新] →(光和顏色的描繪)…
    回答:“莫奈引入的新技術徹底改變了光和色彩的描繪,他的印象派技巧影響了后來的藝術運動,包括 20 世紀初出現的畢加索立體主義。這種影響幫助塑造了畢加索對碎片化視角的創新方法。”

    優勢:

    • 有因果鏈條(莫奈 → 新技術 → 印象派 → 立體主義)
    • 信息更連貫

5. 實戰:如何跑 GraphRAG

官方代碼地址:https://github.com/microsoft/graphrag

Step 1. 克隆代碼

git clone https://github.com/microsoft/graphrag.git
cd graphrag

Step 2. 安裝依賴、初始化 & 配置

pip install poetry
poetry install
poetry run poe index --init--root .
  • 正確運行后,此處會在 graphrag 目錄下生成 output、prompts、.env、settings.yaml 文件
  • 之后需要對 .env 文件配置 GRAPHRAG_API_KEY、修改 settings.yaml 設置 model

Step 3. 準備數據,放到 ./input 目錄下

  • 準備一個包含多篇文檔的文本數據集(比如企業內部報告)
  • 格式可以是 .txt / .csv / .json

Step 4. 構建索引 (文本越長越久)

python -m graphrag.index --init

之后會看到類似如下的一些生成信息:

create_base_text_units
...create base_extracted_entities
...create_summarized_entities
...create_base_entity_graph
...create_final_entity 
...create_final_communities
...
...
...All workflows completed successfully.
  • 正確運行后,會在 ./cache 文件夾下面生成4個文件夾,方便后續進行提問
    在這里插入圖片描述

Step 5. 運行查詢

python -m graphrag.query--root ./cases --method global "你的問題"  ## global 模式
  • local 答案生成(代價高):針對具體問題,GraphRAG通過結合元素和元素摘要生成初步答案,這些答案來源于GraphRAG中的特定社區;
  • global 答案生成 (代價非常高):對于需要涵蓋整個數據集的全局性問題,GraphRAG采用Map-Reduce機制,將所有社區的初步答案組合起來。

6. 適用場景

GraphRAG 特別適合:

  • 跨文檔問答:多個文檔中信息關聯的問題。
  • 多跳推理:需要從多個實體關系鏈推理出答案。
  • 知識管理:企業內部知識庫、科研資料等。
  • 長文本總結:社區層級摘要可以提煉核心脈絡。

7. 總結

GraphRAG 讓 RAG 不再是“找最像的文本”,而是“基于關系圖譜推理回答”。
它的關鍵價值在于:

  • 結構化信息 → 讓知識更可檢索、可推理。
  • 分層摘要 → 快速獲得全局視野與細節。
  • 更適合復雜、跨域的問題。

如果你平時做的問答任務經常遇到:

  • 回答內容碎片化、不連貫
  • 模型找不到跨文檔的關鍵信息

那 GraphRAG 值得你嘗試。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/94768.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/94768.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/94768.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

系統集成項目管理工程師【第十一章 規劃過程組】規劃成本管理、成本估算、制定預算和規劃質量管理篇

系統集成項目管理工程師【第十一章 規劃過程組】規劃成本管理、成本估算、制定預算和規劃質量管理篇 一、規劃成本管理:為成本管控定方向 規劃成本管理是項目成本管理的起點,其核心是明確“如何管”的規則,為整個項目的成本管理提供統一框架。…

Xiphos Q8 SDR DOCK子板 AD9361 寬帶收發器的 SDR 模塊。

Q8 混合處理器卡的子板,包含基于 ADI 公司流行的 AD9361 寬帶收發器的 SDR 模塊。與基于 AD9361 的 SDR 模塊接口PPS、CAN總線、串行、UART(LVDS)、USB接口電源接口(5V、12V) Q8 處理器卡的子板,集成了基于…

DPU(數據處理單元)架構中,SoC(系統級芯片)與FPGA(現場可編程門陣列)之間的數據交互

在DPU(數據處理單元)架構中,SoC(系統級芯片)與FPGA(現場可編程門陣列)之間的數據交互是實現高效異構計算的關鍵。根據通信目標和硬件特性,其交互數據類型可分為以下四類:…

圖論(鄰接表)DFS

競賽中心 - 藍橋云課 #include<bits/stdc.h> using namespace std; #define int long long const int A1e51; typedef pair<int,int>p; map<p,int>st; vector<p>edge[A]; int a[A]; int result0; bool dfs(int s,int u,int father,int v,int sum) {i…

深入理解VideoToolbox:iOS/macOS視頻硬編解碼實戰指南

引言&#xff1a;VideoToolbox框架概述 VideoToolbox是Apple提供的底層框架&#xff0c;首次在WWDC2014上推出&#xff0c;為iOS和macOS開發者提供直接訪問硬件編碼器和解碼器的能力。作為Core Media框架的重要組成部分&#xff0c;VideoToolbox專注于視頻壓縮、解壓縮以及Cor…

Python基礎語法練習

本文涵蓋了 Python 基礎編程中的多個重要概念&#xff0c;從簡單的輸出語句到運算符、字符串操作、變量賦值等都有涉及。這些例子非常適合初學者學習和理解 Python 的基本語法。1. Hello World# 輸出Hello Worldprint("Hello, World!")2. 變量賦值# 創建變量并賦值na…

關于“致命錯誤:‘https://github.com/....git/‘ 鑒權失敗”

問題分析 錯誤信息&#xff1a; remote: Invalid username or token. Password authentication is not supported for Git operations. 致命錯誤&#xff1a;https://github.com/yarajia/LittleTestToolsProject.git/ 鑒權失敗原因&#xff1a;GitHub從2021年8月13日起不再支持…

基于Flask + Vue3 的新聞數據分析平臺源代碼+數據庫+使用說明,爬取今日頭條新聞數據,采集與清洗、數據分析、建立數據模型、數據可視化

介紹 本項目為新聞數據分析平臺&#xff0c;目的是爬取新聞(目前僅含爬取今日頭條)數據&#xff0c;然后對數據進行展示、采集與清洗、數據分析、建立數據模型、數據可視化。本項目采用前后端分離模式&#xff0c;前端使用 Vue3 ArcoDesign 搭建&#xff0c;后端使用 Python …

LabVIEW數字抽取濾波

?基于 LabVIEW 平臺設計數字抽取濾波器&#xff0c;用于動態測試領域&#xff0c;解決高采樣率數據的大動態范圍需求與頻帶劃分問題。方案替換硬件為可靠性優異的品牌&#xff0c;通過虛擬儀器架構實現信號處理功能&#xff0c;為動態信號分析提供高效、可復用的設計參考。應用…

云原生時代的 Linux:容器、虛擬化與分布式的基石

&#x1f4dd;個人主頁&#x1f339;&#xff1a;慌ZHANG-CSDN博客 &#x1f339;&#x1f339;期待您的關注 &#x1f339;&#x1f339; 在云計算與容器化快速發展的今天&#xff0c;Linux 已經不再只是服務器上的操作系統&#xff0c;而是整個云原生生態的底層基石。無論是運…

多場景兩階段分布式魯棒優化模型、數據驅動的綜合能源系統

基于數據驅動的綜合能源系統多場景兩階段分布式魯棒優化模型 魯棒優化是應對數據不確定性的一種優化方法&#xff0c;但單階段魯棒優化過于保守。為了解決這一問題&#xff0c;引入了兩階段魯棒優化(Two-stage Robust Optimization)以及更一般的多階段魯棒優化&#xff0c;其核…

Python實現點云PCA配準——粗配準

本節我們來介紹PCA&#xff08;主成分分析&#xff09;算法進行點云配準&#xff0c;這是一種經典的統計降維與特征提取工具&#xff0c;在三維點云處理中常被用來完成“粗配準”。其核心思想是&#xff1a;先把兩個待對齊的點云各自進行主成分分解&#xff0c;獲得各自的“主軸…

零基礎深度學習規劃路線:從數學公式到AI大模型的系統進階指南

引言在人工智能革命席卷全球的2025年&#xff0c;深度學習已成為改變行業格局的核心技術。本規劃路線整合最新教育資源與實踐方法&#xff0c;為完全零基礎的學習者構建一條從數學基礎到AI大模型的系統學習路徑。通過清華大佬的實戰課程、吳恩達的經典理論、Kaggle競賽的實戰錘…

基于Vue.js和Golang構建高效在線客服系統:前端實現與后端交互詳解

在當今互聯網時代&#xff0c;在線客服系統已成為企業與用戶溝通的重要橋梁。本文將詳細介紹如何使用Vue.js作為前端框架&#xff0c;Gin作為后端框架&#xff0c;構建一個高效的在線客服系統。一、項目背景與技術選型項目背景隨著電子商務的迅猛發展&#xff0c;用戶對即時咨詢…

虛幻GAS底層原理解剖九 (內存管理)

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄前言一、整體內存管理思路概覽二、核心對象的生命周期與托管邏輯UGameplayAbility 的管理GameplayEffect 的內存管理ActiveGameplayEffect 生命周期三、屬性&#xf…

Rust 通用庫新增 WebAssembly

1 先判斷&#xff1a;也許你的 crate 已經能跑 Wasm&#xff01;排查阻礙因素 直接文件/網絡 I/O塊式&#xff08;同步&#xff09;I/Ostd::thread 線程創建并不受支持的 C 系統庫綁定快速驗證rustup target add wasm32-unknown-unknown cargo build --target wasm32-unknown-…

java分布式定時任務

一、分布式鎖的底層實現細節&#xff08;以 Redis 為例&#xff09;分布式鎖是解決任務重復執行的核心&#xff0c;需保證原子性、超時釋放和可重入性。以下是生產級 Redis 鎖實現&#xff1a;public class RedisDistributedLock {private final RedisTemplate<String, Stri…

Kafka 的基本操作(1)

Kafka 是一個分布式流處理平臺&#xff0c;核心功能是高吞吐量的消息發布與訂閱。以下是 Kafka 最常用的基本操作&#xff0c;涵蓋環境啟動、主題管理、消息生產與消費等核心場景&#xff08;基于 Kafka 2.x 版本&#xff0c;使用命令行工具&#xff09;。 一、環境準備與啟動 …

React 為什么要自定義 Hooks?

歷史相關文章2024年&#xff1a; React 為什么引入 Hooks &#xff1f; React 中&#xff0c;Hook 是一個特定的概念 自定義 Hook&#xff08;Custom Hook&#xff09;在 React 中相當于&#xff1a; ? 一個可以復用的邏輯片段&#xff0c;封裝了多個內置 Hooks 的組合和行為 …

[激光原理與應用-181]:測量儀器 - 頻譜型 - 干涉儀,OCT(光學相干斷層掃描技術)

OCT&#xff08;光學相干斷層掃描技術&#xff09;的核心工作原理基于低相干光干涉&#xff0c;通過測量生物組織或材料內部不同深度結構的背向散射光信號差異&#xff0c;構建高分辨率的二維或三維圖像。以下是其工作原理的詳細解析&#xff1a;一、基礎原理&#xff1a;低相干…