当前位置: 首页 > news >正文

GraphRAG 和传统 RAG 的本质区别,看这篇就能解决你的困惑

一篇把 GraphRAG 和传统 RAG 的本质区别讲清楚的学习笔记,适合听过 RAG 但没深入过知识图谱的工程师。

阅读提示

  • 适合谁看:做过传统 RAG,发现"关联性问题"回答不出来的工程师
  • 看完能做什么:判断你的场景是否需要 GraphRAG,理解它的核心机制
  • 不适合谁:还没接触过 RAG 的纯入门读者

先给结论

  • 传统 RAG 的致命问题不是"检索不准",而是根本没有跨文档关联能力全局理解能力
  • GraphRAG 用知识图谱 + 社区层次解决了这两个问题,但代价是索引成本高一个数量级
  • 如果你的数据集是多文档、有复杂关联、需要全局视角,GraphRAG 值得上;单文档问答用传统 RAG 就够了

上个月帮一个业务团队做知识库问答,他们有 200 多份内部技术文档。用传统 RAG 跑起来,问"这个模块有哪些依赖"的时候回答得还行,但一问"整个系统里哪些模块的风险最高"就开始胡说八道——要么检索不到相关内容,要么拼凑出一堆不相干的片段。

问题出在哪?不是 Embedding 模型不好,也不是 Chunk 切得不对。是传统 RAG 的检索机制从根本上就没有"全局理解"的能力。它只能做一件事:把用户的问题向量化,然后找最相似的文本片段。如果你的问题需要跨越多个文档、综合多个实体的信息来回答,它就瞎了。

这正是 GraphRAG 要解决的问题。微软研究院在 2024 年 2 月发布了 GraphRAG,核心思路是:先用 LLM 把整个数据集构建成知识图谱,再用图结构来回答问题。听起来简单,但里面的工程细节值得拆开看。


01 先说清问题:传统 RAG 到底弱在哪

传统 RAG 的工作方式很直接:用户提问 → Embedding 向量化 → 在向量索引里找 Top-K 相似片段 → 把片段塞进 LLM 上下文窗口 → 生成回答。

这个流程在"单文档问答"场景下表现不错。比如问"这份文档里提到了哪些 API",向量检索能找到相关内容,LLM 也能从上下文里提取答案。

但有两个问题它解决不了:

第一个问题:连接推理弱。当回答一个问题需要跨越多个文档、通过共享属性把零散信息串起来的时候,传统 RAG 做不到。微软在 Blog 里给了一个很直观的例子:问"Novorossiya 做了什么?",传统 RAG 检索到的文本片段里根本没有提到 Novorossiya 这个实体,因为它在源文档里是以其他方式被引用的。而 GraphRAG 通过知识图谱里的实体-关系图,能把 Novorossiya 和它的关联实体(如 PrivatBank)连接起来,从而找到答案。

第二个问题:全局理解差。问"这个数据集的前 5 个主题是什么?"这种需要理解整个数据集的问题,传统 RAG 完全无能为力。因为向量检索是基于语义相似度的,查询里没有指向特定文本片段的信号,检索出来的内容基本是随机的。

看绿色圆标:GraphRAG 在索引方式、检索能力、全局理解、跨文档关联四个维度上全面碾压。但看成本那一行——传统 RAG 用橙色标注,因为它便宜得多。选型不是"谁更强"的问题,是"你的场景值不值得花这个钱"的问题。


02 先把全局地图摆出来

GraphRAG 的整体架构分 5 层,从上到下依次是:输入层、索引层、存储层、查询层、输出层。

输入层接受原始文档(txt/csv/parquet)和 Prompt 模板。索引层是核心,包含 5 个处理步骤:TextUnit 切分、实体/关系抽取、Leiden 社区检测、Community Summary、Embedding 向量化。存储层把结果写入 6 张 Parquet 表。查询层提供 3 种查询模式(Global/Local/DRIFT)。输出层返回结构化回答,附带溯源引用。

重点看索引层:中间 5 个模块是串行依赖的(从左到右),每个模块下面都有 LLM 调用节点(紫色)。这意味着索引过程会大量消耗 Token,这是 GraphRAG 的主要成本来源。

读者应该先记住的 1 件事

整个架构里,真正解决"跨文档关联"和"全局理解"这两个核心问题的,是索引层里的知识图谱构建社区层次聚类。其他模块都是为这两步服务的。


03 关键机制 1:知识图谱怎么构建

GraphRAG 的第一步是把原始文档切成 TextUnit(文本单元),然后用 LLM 从每个 TextUnit 里抽取实体和关系。

实体就是文档里提到的人、组织、地点、概念。关系是实体之间的连接,比如"Scrooge 是 Cratchit 的雇主"。这一步的结果是一张知识图谱——每个实体是节点,每条关系是边。

听起来和传统的 NER(命名实体识别)差不多?区别在于:传统 NER 只提取实体名称和类型,GraphRAG 的 LLM 抽取还会生成实体描述(description)和关系描述。这些描述信息是后续社区摘要的基础。

