graphrag-local-ollama
用 Ollama 本地大模型替代商业 API,以知识图谱驱动全局问答的 GraphRAG 平民化方案
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用 Ollama 本地大模型替代商业 API,以知识图谱驱动全局问答的 GraphRAG 平民化方案
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你是一家科技公司的技术负责人,公司积累了大量内部文档——产品需求文档、技术方案、会议纪要、项目周报,加起来有数千份 PDF 和 Markdown 文件。你想知道「过去一年里,我们的技术架构演进经历了哪些关键节点?有哪些未解决的技术债?」
用传统 RAG(检索增强生成),你只能问「文档里提到了哪些架构设计模式」这类局部问题。一旦问「全局性问题」——比如「总结整个文档库的核心主题和它们之间的关联」——RAG 的检索机制就会失效,因为答案需要综合整份语料库才能得出。
GraphRAG Local Ollama 正是为解决这一痛点而生。
GraphRAG 是微软研究院 2024 年 4 月发布的论文提出的技术方案,其核心思想是:将 LLM 生成的知识图谱(Knowledge Graph)与社区发现(Community Detection)算法结合,让 AI 能够真正理解文档之间的语义关联,从而回答全局性问题。
原始的微软 GraphRAG 需要调用 OpenAI API 或 Azure OpenAI Service,成本高昂。TheAiSingularity 团队将其 fork 并深度改造,适配 Ollama 运行时——这意味着你可以用 llama3、mistral、gemma2、phi3 等开源本地大模型完全替代商业 API,实现零成本的 GraphRAG 体验。
目前该项目在 GitHub 获得 1100+ stars,收到社区广泛认可。
GraphRAG 的索引管道分为两个核心阶段:
第一阶段:实体知识图谱构建
利用 LLM 从文档中递归式提取实体(人物、地点、组织、概念)和它们之间的关系。例如,从一段「华为发布 Mate60 手机,采用自研麒麟 9000s 芯片」的文本中,LLM 会自动抽取:
第二阶段:社区摘要生成
基于构建好的知识图谱,使用 Leiden/Louvain 等社区发现算法,将紧密关联的实体聚类成社区,然后为每个社区预生成摘要。当用户提问时,系统先找到相关的社区,再读取社区摘要生成回答。
| 模式 | 适用场景 | 原理 |
|---|---|---|
| Local Search | 局部实体问题 | 定位相关实体,聚合邻居节点信息 |
| Global Search | 全局总结问题 | 遍历所有社区摘要,层次化聚合生成 |
从 pyproject.toml 可以看到核心技术依赖:
graphrag/
├── index/ # 索引构建管道:文档解析 → 实体抽取 → 图构建 → 社区发现
├── query/ # 查询引擎:Local/ Global 两种搜索策略
├── llm/ # LLM 适配层:支持 Ollama 的 chat/completion 接口
├── vector_stores/# 向量存储后端:LanceDB
├── config/ # 配置管理
└── model/ # 数据模型定义(Pydantic)
项目提供了一个完整的 Gradio Web UI(app.py),包含四个功能 Tab:
.graphml 文件,渲染成交互式 HTML 图谱(通过 pyvis + networkx 实现)Settings Tab 默认配置为:
mistralnomic-embed-text项目提供了生产级的容器化部署方案:
python:3.11-slim,安装了 gcc 编译工具链,直接 pip install 依赖一键启动命令:
docker-compose up
启动后,Gradio UI 监听在默认端口(7860 或自定义),通过浏览器访问即可使用。Ollama 容器内数据持久化到 ollama_data Docker volume。
GraphRAG 代表了 RAG 技术的演进方向——从简单的向量检索,走向结构化的知识表示与推理。本地化实现(GraphRAG Local Ollama)让这一技术民主化:
该项目当前 1100+ stars 的增长曲线表明,社区对「低成本私有化 RAG 方案」的需求正在快速释放。