来源:互联网 更新时间:2026-08-22 14:13
我们已经了解了基于知识图谱的RAG应用原理,之前的文章里也演示过怎么用LangChain或LlamaIndex这类框架构建简易的GraphRAG原型。但话说回来,要把GraphRAG应用真正投入生产,中间还有一大堆优化工作要做。也正因为如此,一些更专业的工具应运而生——微软最近开源的GraphRAG,就迅速成了圈里的焦点。
不少朋友可能已经在微软那篇论文里见过GraphRAG的基本思路了。不过,我们还是打算结合一个实际案例,把GraphRAG的内部原理拆开揉碎了讲清楚,顺带演示一下怎么跟Neo4j图数据库集成——这样一来,灵活性和应用场景都会大不一样。
我们准备分两篇文章来聊,分别侧重索引阶段(Index)和查询阶段(Query)。本篇的内容包括:
Microsoft GraphRAG的源头,是自家那篇论文《From Local to Global: A Graph RAG Approach to Query-Focused Summarization》。论文里说得很清楚,它要解决的,是传统RAG的一个老大难问题:
论文里给出的解法是这样的:
可以把社区理解成
这个过程用下图表示:

图片来自微软论文
这个流程的妙处在于:
Microsoft GraphRAG对这套流程的实现,可以参考论文中的描述:

图片来自微软论文
这里得说明一下,查询阶段(Query Time)相对简单,真正复杂的是索引阶段(Indexing Time)。我们用尽量简洁的方式把处理过程梳理一下:

这种摘要的好处是:可以借助嵌入向量更有效、更准确地对这些实体与关系进行检索——这也就是上图中description_embedding属性的意义所在。
当然,好处背后也有代价。因为需要为大量的实体与关系生成描述信息,所以会触发非常多的LLM调用,这意味着漫长的耗时和昂贵的大模型API开销!我们建议在测试阶段优先用GPT-4o-mini模型。
现在我们用一个文档来构建基于MS GraphRAG的Demo应用,重点放在索引阶段。我们准备了一个自然语言描述漫威漫画世界的文本文件用于测试,内容大致如下(全文约2万汉字):

构建GraphRAG索引的过程其实不复杂(详细步骤可以看官方文档):
1.
2.
python -m graphrag.index --init --root ./msgraphrag
初始化完成以后,会在指定的根目录下生成基本的文件与目录结构。重要的包括:

虽然可以直接用初始化时生成的默认提示模板,但强烈建议通过GraphRAG提供的命令来创建
python -m graphrag.prompt_tune --language Chinese
执行成功后,我们来观察一下prompts目录下新的提示模板文件内容(为了方便理解,这里翻译成中文):


3.
python -m graphrag.index --root ./msgraphrag
之后会进入一系列工作流程。当看到如下输出时,说明索引阶段的工作已经完成。

从最后输出的信息里,可以大致了解到它的基本处理过程:从拆分输入文本开始,到提取实体与关系、生成摘要信息、构建内存中的Graph结构、从Graph中识别社区、创建社区报告、创建Graph中的文本块节点和文档节点,等等。当然,除了上面介绍的几个核心步骤,还涉及到大量中间处理细节,比如embedding生成、持久化到存储、不同的算法策略等。如果有兴趣深入了解具体的实现,那还是得去啃GraphRAG的源代码。这里提供几个发现和指南:
Microsoft GraphRAG内部借助了DataShaper来实现灵活的工作流与处理动作的“装配”。
一种简单的阅读方式:你可以在index/workflows/v1目录下找到基本的工作流定义,比如上面的create_base_extracted_entities;再根据工作流中的步骤(steps)找到对应的verb,然后在index/verbs里找到verb的实现,就能大致了解这个工作流的内部逻辑了。
可以学习代码目录中examples目录下的例子,用GraphRAG的索引引擎来构建自己的数据处理管道——这对理解DataShaper和GraphRAG的内部原理非常有帮助。
值得注意的一点是:Microsoft GraphRAG在索引构建过程中目前并不支持使用图数据库。中间数据主要用Pandas
索引构建完成后,默认情况下,GraphRAG会把构建整个知识图谱所需的数据持久化到output目录下,以parquet格式文件存放(

但parquet是一种底层文件格式,光靠它没法直观地观察上面构建的知识图谱索引的细节。那有没有办法做更直观的可视化、分析和检索呢?

用他提供的笔记本文件在本地运行,就能成功把上面构建的知识图谱数据全部导入到Neo4j数据库。现在,我们可以通过Neo4j管理台看到完整的可视化知识图谱(部分):

在这个Demo的图谱里,看到的节点包括上面提取的实体(

有了Neo4j的Cypher语言,你可以查清楚任何你想知道的图谱信息,或者直接点击某个节点查看详情。来看一个社区的信息——比如“蜘蛛侠与反派角色的关系”这个社区的图谱:

这个社区的报告信息(节点属性):

为了更深入地研究GraphRAG生成的数据,还可以用Cypher配合可视化库对知识图谱做进一步分析。比如,通过不同节点的关系数量(Node Degree)来了解节点的重要性:

这里最高的节点度接近30,来看看是哪个节点:
MATCH (n:__Entity__)
RETURN n.name AS name, count{(n)-[:RELATED]-()} AS degree
ORDER BY degree DESC LIMIT 10
执行结果如下(钢铁侠永远的神?):

除了数据分析,你还可以在此基础上做增强,比如联合导入其他已有的知识图谱数据。当然,更关键的是,你可以在自己的Neo4j图数据库上定义专属于你自己的RAG应用检索与生成器,不再依赖GraphRAG项目自带的Query功能——这带来的灵活性,可不是一星半点。
下一篇,我们将分析Microsoft GraphRAG中Query功能的实现,并探讨如何基于导入的Neo4j库来自定义实现RAG检索器。
腾讯ima怎么把微信内容一键导入知识库?
黄金价格不断创新高!黄金稳定币XAU、PAXG市值达11亿美元
CC币价格预测(2026-2035):Canton币今日价格走势+长期价格预测
腾讯ima怎么创建共享知识库?
Celestia价格预测2026-2032:TIA币能否引领山寨币上涨行情?历史价格回顾
新浪互联网热点小时报丨2026年07月26日16时_今日实时互联网热点速递
新浪机器学习热点小时报丨2026年07月25日18时_今日实时机器学习热点速递
比特币(BTC)核心周期指标复刻历史走势 价格或跌破5.8万美元关键支撑位
新浪人工智能热点小时报丨2026年07月30日18时_今日实时人工智能热点速递
WorkBuddy微信版怎么获得积分?
车载冰箱重置到出厂设置几步?
5000元起的鼠标哪个最值得入手?
比特币 2025 年价格预测:BTC 的未来走势
笔记本移动电源推荐哪款?
结婚家电首选:Leader懒人三筒Ultra热泵洗烘一体
短剧《史上最强洪荒修为》剧情介绍
kimi提示词专家使用方法新手指南
Aptos(APT)2026-2032年价格预测与历史走势梳理
短剧《仙人跳获透视,古玩玉器我全拿捏》剧情介绍
腾讯ima知识库怎么分类管理?
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc