GraphRAG:基于知识图谱的检索增强生成技术详解与实战
什么是 GraphRAG?
GraphRAG 是微软开源的一项结合了知识图谱的检索增强生成(RAG)技术。它旨在显著提升 AI 知识库的性能,使 AI 能够根据提供的文档,更准确地回答复杂问题。
传统的 RAG 系统通常将文档切分为文本块(Chunks),基于向量相似度进行检索。这种方法在处理简单事实查询时表现良好,但在面对需要综合全局信息或理解实体间复杂关系的查询时,往往显得力不从心。
为什么需要 GraphRAG?
传统 RAG 存在以下主要局限性:
- 无法有效捕捉实体之间的复杂关系和层次结构:向量检索主要关注语义相似性,难以显式表达'谁是谁的父亲'、'哪个部门负责什么'等结构化关系。
- 上下文窗口限制:通常只能检索固定数量的、最相关的文本块,容易丢失长文档中的关键背景信息。
GraphRAG 通过构建知识图谱解决了这些问题。在对数据集建立索引时,它会执行两个核心步骤:
- 提取实体(Entity Extraction):识别文档中的人名、地名、组织等关键概念。
- 提取关系(Relationship Extraction):分析实体之间的交互和关联。
这些实体成为图谱中的节点,关系成为边,从而形成一张庞大的知识网络。这种全局性的视图让模型能够把握复杂的、细微的数据关系,从而提升回答的精确度和深度。
如何使用 GraphRAG?
1. 环境准备与安装
GraphRAG 基于 Python 开发,首先需要确保已安装 Python 环境。
pip install graphrag
安装过程可能涉及较多依赖包,请耐心等待下载完成。
2. 项目初始化
创建工作目录并放入待处理的文档。目前支持 .txt 和 .csv 格式。
mkdir -p ./ragtest/input
将文档放入 input 文件夹。官方示例提供了查尔斯·狄更斯的《圣诞颂歌》:
curl https://www.gutenberg.org/cache/epub/24022/pg24022.txt -o ./ragtest/input/book.txt
注意:使用云厂商的大模型 API(如 OpenAI)处理大型文档可能会产生较高的 Token 费用,建议先在小规模数据上测试成本。
3. 配置项目参数
运行初始化命令生成配置文件:
graphrag init --root ./ragtest
生成的目录中将包含两个关键配置文件:
.env:在此填入 API Key(如 OpenAI API Key)。settings.yaml:用于配置编码、嵌入模型(Embedding)、大语言模型(LLM)及其他参数。如果使用本地部署的大模型,需在此处指定相应的连接地址和模型名称。
4. 创建索引
索引构建是 GraphRAG 的核心步骤,它将非结构化文本转化为知识图谱。
graphrag index --root ./ragtest
此过程耗时较长,具体取决于文档大小和硬件性能。系统会提取实体、关系并生成社区摘要。


