掘金 人工智能 07月09日 13:59
准确率飙升!GraphRAG如何利用知识图谱提升RAG答案质量(额外篇)——大规模文本数据下GraphRAG实战
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文是GraphRAG系列分享的完结篇,通过实战演示,深入探讨了GraphRAG在大规模数据集下的应用。文章首先介绍了环境准备,包括数据准备、项目文件初始化和配置文件修改。随后,详细阐述了知识图谱的构建过程,并分析了不同查询模式的差异,总结了全局模式和本地模式的适用场景,为读者提供了将GraphRAG应用于实际工作的指导。

📚 **环境准备:** 文章详细介绍了构建GraphRAG知识图谱的环境准备工作,包括数据准备(使用《机器学习决策树算法详解》文档)、创建检索文件夹、初始化项目文件以及修改配置文件,为后续的实战操作奠定了基础。

⚙️ **知识图谱构建:** 演示了使用GraphRAG构建知识图谱的详细步骤,并分享了在大规模数据下构建知识图谱的实际运行时间参考。通过展示实体表、关系表和报告表,让读者直观了解知识图谱的存储形式。

🔍 **查询模式对比:** 文章深入对比了GraphRAG的本地模式和全局模式,总结了三种不适合使用本地模式的场景:总结性质问题、综合评价类提问和主观评价类问题。并提供了不同模式的使用经验,帮助读者根据具体情况选择合适的查询模式。

温馨提示

本分享为系列知识分享,分为五节(实战内容加餐一节):

本分享是我们GraphRAG系列最后一节 大文本数据下GraphRAG代码执行流程实战。本系列分享在CSDN、知乎、掘金和微信公众号收获超高点击,是笔者结合学习工作认真撰写的系列文章,也是目前公开资料中介绍GraphRAG 理论和实战较详尽的资料之一。大家读完感兴趣可订阅专栏,掌握GraphRAG的技术核心与实战指南~。

前言

前四篇文章我们详细介绍了GraphRAG知识图谱构建、检索查询理论知识,并通过GraphRAG框架的代码实战将这些理论融会贯通。然而,前四篇文章我们只是通过一个几百字的《大数据时代》文本作为实战案例。不止一次有粉丝私信笔者:

为感谢大家支持,笔者特地加餐一节。通过探究在本地大规模数据集下GraphRAG的问答实战,让大家在巩固GraphRAG实战指南的同时,掌握将GraphRAG快速应用于工作实际的技巧。

一、环境准备

1.1 数据准备

本次笔者实战项目使用的是名为 《机器学习决策树算法详解》 的公开文档,该文档包含58099个字符。

1.2 创建检索文件夹

在命令行输入mkdir -p ./openl_big/input命令创建检索文件夹,将准备好的**《机器学习决策树算法详解》** 文档上传到openl_big/input文件夹中。

特别注意: 虽然这里演示的只有一个文档,但GraphRAG本身支持多文档, 大家既可以把多个文档合成一个文档上传,也可以直接把多个文档放入input文件夹中。

1.3 初始化项目文件

在命令行输入graphrag init --root ./openl_big命令初始化项目文件,初始化完成后会在openl_big文件夹下新增三个文件和文件夹:prompts, .envsettings.yaml

1.4 修改配置文件

GraphRAG依赖大模型进行知识图谱构建和检索查询。GraphRAG默认接入OpenAI相关模型。因为网络限制,我们本次使用 硅基流动提供的大模型服务,对硅基流动API使用不熟悉的可以参考我的文章 全网免费接入DeepSeek-R1平台清单,包含网站和API使用。修改settings.yaml配置文件中的models部分内容如下, chat模型使用Qwen3-8Bembedding模型选择BAAI/bge-m3:

models:  default_chat_model:    type: openai_chat # or azure_openai_chat    api_base: https://api.siliconflow.cn/v1/    # api_version: 2024-05-01-preview    auth_type: api_key # or azure_managed_identity    api_key: 你注册的硅基流动api key # set this in the generated .env file    # audience: "https://cognitiveservices.azure.com/.default"    # organization: <organization_id>    model: Qwen/Qwen3-8B    # deployment_name: <azure_model_deployment_name>    encoding_model: cl100k_base # automatically set by tiktoken if left undefined    model_supports_json: true # recommended if this is available for your model.    concurrent_requests: 25 # max number of simultaneous LLM requests allowed    async_mode: threaded # or asyncio    retry_strategy: native    max_retries: 10    tokens_per_minute: auto              # set to null to disable rate limiting    requests_per_minute: auto            # set to null to disable rate limiting  default_embedding_model:    type: openai_embedding # or azure_openai_embedding    api_base: https://api.siliconflow.cn/v1/    # api_version: 2024-05-01-preview    auth_type: api_key # or azure_managed_identity    api_key: 你注册的硅基流动api key    # audience: "https://cognitiveservices.azure.com/.default"    # organization: <organization_id>    model: BAAI/bge-m3    # deployment_name: <azure_model_deployment_name>    encoding_model: cl100k_base # automatically set by tiktoken if left undefined    model_supports_json: true # recommended if this is available for your model.    concurrent_requests: 25 # max number of simultaneous LLM requests allowed    async_mode: threaded # or asyncio    retry_strategy: native    max_retries: 10    tokens_per_minute: auto              # set to null to disable rate limiting    requests_per_minute: auto            # set to null to disable rate limiting