但这里有个工程判断:Entity Extraction 的 Prompt 质量直接决定了图谱质量。默认的 Prompt 模板是通用的,如果你的数据集是专业领域(医疗、法律、金融),默认 Prompt 提取出来的实体类型可能不准确,关系也可能遗漏。这就是为什么后面还有 Prompt Tuning 这个子系统——但那是 Day 9 的事了。

代码 1

# 查看默认的 entity extraction promptcat prompts/entity_extraction.txt | head -30

这段 prompt 定义了 LLM 应该怎么识别实体、提取关系、生成描述。如果你在自己的数据集上跑出的图谱质量不好,大概率是这里需要调。

图 3|GraphRAG 端到端流程

注意中间的菱形判断节点"抽取成功?"。如果 LLM 抽取出来的实体数为 0,说明 Prompt 配置有问题或者数据格式不对,需要回到检查 Prompt 配置。这是索引阶段最常见的失败点。


04 关键机制 2:社区层次怎么实现全局理解

有了知识图谱还不够。图谱里可能有几千个实体、几万条关系,直接拿来做检索效率太低,也没法回答"整个数据集的主题是什么"这种全局性问题。

GraphRAG 的解法是用Leiden 算法对知识图谱做层次化社区检测。Leiden 是一种图聚类算法,它会把紧密连接的实体聚成一个"社区",然后在社区之上再做聚类,形成一棵层次树。

每个社区会用 LLM 生成一个Community Summary——这是自底向上用 Map-Reduce 模式生成的。叶子社区先总结自己的内容,父级社区汇总所有子社区的摘要,逐层向上。这棵树就是 GraphRAG 回答全局性问题的基础。

问"数据集的前 5 个主题是什么?"的时候,GraphRAG 不做向量检索,而是把所有社区报告拿出来,用 Map-Reduce 模式让 LLM 分别从每个社区报告里提取主题,然后汇总。这就是它能回答全局性问题的根本原因。

代码 2

# 查看索引输出的社区报告python3 -c "import pandas as pddf = pd.read_parquet('output/community_reports.parquet')print(f'社区报告数: {len(df)}')print(df[['community', 'summary']].head(3))"

社区报告的数量取决于数据集规模和 Leiden 的分辨率参数。一般来说,几百篇文档会产生几十到上百个社区报告。

图 4|三大子系统功能详解

重点看 Index 子系统内部的 5 个模块——它们是串行的,每一步都依赖上一步的输出。Prompt Tuning 子系统通过虚线箭头影响 Index,说明调优 Prompt 会改变索引质量。Query 子系统有 4 种模式,其中 Basic Search 就是传统 RAG 的向量检索,作为回退方案保留。


05 第一次上手怎么试:给一个最小实验

如果你想亲眼看看 GraphRAG 和传统 RAG 的差异,最简单的方式是用微软提供的示例数据集跑一次。

实验条件

  • 环境:Python 3.10+,graphrag 3.0.9,OpenAI API Key
  • 输入:A Christmas Carol(一篇约 3 万字的英文小说)
  • 预期观察:Global Search 能回答全局性问题,传统 RAG 做不到
  • 先准备什么:安装 graphrag(pip install graphrag),配置 API Key
  • 先跑什么:graphrag init初始化项目,下载示例数据到 input/ 目录
  • 你应该看到什么:索引完成后,output/ 目录下有 6 张 Parquet 表

代码 3

# 初始化项目mkdir graphrag_test && cd graphrag_testpython -m venv .venv && source .venv/bin/activatepip install graphraggraphrag init# 下载示例数据curl https://www.gutenberg.org/cache/epub/24022/pg24022.txt -o ./input/book.txt# 运行索引(注意:这会消耗 API 费用,建议先用便宜模型)graphrag index# 全局性问题:传统 RAG 无法回答graphrag query "What are the top 5 themes in this story?" --method global# 实体类问题:两种方式都能回答,但 GraphRAG 更有溯源graphrag query "Who is Scrooge and what are his relationships?" --method local

如果结果不符合预期,先看哪里

  • 索引报错:检查 API Key 是否正确,模型是否可用
  • 索引成功但回答质量差:检查 Prompt 模板,考虑运行graphrag prompt-tune
  • 成本超预期:换用更便宜的模型(如 gpt-4o-mini),或者减少 chunk_size

06 跑出来不对时,先看这几件事

  • 索引过程卡住不动:大概率是 LLM API 限流。GraphRAG 索引时会并发调用 LLM,如果 API 有 rate limit,需要在 settings.yaml 里调低并发数(concurrent_requests)。
  • 实体抽取结果为空:检查 entity_extraction prompt 模板是否被正确加载。v3.0 的 prompt 文件在prompts/目录下,如果目录为空需要重新graphrag init --force
  • Global Search 回答质量差:社区报告可能没有实质内容。查看community_reports.parquet,如果 summary 字段大多是空的或泛泛而谈,说明 Community Summary 的 Prompt 需要调优。
  • 成本比预期高很多:索引成本主要来自两个环节——实体抽取(LLM 调用次数 = TextUnit 数量)和社区摘要(LLM 调用次数 = 社区数量)。减少 chunk_size 会增加 TextUnit 数量,反而增加成本。正确的做法是用更便宜的模型做抽取,用更好的模型做摘要。

