好的,我们来详细、系统地讲解 GraphRAG 是什么,以及它的 完整工作流程,并结合图结构、检索机制、生成模型等各环节拆解说明。
GraphRAG(Graph Retrieval-Augmented Generation) 是一种结合 图结构化检索(Graph-based Retrieval) 与 语言模型生成(LLM Generation) 的智能问答/内容生成方法。
它是在经典的 RAG(Retrieval-Augmented Generation) 方法上发展而来的:
传统 RAG: 通过将查询与文档向量进行相似度匹配,检索到相关内容,再交给大语言模型生成答案。 ✅ 优点:结合外部知识补全LLM;❌ 缺点:碎片化上下文,缺乏结构性推理。
GraphRAG: 利用知识图谱(或自动构建的图)增强检索过程,让检索更加语义清晰、结构紧凑、便于推理,并将其输出给语言模型做最终生成。
GraphRAG 的关键在于 —— 将知识表示为图(Graph)结构,然后进行“结构化检索”,再交由 LLM 生成回答:
知识 -> 构建图谱 -> 基于图检索 -> 组织上下文 -> 输入 LLM 生成回答
下面是 GraphRAG 的典型 5 步流程,我们依次拆解:
🔧 将原始数据(文本、数据库、API 等)转化为图结构:
📌 方法举例:
类型 | 说明 |
---|---|
基于信息抽取 | 使用 NLP 技术抽取实体与关系,如 Spacy + RE |
使用现有知识图谱 | 如 Wikidata、ConceptNet、PubMedKG |
半结构化数据生成 | 利用 Excel、JSON、数据库构建图 |
📝 示例(句子 → 图):
原句:图灵在 1912 年出生于英国。
→ 图:图灵(实体) -- 出生地 --> 英国(实体)
|
+-- 出生年 --> 1912
📥 用户提出查询问题 → 利用图进行结构化语义搜索:
图遍历(Graph Traversal):
图嵌入(Graph Embedding):
多跳问答支持(Multi-Hop QA):
📌 示例(问题 → 路径):
问题:爱因斯坦在哪出生的?
→ Graph 检索路径:
[爱因斯坦] -- 出生地 --> [德国]
📦 将检索出的子图结构转换为文本上下文,让语言模型能理解:
方式:
线性展开(Graph-to-Text):将图结构转换为结构化或自然语言段落
图提示(Graph Prompting):直接用结构表示提示,如:
节点: 爱因斯坦
属性: 出生地 = 德国, 出生年 = 1879
压缩冗余路径:只保留最相关的路径和关系,避免信息过载
🧠 将查询和检索到的结构化上下文一起输入给语言模型(如 GPT-4、LLaMA)进行生成:
输入格式举例:
问题:图灵的国籍是什么?
上下文:
图灵 → 出生地 → 英国
图灵 → 国籍 → 英国
回答:图灵是英国人。
可进一步加上 结构化提示工程(Graph-aware Prompting),让模型更好地利用图数据。
对生成结果可进行:
特性 | RAG | GraphRAG |
---|---|---|
知识表示 | 文本 chunks | 图结构(实体+关系) |
检索方式 | 向量匹配(如 FAISS) | 图检索(路径、关系) |
上下文组织 | 片段拼接 | 结构化、语义紧凑 |
多跳推理 | 支持差 | 原生支持 |
应用适配 | 通用 | 结构化知识更优 |
场景 | 示例 |
---|---|
企业知识问答 | 公司内部流程、文档、人员架构 |
法律法规助理 | 法条关系、案例引述、时间线 |
医疗知识图谱 | 症状→疾病→治疗路径 |
学术研究助手 | 文献引用图谱、概念关系 |
多轮问答 Agent | 带记忆、多步 reasoning 的 Agent |
GraphRAG = 图谱增强的智能检索 + 大模型驱动的语言生成,专为结构化语义推理与高质量回答而设计。
成熟的图数据库产品有Neo4j