GraphRAG 技术详解:结合知识图谱增强 LLM 检索生成
背景与挑战
在大模型企业化落地的过程中,单纯依赖预训练的大语言模型(LLM)往往难以满足特定领域的专业需求。LLM 缺乏组织内部的专有知识编码,导致在涉及具体业务数据时容易产生幻觉或回答不准确。检索增强生成(RAG)技术应运而生,它通过引入外部知识库来补充上下文,显著提升了回答的相关性。然而,传统的基于向量数据库的 RAG 存在明显的局限性。
传统 RAG 的局限性
标准 RAG 通常将文档切分为文本块(Chunks),计算其向量嵌入后存入向量数据库。当用户提问时,系统检索最相似的文本块。这种方法在处理简单事实性问题时效果良好,但在以下场景表现不佳:
- 多跳推理困难:当问题需要关联分散在不同文档中的多个实体时,向量检索难以捕捉跨文档的语义联系。
- 全局概览缺失:无法提供对整个数据集的宏观总结,难以回答'整体趋势'类问题。
- 上下文碎片化:检索到的文本块可能缺乏必要的背景信息,导致 LLM 理解偏差。

GraphRAG 核心原理
GraphRAG(Graph Retrieval-Augmented Generation)通过引入知识图谱(Knowledge Graph)来解决上述问题。微软研究院提出的 GraphRAG 框架,利用 LLM 从非结构化数据中提取实体和关系,构建动态的知识图谱。
工作流程
- 实体提取:使用 LLM 识别文档中的关键实体(如人、地点、事件)。
- 关系抽取:确定实体之间的语义关系(如'位于'、'属于'、'创建')。
- 图谱构建:将提取的信息存储为图结构,节点代表实体,边代表关系。
- 索引优化:利用图聚类算法(如 Leiden 算法)对实体进行社区发现,并为每个社区生成摘要。
- 检索增强:查询时,不仅检索向量相似度,还遍历图谱路径,获取更丰富的上下文。
优势分析
- 结构化知识:相比纯文本块,图谱提供了明确的实体关系,便于 LLM 进行逻辑推理。
- 全局理解:通过社区摘要,模型可以掌握数据集的整体主题分布。
- 可解释性:图谱路径可以作为答案的依据,增加系统的透明度。

架构设计与实现
在实际工程中,GraphRAG 通常与向量数据库混合使用,形成 Hybrid RAG 架构。以下是基于 LlamaIndex 的实现思路。
环境准备
from llama_index.core import Settings
from llama_index.llms.openai import OpenAI
from llama_index.embeddings.huggingface HuggingFaceEmbedding
Settings.llm = OpenAI(model=)
Settings.embed_model = HuggingFaceEmbedding(model_name=)