07 什么时候该用,什么时候别急着上

  • 更适合:多文档数据集(>10 篇)、需要跨文档关联的问题、需要全局理解的问题、私有数据集(LLM 没见过的数据)
  • 不适合:单文档问答、实时性要求高的场景(索引耗时长)、成本敏感的场景(索引成本是传统 RAG 的 10-100 倍)、结构化数据查询(用 SQL 更好)
  • 成本会突然变高的点:文档数量超过 1000 篇、需要频繁重新索引、使用大模型做抽取

3 问判断法

  1. 你的数据集是多文档还是单文档?
  2. 用户的问题是否需要跨文档关联或全局理解?
  3. 你能接受的索引成本上限是多少?

如果 3 个问题的答案分别是"单文档"“不需要”“越低越好”,先不要上 GraphRAG。


08 给读者一个真正能用来做决策的结论

决策帮助

  • 如果你现在是个人实验阶段:先用小数据集(3-5 篇文档)+ 便宜模型(gpt-4o-mini)跑一次索引,看看图谱质量和查询效果,再决定是否投入更多资源
  • 如果你最关心的是成本:传统 RAG 的索引成本几乎可以忽略,GraphRAG 的索引成本是主要支出。先算清楚你的数据集规模对应的 API 费用
  • 如果你只能先做一步:先搞清楚你的用户到底会问什么类型的问题。如果 80% 的问题是单文档问答,传统 RAG 就够了;如果有很多"总结"“对比”"关联"类问题,再考虑 GraphRAG

GraphRAG 的核心价值在于用图结构弥补向量检索的不足。它不是传统 RAG 的替代品,而是补充。在"连接推理"和"全局理解"这两个传统 RAG 的盲区上,GraphRAG 有明显的优势。但这个优势是有代价的——索引成本、索引时间、Prompt 调优的投入。

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

http://www.rkmt.cn/news/1436541.html

相关文章:

  • 郑州市 航空港区 上门安装、维修维保|维小达 开关插座/灯具/门窗/柜体/锁具/卫浴/龙头/洗菜盆/踢脚线一站式家装安装服务 - 维小达科技
  • 荔城区26年最新奢侈品名包名表专业回收权威店铺推荐 - 莘州文化
  • SecureCRT 8.5从下载到激活:一份给网络工程师的详细配置备忘录(含许可证问题排查)
  • 掌控技术与商业的罗盘:Java技术管理者全景解析——从技术经理到CTO的进阶之路
  • 从美颜到去噪:OpenCV双边滤波与引导滤波实战指南(附人像处理案例)
  • 明溪县26年最新奢侈品名包名表专业回收权威店铺推荐 - 莘州文化
  • ESP8266物联网气象站:多传感器集成与云端数据可视化实战
  • 会员管理系统推荐:2026全域私域运营选型深度解析
  • 5个高效解决方案彻底解决OpenCore EFI配置难题
  • 【限时解密】Gemini退款政策灰度测试中的4个未公开例外情形(仅对认证开发者开放)
  • 为什么你的macOS窗口总被遮挡?Topit让你的工作流不再被打断
  • 搞GNSS数据处理别再踩坑了!手把手教你搞定BDS精密钟差的DCB改正(以WHU/CODE产品为例)
  • Ollama 本地大模型部署与运行效能深度评测
  • 宁化县26年最新奢侈品名包名表专业回收权威店铺推荐 - 莘州文化
  • Kubernetes性能调优最佳实践
  • 如何快速使用WorkshopDL:Steam创意工坊下载的完整指南
  • 与其他项目比较优缺点
  • AI论文查重工具实测:从初稿到终稿的7款工具使用记录
  • 基于Transformer的新闻文本摘要自动生成系统
  • 团队绩效评估方法对比与评估计划
  • 降AIGC黑科技揭秘!AI率92%暴降至5%!实测10款降AI率工具!薅羊毛技巧!
  • 泉港区26年最新奢侈品名包名表专业回收权威店铺推荐 - 莘州文化
  • Zotero Style插件高能进度条不显示?三步彻底解决配置问题
  • 【博图专用上位机-说明书】
  • 银河麒麟系统网络配置踩坑记:为什么aarch64架构下获取IP地址这么麻烦?
  • 沙县区26年最新奢侈品名包名表专业回收权威店铺推荐 - 莘州文化
  • 如何用自然语言对话彻底改变你的数据可视化工作流?
  • 风震联合作用下高层建筑主体结构和玻璃幕墙的性能研究(二)
  • 【算法分析与设计】第25篇:在线算法与竞争比分析
  • 2026重庆除甲醛公司服务商避坑指南,这样选才安心 - GrowthUME