🕸️ GraphRAG Local
欢迎使用带有索引/提示调优和查询/聊天用户界面的GraphRAG Local!这个项目是对微软GraphRAG的改编,专为支持本地模型而定制,并配备了全面的交互式用户界面生态系统。
📄 研究论文
有关原始GraphRAG实现的更多详情,请参阅GraphRAG论文。
🌟 特性
- 以API为中心的架构: 一个强大的基于FastAPI的服务器(
api.py
),作为GraphRAG操作的核心。 - 专用的索引和提示调优UI: 一个单独的基于Gradio的界面(
index_app.py
),用于管理索引和提示调优过程。 - 本地模型支持: 利用本地模型进行LLM和嵌入,包括与Ollama和OpenAI兼容API的兼容性。
- 成本效益: 通过使用自己的本地模型,消除对昂贵的基于云的模型的依赖。
- 交互式UI: 用户友好的界面,用于管理数据、运行查询和可视化结果(主应用)。
- 实时图形可视化: 使用Plotly以2D或3D方式可视化您的知识图谱(主应用)。
- 文件管理: 直接从UI上传、查看、编辑和删除输入文件。
- 设置管理: 通过UI轻松更新和管理您的GraphRAG设置。
- 输出探索: 浏览和查看索引输出和artifacts。
- 日志记录: 实时日志记录,以便更好地调试和监控。
- 灵活查询: 支持全局、本地和直接聊天查询,具有可自定义的参数(主应用)。
- 可自定义可视化: 调整图形布局、节点大小、颜色等,以满足您的偏好(主应用)。
🗺️ 路线图
重要提示: 由于日常工作和缺乏即时时间,更新一直很缓慢,但我保证我在有能力的时候会在后台处理错误/问题。如果您想提供帮助并找到解决问题的好方法,请随时贡献/创建PR。
GraphRAG Local UI生态系统目前正在进行重大转变。虽然主应用仍然可以正常运行,但我正在积极开发独立的索引/提示调优和查询/聊天应用,所有这些都围绕着一个强大的中央API构建。用户在这个过渡期间应该预期会有一些变化和潜在的不稳定性。
虽然目前可以正常运行,但主要只在Mac Studio M2上进行了测试。
我对GraphRAG Local UI生态系统的愿景是成为使用GraphRAG和本地LLM的终极工具集,纳入尽可能多的酷炫功能和知识图谱工具。我正在不断改进和添加新功能。
最近更新
- 新的以API为中心的架构(
api.py
) - 专用的索引和提示调优UI(
index_app.py
) - 改进的文件管理和输出探索
- 处理长时间运行操作的后台任务
- 通过环境变量和YAML文件增强配置选项
即将推出的功能
- 与API交互的专用查询/聊天UI
- 用于更轻松部署的Dockerfile
- 启动您自己的GraphRAG API服务器,以在外部应用中使用
- 实验性:用于知识图谱索引/查询的代理混合
- 支持更多文件格式(CSV、PDF等)
- 网络搜索/抓取功能
- 高级图形分析工具
- 与流行知识管理工具集成
- 用于团队知识图谱构建的协作功能
我致力于使GraphRAG Local UI生态系统成为处理知识图谱和LLM的最全面和用户友好的工具集。您的反馈和建议对塑造这个项目的未来至关重要。
如果遇到错误,请随时提出Issue,我会尽快解决以尽量减少您可能遇到的任何停机时间。
📦 安装和设置
按照以下步骤设置和运行GraphRAG Local UI生态系统:
-
创建并激活新的conda环境:
conda create -n graphrag-local -y conda activate graphrag-local
-
安装所需的包:
首先安装此仓库中的GraphRAG目录(包含Microsoft仓库中不存在的更改):
pip install -e ./graphrag
然后安装其余的依赖项:
pip install -r requirements.txt
-
启动API服务器:
python api.py --host 0.0.0.0 --port 8012 --reload
-
如果使用Ollama进行嵌入,启动嵌入代理:
python embedding_proxy.py --port 11435 --host http://localhost:11434
注意:有关使用Ollama嵌入与GraphRAG的详细说明,请参阅EMBEDDING_PROXY_README.md文件。
-
启动索引和提示调优UI:
gradio index_app.py
-
启动主交互式UI(遗留应用):
gradio app.py
或
python app.py
-
访问UI:
- 索引和提示调优UI:在网络浏览器中打开
http://localhost:7861
- 主UI(遗留):在网络浏览器中打开
http://localhost:7860
- 索引和提示调优UI:在网络浏览器中打开
🚀 GraphRAG Local入门
GraphRAG设计灵活,允许您快速创建和初始化自己的索引目录。按照以下步骤设置您的环境:
1. 创建索引目录
该仓库附带预制的Indexing文件夹,但您可能想创建自己的,所以这里是步骤。首先,为您的输入数据和索引结果创建所需的目录结构:
mkdir -p ./indexing/input
该目录将存储:
- 用于索引的输入.txt文件
- 输出结果
- 用于提示调优的提示
2. 添加样本数据(可选)
如果您想从样本数据开始,将其复制到新的输入目录:
cp input/* ./indexing/input
您还可以将自己的.txt文件添加到此目录以进行索引。
3. 初始化索引文件夹
执行以下命令来使用所需文件初始化 ./indexing 文件夹:
python -m graphrag.index --init --root ./indexing
4. 配置设置
将预配置的 settings.yaml
文件移动到您的索引目录:
mv settings.yaml ./indexing
此文件包含主要配置,预设为使用本地模型。
5. 自定义
您可以通过修改以下环境变量来自定义设置:
ROOT_DIR
:指向您的主索引目录INPUT_DIR
:指定输入文件的位置
📚 其他资源
有关更详细的信息和高级用法,请参阅官方 GraphRAG 文档。
🖥️ GraphRAG 应用生态系统
GraphRAG 本地 UI 生态系统由三个主要组件组成,每个组件在知识图谱创建和查询过程中都有特定的用途:
1. 核心 API(api.py
)
api.py
文件作为 GraphRAG 系统的骨干,提供了一个强大的基于 FastAPI 的服务器,处理所有核心操作。
主要特点:
- 管理索引和提示调优过程
- 处理各种查询类型(本地、全局和直接聊天)
- 集成本地 LLM 和嵌入模型
- 提供文件管理和系统配置的端点
使用方法:
python api.py --host 0.0.0.0 --port 8012 --reload
注意:如果使用 Ollama 进行嵌入,请确保与 api.py
一起运行嵌入代理(embedding_proxy.py
)。详细说明请参阅 EMBEDDING_PROXY_README.md。
2. 索引和提示调优 UI(index_app.py
)
index_app.py
文件提供了一个用户友好的 Gradio 界面,用于管理索引和提示调优过程。
主要特点:
- 配置和运行索引任务
- 设置和执行提示调优
- 管理输入文件并探索输出数据
- 调整 LLM 和嵌入设置
使用方法:
python index_app.py
在 http://localhost:7861
访问 UI
3. 主交互式 UI(旧版应用)(app.py
)
app.py
文件是预先存在的主应用程序,正在逐步淘汰,但仍提供有用的功能。
主要特点:
- 以 2D 或 3D 方式可视化知识图谱
- 运行查询并查看结果
- 管理 GraphRAG 设置
- 探索已索引的数据
使用方法:
python app.py
或
gradio app.py
在 http://localhost:7860
访问 UI
工作流集成
- 启动核心 API(
api.py
)以启用后端功能。 - 使用索引和提示调优 UI(
index_app.py
)准备数据并微调系统。 - (可选)使用主交互式 UI(
app.py
)进行可视化和遗留功能。
这种模块化方法允许更大的灵活性和更易于维护 GraphRAG 系统。随着开发的继续,app.py
的功能将逐步集成到与核心 API 交互的新的专门接口中。
📚 引用
- Microsoft 原始 GraphRAG 仓库:GraphRAG
- 本项目受到 win4r 的 GraphRAG4OpenWebUI 仓库(https://github.com/win4r/GraphRAG4OpenWebUI)的启发,并将其用作 API 实现的起点。
故障排除
- 如果您遇到新 API 或索引 UI 的任何问题,请检查控制台日志以获取详细的错误消息。
- 对于主应用程序,如果无法运行
gradio app.py
,请尝试运行pip install --upgrade gradio
,然后退出并启动新的终端。之后应该能正确加载和启动 Gradio 应用程序。 - 在 Windows 上,如果遇到编码/UTF 错误,可以在 YAML 设置菜单中将其更改为正确的格式。
如有任何问题或功能请求,请在 GitHub 仓库上提出问题。祝您知识图谱探索愉快!