graphrag-accelerator
微软官方案例:在Azure上一键部署知识图谱增强的RAG系统,支持多跳推理问答
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
微软官方案例:在Azure上一键部署知识图谱增强的RAG系统,支持多跳推理问答
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你手里有一份 10 万字的法律合同文档,你需要问:"这份合同中关于违约责任的条款,和《民法典》第 584 条有什么关系?"传统的 RAG(检索增强生成)会怎么做?它会把文档切成小块,然后基于语义相似性检索最相关的段落。但这种"语义匹配"存在致命缺陷:它无法理解实体之间的关系,无法追踪跨越多个文档的知识链路。
GraphRAG(Graph Retrieval-Augmented Generation)正是为解决这一痛点而生的技术方案。GraphRAG Accelerator 是微软 Azure 团队提供的一键部署解决方案,让你可以在 Azure 云上快速搭建基于知识图谱的 RAG 系统。它在 GitHub 上已获得超过 2400 颗星,被广泛用于企业级知识管理、合同分析、客服机器人等场景。
RAG 的核心思想是"检索+生成",但传统 RAG 在处理多跳推理(multi-hop reasoning)时表现糟糕。比如问"特斯拉和SpaceX的CEO有什么关系",需要先找到特斯拉CEO是马斯克,再找到SpaceX CEO也是马斯克,才能给出正确答案。传统 RAG 的 chunk-level 检索无法建立这种跨实体的关联推理。
GraphRAG 的创新在于:它先把文档解析成实体(Entity)和关系(Relation),构建知识图谱,然后基于图谱进行社区检测(Community Detection)和摘要生成。当用户提问时,系统不仅检索相关文档片段,还会检索相关的实体社区,通过社区级摘要提供更全面的答案。
GraphRAG 的技术来源于微软研究院 2024 年的论文《GRAPHRAG: Unlocking LLM Transformation from Dry Academic Paper to Data Analyst with Knowledge Graph Multi-hop Reasoning》,并在 GitHub 上成为微软官方 GraphRAG 库的核心应用案例。
GraphRAG Accelerator 提供了一条完整的"文档→知识图谱→智能问答" pipeline,包含四个核心阶段:
支持 Markdown、TXT、CSV 等多种格式的文档输入。使用 markitdown 库将文档转为结构化文本,再通过 tiktoken 进行 token 级别的分块,确保切分边界不会破坏语义完整性。
通过 LLM(通常是 Azure OpenAI GPT-4)从文本中提取三类关键信息:
提取结果存储在 CosmosDB NoSQL 数据库中,构成可查询的知识图谱。
使用 Leiden 算法对知识图谱进行社区检测,将相关实体归入同一个社区。然后为每个社区生成摘要(Community Summary),这一步骤是 GraphRAG 区别于传统 RAG 的关键——它提供了超越单个文档片段的全局视角。
支持两种查询模式:
项目采用前后端分离架构,基础设施完全通过 Azure Bicep IaC 声明式管理:
| 组件 | 技术选型 | 作用 |
|---|---|---|
| 后端 API | FastAPI + Uvicorn | 提供 RESTful API,封装 GraphRAG 库的索引和查询能力 |
| 前端 UI | Streamlit | 可视化操作界面,支持 Prompt 生成、配置、索引、查询 |
| 图谱存储 | Azure CosmosDB (NoSQL) | 存储实体、关系、社区等结构化数据 |
| 文件存储 | Azure Blob Storage | 存储原始文档和索引中间产物 |
| 搜索增强 | Azure AI Search | 对文档片段进行向量检索增强 |
| 编排层 | Azure Kubernetes Service (AKS) | 容器化部署后端服务,支持自动扩缩容 |
| 网关层 | Azure API Management (APIM) | API 认证、限流、监控 |
| LLM 引擎 | Azure OpenAI Service (GPT-4) | 提供实体抽取、社区摘要、问答生成的推理能力 |
| 监控 | Azure Monitor + OpenTelemetry | 全链路可观测性 |
这种架构的优势在于:每个组件都是云原生服务,具备高可用、自动扩缩容、SLA 保障;但劣势也很明显——需要维护多个 Azure 服务的配置和费用。
部署 GraphRAG Accelerator 需要以下工具和环境:
微软提供了高度自动化的部署脚本(基于 Bicep IaC),主要步骤包括:
infra/deploy.parameters.json 中的 Azure 资源参数az deployment group create 触发 Bicep 模板部署README 中明确标注了双重要费警告:
backend/graphrag_app/
├── api/ # FastAPI 路由定义
├── main.py # 应用入口,Uvicorn ASGI 服务器
├── typing/ # Pydantic 类型定义
└── utils/ # 工具函数(日志、配置读取)
项目使用 pytest 完整测试套件:
pytest-asyncio:异步 API 测试pytest-cov:覆盖率报告pytest-xdist:并行测试加速pytest-env:环境变量注入wikipedia mock 数据:用于离线测试⚠️ 重要提示:GraphRAG Accelerator 已在 2024 年底停止维护(README 明确标注"no longer maintained")。微软建议用户迁移到 microsoft/graphrag 主库。但主库本身是纯 Python 库,没有 accelerator 提供的完整 API + Web UI 封装。
整个项目深度绑定 Azure 生态,无法部署到 AWS、GCP 或本地环境。如果你需要跨云或本地部署,这不是一个好选择。
GPT-4 的实体抽取和社区摘要生成涉及大量 LLM 调用。一个中等规模文档集(1000页)的索引费用可能达到数百美元。
GraphRAG 的效果完全取决于底层 LLM 的实体抽取能力。如果文档格式不规范或领域术语复杂,抽取质量会显著下降。
GraphRAG 代表了 RAG 技术演进的一个重要方向——从 chunk-level 到 entity-level 的认知升级。它不仅是一个技术方案,更预示了企业知识管理系统的未来形态:
GraphRAG Accelerator 作为微软官方的 Azure 部署方案,虽然已停止维护,但它验证了 GraphRAG 从学术到企业落地的完整路径。后续的 microsoft/graphrag 库持续活跃,为更广泛的应用场景提供了底层支持。
项目基本信息
本分析基于 GitHub 仓库最新代码(2024年12月快照),图片因代理限制无法验证,以文字描述为准。