graphrag-ui
微软 GraphRAG 的可视化前端,通过 Web 界面本地构建知识图谱索引、与 LLM 对话问答,
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
微软 GraphRAG 的可视化前端,通过 Web 界面本地构建知识图谱索引、与 LLM 对话问答,
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的工作场景:你是某家律所的 AI 产品负责人,团队积累了大量合同文本、判例文书和内部知识库,总量达到数十万份文档。传统 RAG(检索增强生成)方案在面对「分析这些文档中的实体关系和关联性」这类复杂查询时,往往力不从心——它只能找到相关片段,却无法理解文档间的深层关联。
GraphRAG(知识图谱增强检索)正是为解决这一痛点而生。它由微软研究院提出,核心思路是:首先从文档中提取实体和关系,构建知识图谱;再基于图谱做全局推理,从而回答跨越多个文档的高层次问题。比如「这批合同中各方的权利义务关系是怎样的」「哪些条款在不同文档间存在矛盾」,这类问题传统 RAG 难以胜任,GraphRAG 却能给出结构化的关联分析。
然而,原生 GraphRAG 是纯命令行工具,配置过程涉及 YAML 编写、API 对接、索引构建等多个步骤,对非技术用户来说门槛较高。GraphRAG-UI 正是解决这个问题的前端封装,它将 GraphRAG 的核心能力通过 Web 界面呈现,让用户无需记忆复杂命令,即可完成索引构建、查询执行和结果可视化。
图1:GraphRAG-UI 的索引管理界面,用户可在 Web 界面上传文档、配置参数、监控索引进度。
GraphRAG-UI 由开发者 wade1010 创建,基于更早的 GraphRAG-Local-UI(作者 severian42)项目进行升级。项目于 2024 年 9 月开源,目前在 GitHub 上获得约 154 颗星、20 个 Fork。技术栈以 Python 为主,定位为微软 GraphRAG 的可视化前端工具,核心目标群体包括:AI 研究者、知识工程师、企业知识管理团队,以及希望本地部署 LLM + RAG 系统的技术爱好者。
项目支持 GraphRAG 0.3.3 版本,并通过 pip 可一键安装(pip install graphrag-ui),同时兼容本地 Ollama 部署的 LLM(如 mistral:7b 等模型),真正做到数据不出本地、模型自主可控。
GraphRAG-UI 提供两套 Web 界面,用户可根据需求选择:
纯净版(index_app.py):通过 gradio index_app.py 或 graphrag-ui-pure 命令启动,监听 7860 端口。该版本聚焦索引管理和 Prompt Tuning,适合只需要文档处理、不需要图谱问答功能的用户。界面轻量、依赖少,适合资源受限环境。
完整版(app.py):通过 python app.py 或 graphrag-ui 命令启动,监听 7862 端口。除了索引管理外,还集成了图谱可视化、社区发现和 GraphRAG 对话功能。界面功能丰富,适合需要完整知识图谱问答体验的用户。
两套界面均基于 Gradio 框架构建,这是一个专为机器学习模型设计的 Python Web 界面框架,支持实时日志输出、文件上传和交互式组件,开发体验良好。
项目提供独立的 FastAPI 服务(python api.py --port 8012),负责处理索引构建请求、管理 Ollama LLM 对接、以及返回 GraphRAG 查询结果。这种前后端分离的设计允许用户只部署 API 服务,再通过自有前端调用,提升了系统的灵活性。API 层支持流式响应(SSE),可在大模型输出时实时推送 token,避免等待焦虑。
GraphRAG-UI 原生支持 Ollama 作为 LLM 后端。Ollama 是目前最流行的本地大模型运行工具,支持一键拉取和运行各种开源模型(如 Llama 3、Mistral、Nomic Embed Text 等)。在 .env 配置文件中,用户只需指定:
LLM_API_BASE=http://localhost:11434/v1
LLM_MODEL=mistral:7b
LLM_SERVICE_TYPE=openai_chat
EMBEDDINGS_API_BASE=http://localhost:11434/v1
EMBEDDINGS_MODEL=nomic-embed-text:latest
即可将 Ollama 作为 GraphRAG 的 LLM 和 Embedding 引擎。nomic-embed-text 是 Nomic AI 开源的高质量 Embedding 模型,专为知识图谱场景优化,配合 GraphRAG 的实体抽取效果出色。
GraphRAG-UI 的亮点功能之一是图谱可视化。用户完成索引构建后,系统会从文档中提取实体(人名、机构、概念等)和关系(上下位、因果、归属等),生成可视化交互图谱。通过 Plotly 和 NetworkX 库,图谱支持缩放、拖拽、节点筛选等交互操作,用户可以直观探索知识结构。
图2:知识图谱可视化效果,展示文档中实体间的关联关系,节点大小反映实体重要性。
GraphRAG-UI 的依赖分为核心层和前端层:
| 层级 | 依赖 | 作用 |
|---|---|---|
| 核心引擎 | graphrag(微软官方包) | 图谱构建、实体抽取、索引管理 |
| LLM 接口 | ollama、openai | 本地/远程大模型调用 |
| Embedding | tiktoken、langchain-community | 文本编码、向量化 |
| 图数据库 | lancedb | 高性能向量检索 |
| 图分析 | networkx、plotly | 图结构操作与可视化 |
| Web 框架 | gradio(UI)、fastapi+uvicorn(API) | 前端界面与后端服务 |
值得注意的是,项目中存在一个已知依赖冲突:graphrag 包的依赖 aiofiles 与项目 requirements.txt 中的其他依赖存在版本冲突。因此用户需要先 pip install -r requirements.txt,再单独 pip install graphrag,项目文档中对此有明确说明。
索引构建是 GraphRAG 的核心环节,GraphRAG-UI 将其封装为用户友好的步骤:
indexing/input 目录settings.yaml 调整抽取参数整个过程耗时取决于文档数量和模型速度,官方建议使用 GPU 加速以缩短等待时间。
# 1. 安装 Ollama(Linux/macOS)
curl -fsSL https://ollama.com/install.sh | sh
ollama pull mistral:7b
ollama pull nomic-embed-text:latest
# 2. pip 安装
pip install graphrag-ui
# 3. 启动 API 服务
graphrag-ui-server
# 4. 启动 Web UI(完整版)
graphrag-ui
git clone https://github.com/wade1010/graphrag-ui.git
cd graphrag-ui
conda create -n graphrag-ui -y && conda activate graphrag-ui
pip install -r requirements.txt
pip install graphrag # 单独安装,与 aiofiles 冲突
python api.py --host 0.0.0.0 --port 8012 &
python app.py
| 资源 | 最低要求 | 推荐配置 |
|---|---|---|
| GPU | 无(纯 CPU 可跑,慢) | NVIDIA 8GB+ 显存 |
| RAM | 8GB | 16GB+ |
| 磁盘 | 5GB | 20GB+ |
| 系统 | Python 3.10+ | Python 3.11 |
由于 GraphRAG 的实体抽取需要反复调用 LLM,纯 CPU 运行在处理大量文档时会非常缓慢。如果追求可用体验,建议配备一块 NVIDIA 显卡(推荐 24GB 显存,如 RTX 3090 或 4090),运行 7B 量级的模型(mistral:7b、llama3:8b)可以在效果和速度间取得较好平衡。
使用 GraphRAG-UI 时需要注意以下问题:
1. graphrag 包版本锁定:项目基于 GraphRAG 0.3.3 开发,GraphRAG 仍处于快速迭代期,新版本的 API 变更可能导致不兼容。用户如需升级 graphrag 版本,需要同步检查功能是否正常。
2. aiofiles 依赖冲突:这是项目部署过程中最常见的坑。由于 graphrag 依赖的 aiofiles 与 requirements.txt 中的依赖版本冲突,必须分开安装,且需注意 Python 环境隔离(建议使用 conda 或 venv)。
3. 本地 LLM 效果依赖模型质量:GraphRAG 的核心能力——实体抽取、关系判断——完全依赖 LLM 的理解能力。使用较小参数量的模型(如 7B)在复杂文档上可能遗漏关键实体或产生错误关联,影响最终问答质量。
4. 无容器化支持:项目不提供 Dockerfile 或 docker-compose,在服务器环境部署时需要用户自行处理 Python 环境、GPU 驱动和 CUDA 配置。
5. LanceDB 稳定性:作为向量数据库,LanceDB 是较新的项目,生产环境大规模使用前建议充分测试。
GraphRAG-UI 的出现,折射出 RAG 技术从「能用」向「好用」演进的大趋势。2024 年以来,本地化 AI 应用呈爆发式增长,Ollama、LocalAI 等工具让用户无需云端 API 即可运行大模型。但本地部署的体验一直受困于配置复杂、调试困难。GraphRAG-UI 正是瞄准这一痛点,通过可视化界面大幅降低了知识图谱 RAG 的使用门槛。
从技术演进看,GraphRAG 代表的「图谱+RAG」路线正在成为企业知识管理的主流方案。相比纯向量检索,图谱方法在多跳推理、可解释性方面有明显优势。GraphRAG-UI 作为微软 GraphRAG 的前端封装,让这一前沿技术走进更多开发者的工具箱,有望在法律、金融、医疗等知识密集型领域找到广泛应用。
图3:GraphRAG-UI 的对话界面,用户可以输入自然语言问题,系统结合知识图谱和 LLM 生成结构化回答。
| 维度 | 评分 | 说明 |
|---|---|---|
| 功能完整度 | ★★★★☆ | 索引管理、图谱可视化、对话查询三大核心功能齐全 |
| 部署友好度 | ★★★☆☆ | pip 安装便捷,但 aiofiles 冲突和 Ollama 配置有一定门槛 |
| 性能表现 | ★★★★☆ | GPU 环境下运行流畅,7B 模型可满足日常需求 |
| 社区活跃度 | ★★★☆☆ | 项目较新,star 增长平稳,文档覆盖基本功能 |
| 可扩展性 | ★★★★☆ | 前后端分离设计,支持 API 调用和自定义扩展 |
GraphRAG-UI 是本地知识图谱问答领域值得关注的项目,特别适合希望在本地环境搭建私有 RAG 系统、对数据隐私有要求的技术团队。部署时重点关注 Python 环境隔离和 Ollama 模型配置,这两个环节是决定体验的关键。