温馨提示
本分享为系列知识分享,预期分为三节:
- GraphRAG是什么
- GraphRAG详细工作原理
- 微软GraphRAG 代码实战
本分享为第一小节 GraphRAG是什么, 大家读完感兴趣可订阅专栏,掌握GraphRAG的技术核心与实战指南~
前言
在人工智能大模型技术蓬勃发展的时代,对于大语言模型而言,知识就是能力,用于增加大模型知识范畴的RAG(检索增强生成)技术 是当代大模型应用的核心技术之一。 RAG技术通过合理的挂载外部知识库,提供给大模型更大范围更精确的问答选题。笔者的文章一文带你了解RAG核心原理!不再只是文档的搬运工详细介绍了RAG知识库系统的核心原理,大家如果对RAG底层知识不太了解可以先阅读这篇文章~
尽管现在RAG系统性能相比最初版本已经取得极大提升,但大家在使用过程中还是会发现很多局限:
- 检索精度随着文本长度增加而降低;
- 匹配度较低的问题无法进行精确问答;
- 围绕长文本的综合性问题无法进行有效回答;
- 跨文本段实体信息无法回答...
虽然笔者在工作实践中已经总结出很多RAG的提升技巧(可见笔者文章RAG系统效果不达预期?一定要看看这篇详细高效的优化指南!,预计提升现有系统20%准确率),但还是有很多RAG框架本身存在例如长文本综合性问题等局限,出现无法有效回答用户问题的情况。
2024年12月底微软提出的GraphRAG改进了RAG系统的底层架构,借助知识图谱的能力显著提升了RAG系统的回答准确率,被大家广泛关注~
一、GraphRAG与传统RAG异同
1.1 GraphRAG 发展历史
传统RAG检索精确度受限于文本长度,对于长文本综合性问题回答准确率低,各界一直都在积极探索RAG的改进方向,微软在RAG演进道路上走在了前列:
- 2024年2月,微软研究院的一篇博客提出了GraphRAG基本思路。
- 2024年4月,同样由微软研究院发表相关论文《From Local to Global: A Graph RAG Approach to Query-Focused Summarization》, 学术角度论证了GraphRAG有效性。
- 2024年6月,微软正式发布GraphRAG项目
- 2024年11月初,微软优化了GraphRAG的搜索代码,引入了Drift_search 动态搜索,这就是目前GraphRAG的基本框架。
1.2 GraphRAG 改进手段
传统的RAG引擎先围绕文本进行分片切分为短文本块,再围绕短文本块的内容与用户问题进行匹配,匹配完之后再把短文本的段落通过提示词代入到大模型中进行回答。

GraphRAG与传统RAG不同,它有一个非常长的处理流程,首先会通过大模型把用户的原始输入处理成一个巨大的知识图谱,然后基于当前巨大的知识图谱预提取出几个核心的主题。当用户提问之后,整个的GraphRAG就会把用户的问题与当前知识图谱里面的主题和实体进行一个匹配,根据主题和实体之间的关系去寻找相关的文本段落,最后再通过提示词把相关文本段落代入到大模型之中完成回答。知识图谱可以让大模型全面分析整个文档内容,通过实体间关联关系将分散在通篇文章的文本块集合起来解决传统RAG的跨文本段效果变差的问题。

