Autogen_GraphRAG_Ollama
微软 GraphRAG + AutoGen 多智能体 + Ollama 全本地运行,零 API 费用
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
微软 GraphRAG + AutoGen 多智能体 + Ollama 全本地运行,零 API 费用
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
假设你在一家法律咨询公司工作,手头有 thousands 份内部案件文档。当同事问「这批合同中关于违约金条款有哪些风险点」时,传统 RAG(Retrieval-Augmented Generation)只能做简单的向量相似度检索,返回一堆零散的文档片段,遗漏了文档之间的深层关联——比如哪些条款在不同案件中反复出现、背后的法律逻辑网络是什么。这就是**知识图谱 RAG(GraphRAG)**要解决的核心问题。
karthikvenkatesan-eaton/Autogen_GraphRAG_Ollama 将微软 GraphRAG、微软 AutoGen 多智能体框架、Ollama 本地 LLM 和 Chainlit 对话 UI 四者合一,打造了一款完全本地运行、无需 OpenAI API 费用的多智能体 RAG 解决方案。截至 2026 年初,该项目已获得 843 Star、163 Fork,受到本地 AI 部署爱好者的高度关注。
GraphRAG 是微软研究院开源的知识图谱增强 RAG 系统。与传统 RAG 依赖纯向量检索不同,GraphRAG 在建立索引(indexing)阶段就主动从原始文档中提取实体(Entity)、关系(Relation)和声明(Claim),构建出领域知识图谱。查询时,系统先在知识图谱上进行社区检测(Community Detection),找到高度相关的实体社区,再从这些社区中综合摘要回答问题。这种方式特别擅长回答「全局性」问题(如「这份代码库的整体架构是什么」)和多跳推理问题。
AutoGen 是微软开源的多智能体编程框架,核心思想是将复杂任务分解为多个子任务,由不同角色的 AI 智能体(Agent)协作完成。在本项目中,AutoGen 负责将 GraphRAG 的检索能力封装为可被函数调用(Function Calling)的工具,让一个「检索智能体」(Retriever Agent)能够响应用户查询、调用 GraphRAG 的本地/全局搜索接口,并将结果汇总给用户。AutoGen 的设计使整个系统具有高度的可扩展性——你可以在此基础上轻松添加更多角色(如「摘要生成器」「事实核查员」)。
Ollama 是当前最流行的本地大模型运行平台,支持一键拉取和运行 llama3、mistral、phi3 等开源模型。它提供类 OpenAI 的 API 接口(/v1/chat/completions),使得任何面向 OpenAI API 编写的应用只需修改 endpoint 就能切换到本地模型。在本项目中,Ollama 承担两项关键任务:一是运行推理模型(如 mistral/llama3)进行对话生成;二是运行 nomic-embed-text 嵌入模型进行文本向量化。
Chainlit 是一个 Python 原生的对话应用框架,专注于多轮对话和消息流管理。本项目用 Chainlit 实现了:连续对话上下文管理、对话线程(threading)、用户参数设置(搜索类型、内容类型、社区层级滑块)等交互功能,让普通用户无需命令行即可操作 GraphRAG。
部署的第一步是构建知识索引,这一步骤由 GraphRAG 主导。用户需要准备好 ./input/markdown 目录下的文档(支持 PDF 转换)。GraphRAG 的核心配置文件是 settings.yaml,其中定义了三个关键 LLM 调用路径:
# LLM 推理:mistral 模型,通过 Ollama 的 v1 API
llm:
api_base: http://localhost:11434/v1
model: mistral
# 嵌入向量:nomic-embed-text 模型
embeddings:
api_base: http://localhost:11434/api
model: nomic-embed-text
项目作者巧妙地通过 Monkey Patch 方式,修改了 GraphRAG 包内的 embedding.py 和 openai_embeddings_llm.py 文件,让它们用 Ollama 客户端替换掉原本的 OpenAI 调用。这种 hack 方式虽然不够优雅,但在 Ollama 官方适配还不完善的阶段,是让 GraphRAG 跑在纯本地环境的最直接路径。执行 python -m graphrag.index --root . 后,GraphRAG 会在 output/ 目录生成包含实体表、关系表、社区摘要的 artifacts,这是后续问答的数据基础。
用户发起查询后,Chainlit 接收输入,启动 AutoGen 框架下的 Retriever Agent。该 Agent 持有 query_graphRAG 函数的调用权,根据用户选择决定走本地搜索(Local Search,从同社区的实体节点检索)还是全局搜索(Global Search,通过社区层级汇总全局信息)。
用户可在 Chainlit UI 中实时调整三个参数:
整个系统完全免费(除硬件电费)。对比使用 OpenAI GPT-4o API 的商业方案,同样的问答量在 Azure OpenAI Service 上的费用可能高达每月数百美元,而 Ollama + mistral 的组合在你自己的 GPU 上零成本运行。代价是 mistral/llama3 的推理质量与 GPT-4 仍有差距,在复杂多跳推理场景下可能不如商业模型稳定。
[用户] --HTTPS--> [Chainlit UI] ---> [AutoGen Retriever Agent]
|
[Lite-LLM Proxy] (端口4000)
/ \
[Ollama/llama3] [Ollama/mistral] [Ollama/nomic-embed-text]
(推理) (GraphRAG LLM) (向量嵌入)
|
[GraphRAG 知识图谱索引]
(实体/关系/社区摘要)
Lite-LLM 在中间层做了协议转换:它接收 OpenAI 格式的请求,将其转发给 Ollama 的 API,同时处理认证、超时、重试等逻辑,使得上层 AutoGen 完全感受不到底层模型的切换。
项目提供了详细的 Linux 和 Windows 双平台安装文档,但实际部署中仍有几道坎:
第一道:GraphRAG Monkey Patch。 作者明确指出需要手动替换 GraphRAG 包内的两个文件(embedding.py 和 openai_embeddings_llm.py),以适应 Ollama 后端。这一步依赖文件路径搜索(sudo find / -name ...),在 Windows 上路径格式不同,稍有疏忽就会导致 GraphRAG 找不到嵌入模型而报错。
第二道:模型权重准备。 Ollama 拉取模型需要网络连接(默认从 ollama.com/library),mistral(约 7GB)和 llama3(约 4.7GB)的下载时间取决于网络带宽。国内用户可能需要配置镜像或离线导入。
第三道:多端口协调。 系统涉及 Ollama(11434)、Lite-LLM(4000)、Chainlit(默认 8000)三个服务端口,需要确保端口不冲突且网络互通。项目默认 Lite-LLM 代理指向 http://0.0.0.0:4000/,但需要正确配置 --model ollama_chat/llama3 参数才能路由到 Ollama。
第四道:无 Docker 支持。 项目没有提供 Dockerfile 或 docker-compose.yml,所有依赖需要手动安装,无法实现「clone 后一条命令跑起来」的理想体验。
不太适合:追求 GPT-4 级别回答质量的用户、无 GPU 的纯 CPU 环境用户、期望开箱即用的非技术用户。
GraphRAG 并非银弹。它的社区检测和摘要生成依赖于 LLM 质量——当底层模型在理解复杂法律/医学文本时,如果实体抽取不准确,整个知识图谱就会「跑偏」。微软官方也在 GraphRAG 论文中承认,在某些垂直领域,传统 BM25 +向量检索的组合可能优于 GraphRAG。
Ollama 的工具调用(Function Calling)能力在早期版本并不完善。本项目通过 Lite-LLM 代理做了一层封装,在复杂的多智能体协作场景下,可能会遇到 Ollama 模型不支持特定 API 参数的情况。
此外,项目本身没有设置 LICENSE 文件,用户在使用和分发时需要注意这个问题。
Autogen_GraphRAG_Ollama 是 2024 年「本地 AI 民主化」浪潮的一个缩影。2022-2024 年:大模型 API 从 GPT-3 的天价到 GPT-4o 的低价甚至免费;开源模型从 GPT-2 级别的玩具到可以和 GPT-3.5 掰手腕的 llama3/mistral;本地部署工具从复杂的 vLLM 配置到 Ollama 的一条命令安装。这个项目的出现,正是这三条趋势线在 RAG 场景下的交汇点。
从技术演进方向看,GraphRAG + 多智能体的组合将在 2025-2026 年成为企业知识库的标准架构之一。微软自己也在这条路上持续投入(GraphRAG 2.0 已在路线图上)。未来的本地 RAG 方案会更加智能化:自动选择检索策略、自适应社区层级、甚至用小型模型做路由决策——而 AutoGen 框架为这些扩展预留了充足的空间。
如果你正在构建私有知识问答系统,或者对 GraphRAG 与多智能体协同的工作原理感兴趣,这个项目是一个值得深入研究的实战起点。它不是「一键部署」的生产级产品,但作为学习和实验的沙盒,已经足够精彩。