GraphRAG 结合 GPT-4o mini 低成本构建 AI 图谱知识库教程
介绍利用 GraphRAG 技术结合 GPT-4o mini 模型构建低成本 AI 图谱知识库的方法。通过对比传统 RAG 的局限性,阐述 GraphRAG 在实体关系提取与复杂查询上的优势。详细演示了从环境安装、配置优化到索引构建与查询验证的全流程,并分析了使用 GPT-4o mini 替代 GPT-4 Turbo 带来的显著成本降低效果。最后补充了常见问题与优化建议,帮助开发者更好地落地该技术。

介绍利用 GraphRAG 技术结合 GPT-4o mini 模型构建低成本 AI 图谱知识库的方法。通过对比传统 RAG 的局限性,阐述 GraphRAG 在实体关系提取与复杂查询上的优势。详细演示了从环境安装、配置优化到索引构建与查询验证的全流程,并分析了使用 GPT-4o mini 替代 GPT-4 Turbo 带来的显著成本降低效果。最后补充了常见问题与优化建议,帮助开发者更好地落地该技术。

检索增强生成(Retrieval-Augmented Generation, RAG)的工作原理是将大型文档分割成多个小段落或片段。主要原因是大语言模型的上下文窗口长度有限,无法一次处理超过上下文窗口长度的信息。
当提出问题时,RAG 技术先从这些片段中检索相关信息,根据提问内容与片段的相似度找出若干个相关片段,组合成上下文,连同提问一起输入到大语言模型中,期待获得更为精准的回答。
然而,对于足够长的文档和非常复杂的问题,单靠这几个疑似相关的片段可能不够。真正的答案也许根本就不在里面。私有知识库提供的回答结果与通过数据微调模型获得的结果往往差异很大,微调后的模型能够依据私有数据回答非常复杂的问题,而 RAG 这种简单粗暴的拼接方式,很多时候得到的答案并不理想。
这些问题催生了 GraphRAG。GraphRAG 是一种创新的技术,它结合了知识图谱结构和 RAG 方法,旨在解决传统 RAG 方法的局限性。这是微软研发的一个创新产品,代表了 RAG 技术的最新进展,微软还发布了相关的学术论文,详细阐述了 GraphRAG 的理论基础和技术实现。
这里的'Graph(图)'代表知识的结构化表示。在这个图谱中,每个节点可能代表一个概念或实体,而连接这些节点的边则表示它们之间的关系。例如,节点「老虎」与「兔子」之间连一条线,上面写着「吃」,代表二者的关联是「老虎吃兔子」。
将图谱与 RAG 结合的原因是,传统 RAG 方式实际上效果不佳,我们希望将这些概念之间的复杂关系展现出来。在查询时,不再是大海捞针去找「可能相关」的信息碎片,而是根据图谱中已经掌握的关联,提取一整串相连的信息,让大语言模型来一并处理。
GraphRAG 在 GitHub 上已获得超过一万一千颗星,显示其受欢迎程度。
GraphRAG 融合了人工智能的两大流派:深度学习和知识图谱。曾经这两个流派是对立的,后来发现对立并无必要。如果直接用深度学习回答效果不好,结合图谱后效果就会强很多。
另一方面,构建知识图谱原来得人工根据规则去抽取其中的实体和关联,那是一个砸钱堆人力的活计。后来发现用上深度学习可以有效提升实体抽取效率。特别是有了大语言模型,人们发现抽取实体和关联变得更加准确、简单且低成本。所以,二者的融合是大势所趋。
融合之后的 GraphRAG 擅长把实体之间的复杂关系和上下文串联起来。它可以连接多个信息点进行复杂查询。这种查询不是简单地提取一部分信息就能完成的。原先根据相似度找出来的这些信息碎片,可能根本不足以支撑问题解答。但现在,根据实际关联获取相关信息,效果要好很多。
另外 GraphRAG 由于对数据集有了整体的刻画,因此概念语义信息得到了充分的表达。两个特点相夹持,使得 GraphRAG 的表现有了非常显著的改进。
这个技术遇到的问题,最为显著的就是一个字——贵。官方的例子提到一本书,稍后会看到,实体书篇幅大概 200 页左右。把它图谱化 RAG,需要花多少钱?官方例子中提到花费约 11 美金。有的人觉得这太贵了,为了索引一本电子书耗费的钱都快赶上一本实体书了。
GraphRAG 实施成本为什么会那么高?因为它使用的是 GPT-4 Turbo Preview 模型。这个模型 token 成本较高,由于在图谱构建过程中,需要反复调用它,因此 GraphRAG 成本居高不下。
既然找到了原因,我们可以尝试使用一个更经济的模型来替代它。许多人也做了尝试。例如,有人尝试在本地运行 Ollama 这样的本地小型模型,但最终效果不好,构建过程中常常出现问题。有的人使用 Groq 来做,而且成功了,但需要进行不少复杂的设置变更,对于初级用户来说非常麻烦。
最简便的方法,自然是期待 OpenAI 推出一个更经济实惠的模型。OpenAI 最近推出了 GPT-4o mini 模型。不要被名称忽悠了——GPT-4o mini 的对标模型,其实是 GPT-3.5 Turbo,但它甚至比 3.5 Turbo 还要便宜 60%。
GPT-4o mini 毕竟是个小模型,你可以指望它的中文输出能力,但千万不要以为它的推理与逻辑思考能力也可以赶上 GPT-4o 或者 Claude 3.5 Sonnet。所以我是把它放在了工作流里合适的位置上,物尽其用。用它和 GraphRAG 双剑合璧,可以降低成本。
首先,我们需要把 GraphRAG 安装上,这里使用 pip install,非常简单。
pip install graphrag
它会安装一系列的依赖,包括了 GraphRAG 所需的各种库和工具。安装过程可能需要一些时间,取决于你的网络速度和电脑性能。
安装完成后,我们找一个目录,新建一个目录,然后在下面执行这一句。
mkdir -p ./ragtest/input
这里的 input 是我们存放输入的文本 —— 像刚刚提到的 200 页的书或者文章 —— 的地方。
接下来,我们要把书籍资料下载下来。GraphRAG 官网样例使用的是古腾堡计划,上面有很多免费的图书。古腾堡计划是一个致力于创建和分发免费电子书的志愿者项目,它提供了大量版权已过期的经典文学作品。GraphRAG 官网给的样例是《圣诞颂歌》,是查尔斯・狄更斯创作的一部著名小说。
执行下面这条命令下载即可:
curl https://www.gutenberg.org/cache/epub/24022/pg24022.txt > ./ragtest/input/book.txt
我查看了一下,下载的文件在本地显示为 189KB。大吗?对于文本来说,不算太少。不过相对于今天动辄上 GB 的存储内容来说,那是真不大。
下载完成后,我们需要进行初始化。
python -m graphrag.index --init --root ./ragtest
这个步骤是为了设置 GraphRAG 的基本环境和配置,确保后续操作能够顺利进行。执行很快,因为这里面不做任何实际索引操作,只是新建几个文件和文件夹。
刚才有一个 input 是你自己建的,现在 GraphRAG 创建了 output 文件夹、prompts 文件夹,还有两个设定文件。我们先设置这个 .env 文件,里面需要填入一些配置。这些配置通常包括 API 密钥、模型选择等重要参数,它们对于 GraphRAG 的正常运行至关重要。
你需要将 OpenAI 提供的 API 密钥填入 GRAPHRAG_API_KEY 即可。
另外,settings.yaml 文件也需要修改。这里面有一项尤其需要注意。原来默认使用的是 GPT-4 Turbo preview,这一定要改为 GPT-4o mini,因为我们要尝试降低成本。其他设置无需更改。
常见的配置项包括:
base_model: 指定使用的基座模型。api_key: 用于认证的大模型 API 密钥。embedding_model: 嵌入模型的选择,影响向量检索质量。local_search: 是否启用局部搜索模式。接下来我们来建立索引。回到终端,执行以下命令。
python -m graphrag.index --root ./ragtest
这条命令建立一个图谱化的知识库。这个过程花了足足五分钟的时间,具体耗时取决于硬件性能和数据量。
终于,图谱构建完毕。下面我们做一个查询。
python -m graphrag.query --root ./ragtest --method global "What are the top themes in this story?"
注意这里的命令,Global(全局)代表我对整本书提问。我们问的问题是:这个故事有哪些最主要的主题?
结果显示了若干主题,每个答案后面都有一系列的内容来源标号,这一点很重要。它强调了大语言模型没有幻觉,而确实是利用你提供的资料来给出答案。
为了让你看得更加清楚,你可以将上面的答案翻译一下。为了让 AI 工作流更加简单,可以使用通用的翻译提示词模板。这种方法的优势在于它的灵活性和可定制性,你可以根据具体需求来调整每一步的提示词,从而优化整个工作流程。
我们该不该相信这个结果?我觉得尽管在回答中,GraphRAG 给出了来源片段信息,但这还不够。假设你根本就没有读过狄更斯的这本小说,该如何验证刚才给出的答案呢?
你可以写一个提示词:
然后,把这个提示词,连同刚刚 GraphRAG 给出的结果交给另一个大模型进行分析。
此外,还可以使用支持联网搜索的工具进行交叉验证。首先,工具会查找与输入内容相关的信息,列出了多个相关的信息来源。然后,工具会核对主题识别的准确性。在分析中,可以看到它使用了诸如准确地捕捉、准确地识别、很好的总结等词语来评价。它还指出没有明显的事实性错误,主题的选择和分析都很到位。
通过这两种方法的交叉验证,我们对大语言模型根据我们的图谱式知识库给出的答案就更有信心了。
使用这种方法的成本如何呢?打开 OpenAI 控制台查看,实际花费仅仅 0.28 美金。下面是明细。有 0.05 美金(将近五分之一)是用于语音识别的,这与我们当前的任务无关。
换句话说,我们用于总结这本书、构建知识图谱型知识库,以及进行查询的实际花费是多少呢?仅需要 0.23 美金。考虑到使用官方样例花费 11 美金,你会发现 GPT-4o mini 带来的成本改善令人惊叹。
通过本文的讲解,你可以发现 GraphRAG 技术能帮助我们更准确地回答全局性的复杂问题,这对许多应用场景来说至关重要。进一步,结合 GPT-4o mini 模型,我们不仅提高了处理效率和速度,还有效降低了成本。对于个人用户、研究人员和企业来说,这都是一个好消息。
自己动手试一试吧,欢迎把自己的测试结果分享在技术社区,大家一起交流讨论。
如果在构建索引过程中遇到内存不足的错误,可以尝试减少 chunk_size 或增加系统内存。同时检查 settings.yaml 中的并发设置,适当降低并发数以减少资源占用。
如果查询响应较慢,可以考虑使用更快的向量数据库后端,或者优化 embedding_model 的配置。对于大规模数据集,建议使用分布式部署方案。
虽然 GPT-4o mini 成本低,但在处理极度复杂的逻辑推理时,仍可能不如 GPT-4o。建议根据具体任务场景权衡成本与效果,必要时混合使用不同层级的模型。
输入文本的质量直接影响图谱构建效果。建议在导入前对文本进行清洗,去除乱码、特殊符号,并确保编码格式统一为 UTF-8。
GraphRAG 支持增量更新,但完全重绘图谱通常需要重新索引。对于频繁变动的知识库,建议设计合理的版本管理策略,定期重建索引以保证数据一致性。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online