二、知识图谱构建

2.1 执行知识图谱构建过程

命令行输入graphrag index --root ./openl_big构建知识图谱,可以看到GraphRAG不断执行建表过程。

大家最关心的还是GraphRAG在大规模数据下的性能问题,这里以笔者的实际运行时间给大家参考:使用硅基流动Qwen3-8B模型,在提示词中加入no_think, 电脑配置 M2 PRO 芯片上处理完该文档运行了大概30多分钟。

2.2 读取知识图谱相关表

知识图谱以数据表的形式存储在openl_big\output文件夹中,我们可以通过pandas库读取这些表,具体代码我这里就不展示了,大家可参考:微软GraphRAG 代码实战

这里挑选其中的实体表, 关系表报告表进行展示:

实体表:

关系表:

报告表:

三、检索查询

3.1 GraphRAG查询模式详解

GraphRAG包含三种查询模式:

3.2 全局模式和本地模式差别

上一篇分享微软GraphRAG 代码实战中我们使用同样的问题进行全局模式和本地模式的提问,其实全局模式和本地模式还是有很大区别的,我这里总结出三种不适合本地模式的场景:

3.2.1 总结性质问题的提问

我们选取问题:请问文档中总共介绍了几种决策树算法

命令行输入 graphrag query --root openl_big --method local --query "请问文档中总共介绍了几种决策树算法?"进行本地模式查询。本地模式下无法回答(原因是当前问题中没有实体表中的核心实体单元,本地模式无法根据实体表关联文本):

命令行输入 graphrag query --root openl_big --method global --query "请问文档中总共介绍了几种决策树算法?"进行全局模式查询。全局模式下可以回答,并在最后列出了相关的社区报告,大家可以从社区表中读取这些社区报告进行查看。

3.2.2 综合评价类提问

我们选取问题:你觉得文档中介绍的决策树算法,哪个算法最有应用前景

命令行输入graphrag query --root openl_big --method local --query "你觉得文档中介绍的决策树算法,哪个算法最有应用前景"。该问题在原始文档中并没有,所以它没办法关联到任何一个实体,本地模式自然无法回答。

命令行输入graphrag query --root openl_big --method global --query "你觉得文档中介绍的决策树算法,哪个算法最有应用前景",可以看到全局模式给出了回答并同样在文本中列出了关联的社区报告。

3.2.3 主观评价类问题:

我们选取问题:你觉得这个文档写的如何

命令行输入graphrag query --root openl_big --method local --query "你觉得这个文档写的如何"。该问题在原始文档中并没有出现,没办法关联到任何一个实体。

命令行输入graphrag query --root openl_big --method global --query "你觉得这个文档写的如何"。可以看到全局模式可以回答。

3.3 全局模式和本地模式使用经验

在非上面介绍的三类问题的情况下,我们可以选取本地模式进行尝试,本地模式的性能比传统RAG的性能稍好,速度也想读较快。

对于上面介绍三类主观问题的情况下,我们需要选取全局模式进行尝试,全局模式可以通过社区报告更加全面的关联不同的实体关系产生回答。

总结

本篇分享我们使用GraphRAG对几万字的文档进行知识图谱的构建,并分析了长文本下GraphRAG的构建效率。本篇文章进一步对比了全局模式和本地模式查询的差异,总结了三种不适合使用本地模式的场景。

通过笔者日常的工作实践,GraphRAG已经基本可以满足精度较高的RAG需求,然而对于超过20G以上的文本GraphRAG还是有检索缓慢等缺点,目前也出现了大量的改进项目包括LightRAGNANO-GraphRAG等,大家可以自行尝试~

本篇是GraphRAG系列分享的完结篇,之后我会分享更多各种工作实际中的包括大模型应用开发、大模型原理在内的知识,大家感兴趣可以关注笔者掘金账号,更可关注笔者同名微信公众号: 大模型真好玩,免费获得笔者工作实践中的各种资料,还可私信笔者交流任何大模型问题!

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

GraphRAG 大模型 RAG 知识图谱
相关文章