基于 GraphRAG 构建知识图谱增强 LLM 检索:以《红楼梦》为例
最近尝试把《红楼梦》接入大模型(LLM),用于打造知识检索增强的智能体,效果一直不太理想。传统 RAG 主要依赖向量相似度搜索,在处理复杂关系推理时往往力不从心。
今天发现一个 GitHub 高赞项目 - GraphRAG,微软开源。它首先通过 LLM 进行实体提取、关系提取,将知识库构建成知识图谱,然后再基于知识图谱,利用 LLM 回答用户问题。这种结构化数据的方式显著提升了推理能力。
GraphRAG 是一种结构化、分层的检索增强生成 (RAG) 方法,与使用纯文本片段的朴素语义搜索方法不同。GraphRAG 的处理流程包括从原始文本中提取知识图、构建社区层次结构、为这些社区生成摘要,然后在执行基于 RAG 的任务时利用这些结构。
大白话解释一下:GraphRAG 是一个数据转换套件,旨在利用 LLM 从非结构化文本中提取有价值的结构化数据,进而构建成知识图谱。
1. GraphRAG 是什么
图谱有两个最重要的概念:节点和边。 比如在知乎:你和猴哥都是一个节点,你关注猴哥就构成一条边,你给猴哥点赞也构成一条边。你我和构成的边,都是图谱的一部分。
发布至今,已有 15.9K Star,并且项目还在持续迭代中。
2. 安装使用
环境准备
首先,在 Python 虚拟环境中一键安装:
pip install graphrag
然后,创建一个项目文件夹 graphrag,并在其中新建 input 文件夹,用于存放知识库数据:
mkdir graphrag
mkdir graphrag/input
把你的知识库文件(如 红楼梦.txt)装入 graphrag/input 后,一键初始化项目:
python -m graphrag.index --init --root graphrag/
这一步,如果遇到如下报错:
from past.utils import old_div
ModuleNotFoundError: No module named 'past'
提示缺少 past 模块,future 库提供了向后兼容的接口。安装 future,即可确保程序正常:
pip install future
项目目录结构
初始化成功后,项目目录结构如下:
graphrag/
├── .env
├── input
│ └── 红楼梦.txt
├── prompts
│ ├── claim_extraction.txt
│ ├── community_report.txt
│ ├── entity_extraction.txt
│ └── summarize_descriptions.txt
└── settings.yaml


