GraphRAG|从建图到检索与取舍:知识图谱增强 RAG 全流程拆解
微软知识图谱增强 RAG:把文本孤岛变成实体关系网络,支持多跳推理与跨片段缝合。索引建图→检索策略→增量取舍→部署,全流程清晰可落地。
微软提出的知识图谱增强型检索增强生成框架,解决传统向量 RAG 的『孤岛问题』:把文档从孤立的文本块变成有实体、有关系的网络结构,让大模型能完成多跳推理、跨片段答案缝合,大幅提升复杂问题的回答精度。
核心原理:两阶段流水线
GraphRAG 把流程拆分为索引阶段(离线)和查询阶段(在线),重计算集中在索引阶段,查询阶段轻量高效:
- 索引阶段:把分散文档变成结构化知识,提前建立实体关系与社区摘要
- 查询阶段:利用已有图结构、向量和摘要,顺着关系链收集证据,生成完整答案
一、建图全流程(索引阶段)
文本预处理:加载 PDF/Markdown/文本等原始数据,清洗后分块为 TextUnit(默认 1200 字符,重叠 100 字符),输出保留来源与上下文关联的结构化文本块。
实体关系抽取:用 LLM 从文本块识别实体(人物/组织/事件/概念)和关系(合作/属于/提出),输出节点+边的原始图谱。
知识图谱构建:实体存入图数据库(Neo4j/Memgraph),关系作为边连接;同时生成实体、关系的向量嵌入存入向量库,输出可检索图结构+向量索引。
社区发现与摘要:用 Leiden 等算法做层次化聚类生成社区,为每个社区生成自然语言摘要,输出社区层级结构+社区报告(高层级知识摘要)。
二、检索策略(查询阶段)
Local Search 局部检索:适用『某某公司 CEO 是谁』这类单跳、实体导向问题。流程:提取查询实体→定位图节点→返回邻居节点与关系→组装上下文。响应快、适合精准实体查询。
Global Search 全局检索:适用『500 份供应商合同哪些有合规风险』这类全局汇总、多跳推理问题。流程:匹配相关社区→拉取社区报告→整合跨社区关系路径→生成综合答案。能处理需全局视野的复杂问题、避免信息遗漏。
混合检索(工业级):向量检索 + 图检索双路并行——向量找语义相似的节点、补语义关联;图检索遍历节点边、找逻辑关联但语义不相似的信息;最终整合两路证据生成更完整答案。
三、取舍与选型决策
GraphRAG vs 传统向量 RAG:
信息结构:文本块孤岛 vs 实体关系网络;
推理能力:仅语义匹配 vs 支持多跳推理、跨片段缝合;
适用场景:简单单跳问题 vs 复杂关系、全局汇总问题;
计算成本:低(仅 Embedding)vs 高(实体抽取+图构建);
响应速度:快 vs 索引慢、查询快。
增量更新 vs 全量重建:全量重建适合文档低频更新场景,成本高但结构稳定;增量更新适合文档频繁更新场景,推荐 LightRAG/LazyGraphRAG,将索引成本降至传统 GraphRAG 的 0.1%,核心思路是『查询时按需建关系』而非『索引时预先建全图』。
避坑指南:
图谱质量优先:Garbage in garbage out 在图数据库中会被放大,错误关系会被固化,须严格校验实体抽取结果;
不要盲目全量建图:按业务场景选合适粒度,避免过度构建导致查询效率下降;
社区摘要质量直接影响全局检索效果:需优化摘要生成 Prompt,确保核心信息不丢失。
四、实战部署要点
- 环境准备:安装 GraphRAG CLI,配置 LLM(OpenAI/Claude/通义/文心/Ollama 等)
- 索引构建:python -m graphrag.index --root ./ragtest,首次建议小批量文档测试
- 输出文件:索引后 output 目录生成实体、关系、社区报告等 Parquet 文件
- 查询测试:先 Local Search 再 Global Search,逐步优化检索策略
项目地址 GitHub microsoft/graphrag。