总体来说,GraphRag和传统RAG最大的区别就是GraphRAG会预构建基于当前文档的知识图谱,检索的过程也是依据当前的知识图谱,可以更全面更有逻辑性的了解当前内容。
1.3 GraphRAG 检索特点
与传统RAG相比,GraphRAG检索具有如下特点:
- 高精度高消耗(构建知识图谱要消耗大量模型token)
- 受模型底层性能影响较大
- 灵活度较高,受知识图谱构建策略影响较大
总体来说GraphRAG对模型的性能要求会比较高,微软刚推出GraphRAG的时候曾称只有GPT-3.5/4模型可以完美满足GraphRAG图谱构建需求。然而随着DeepSeek、Qwen、Gemini、Claude一系列强大的基座模型的发布,困扰GraphRAG的模型性能瓶颈几乎被消除。
二、GraphRAG与传统RAG 性能对比
大家了解了GraphRAG的基本原理之后,我们通过实际案例评测对比GraphRAG与传统RAG的性能,带大家直观感受GraphRAG的强大之处。本次实验使用RagFlow 作为传统RAG框架,使用微软github GraphRAG项目( github.com/microsoft/g... )作为GraphRAG框架。本次实验使用的知识库数据是包含代码、文字、图片、代码运行结果的600+页 《经典机器学习》pdf书籍。
2.1 小范围针对性问题
首先提问传统RAG两个小范围、答案集中在文档某一部分的问题:
ruby
问:请帮我介绍下K-Means快速聚类基本原理
答: K-Means快速聚类是一种基于距离的聚类算法,其基本原理是将数据集中的点划分为K个簇,使得每个点都尽可能靠近其所属簇的中心点。以下是K-Means快速聚类的基本原理和执行流程:K-Means快速聚类原理..

makefile
问:请帮我介绍下Lesson 8.3总共介绍了几种决策树算法?
答:文档中介绍了以下几种决策树算法:ID3算法、C4.5算法、C5.0算法。文档明确提到了这三种算法,并详细描述了它们的背景、特点和关系。

可以看到对于回答集中在文档某一部分的问题,传统RAG的回答效果还是不错的,然而面对下一个测评,传统RAG架构就完全应付不了了。
2.2 大范围低匹配度问题
当你去提问大范围综合性质的问题时,传统RAG因为没有检索到完全匹配的段落,会产生很弱智的回答:
makefile
问:你觉得该书籍质量如何?
答:文档中并未直接提及书籍的质量。因此,该信息不是来自文档。根据文档内容,我们可以了解到书籍内容涵盖了机器学习的基本概念、建模流程以及线性回归模型的训练,但并未包含对书籍质量的评价。
我们再尝试一个:
makefile
Q:现在你的知识库里面的内容是《经典机器学习》书籍,其中总共介绍了多少种机器学习算法?
A:文档中没有明确介绍具体的机器学习算法种类数量。文档内容主要围绕机器学习的基本概念和建模流程展开,并没有列举或介绍具体的算法。因此,无法从提供的文档内容中确定介绍了多少种机器学习算法。
产生如上情况的原因就是没有任何一个段落的文档里面有明确提出:"该书籍总共介绍多少种机器学习算法的描述", 传统RAG对于没有明确表述文本块的内容回答完全不正确。
传统RAG效果不好,我们看看GraphRAG在低匹配度下的问答效果。
ruby
问:现在你的知识库里面的内容是《经典机器学习》书籍,其中总共介绍了多少种机器学习算法?
答:资料中介绍了以下几种机器学习算法:K-Means聚类(包括K-Means和Mini Batch KMeans)
DBSCAN密度聚类线性回归...
相比于传统RAG, GraphRAG不仅直接回答了问题的内容,还能从上下文中提取相关信息进行补充,提升回答的全面性。
三、总结
本篇分享向大家介绍了GraphRAG的基本原理,同时通过实际的案例评测直观感受了GraphRAG的能力。GraphRAG可以通过知识图谱提供更多的上下文支持,即使匹配度较低问题也能总结全文完成回答。GraphRAG在多样性上的表现优于传统的RAG,知识图谱的能力对于需要多元视角的复杂问题尤为重要。
GraphRAG的基本原理我们已经掌握,但为了更好的学习应用GraphRAG框架,我们更应该知道GraphRAG知识图谱构建以及索引查询的详细步骤,这部分内容放到我们下篇分享。感兴趣大家可关注笔者掘金账号,更可关注笔者的同名微信公众号:大模型真好玩, 免费获得笔者工作实践中的各种资料~