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

Java 根据字符生成背景透明的图片
上代码 package com.example.demotest.controller;/*** Author shaolin* Date 2024-10-08 10:11**/import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.image.WritableRaster; impor…...

树莓派3b安装ubuntu18.04服务器系统server配置网线连接
下载ubuntu镜像网址 img镜像,即树莓派官方烧录器使用的镜像网址 ubuntu18.04-server:ARM/RaspberryPi - Ubuntu Wiki 其他版本:Index of /ubuntu/releases 下载后解压即可。 发现使用官方烧录器烧录配置时配置wifi无论如何都不能使用&am…...

【AIGC】2022-NIPS-视频扩散模型
2022-NIPS-Video Diffusion Models 视频扩散模型摘要1. 引言2. 背景3. 视频扩散模型3.1. 重建引导采样以改进条件生成 4. 实验4.1. 无条件视频建模4.2. 视频预测4.3. 文本条件视频生成4.3.1 视频与图像建模的联合训练4.3.2 无分类器指导的效果4.3.3 更长序列的自回归视频扩展 5…...

从零开始构建:Python自定义脚本自动化你的日常任务
从零开始构建:Python自定义脚本自动化你的日常任务 Python 作为一种简洁且功能强大的编程语言,被广泛应用于各种自动化任务中。通过编写 Python 脚本,你可以轻松地将日常重复性工作自动化,例如文件操作、数据处理、网络爬虫、系统…...

【python实操】python小程序之对象的属性操作
引言 python小程序之对象的属性操作 文章目录 引言一、对象的属性操作1.1 题目1.2 代码1.3 代码解释 二、思考2.1 添加属性2.2 获取属性 一、对象的属性操作 1.1 题目 给对象添加属性 1.2 代码 class Cat:# 在缩进中书写⽅法def eat(self):# self 会⾃动出现,暂不管print(f…...

HCIP——网络类型及数据链路层协议
目录 网络类型的分类 数据链路层协议 MA网络 以太网协议 P2P网络 HDLC---高级数据链路控制协议 HDLC网络搭建 PPP---点到点协议 PPP协议的优点 PPP数据帧封装结构编辑 PPP会话的搭建 路建立阶段---LCP建立 认证阶段 PAP CHAP 网络层协议协商阶段---NCP协商 网…...

数据结构——栈与队列的实现(全码)
一 栈的概念 栈是一种特殊的线性表,栈内数据遵循先进后出(LIFO)的原则,对于栈,只能在同一侧进行入栈和出栈操作。 入栈操作和出栈操作是在栈的同一侧进行的,如图示: 对于栈这种数据类型,我们可以采用链表或…...

MacOS编译和安装Poco库的方法
1.从官网git下载最新的poco源代码 在/usr/local路径下创建Poco文件夹,克隆Poco源代码 sudo git clone -b poco-1.13.3-release https://github.com/pocoproject/poco.git2.等了一会后,报错啦!!! error: RPC failed…...
医院管理新境界:Spring Boot技术突破
6系统测试 6.1概念和意义 测试的定义:程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为: 目的:发现程序的错误; 任务:通过在计算机上执行程序,暴露程序中潜在的错误。 另一个…...
Docker 环境下 MinIO 监控实战:通过 Prometheus 实现集群与桶级别性能监控
Docker 环境下 MinIO 监控实战:通过 Prometheus 实现集群与桶级别性能监控 文章目录 Docker 环境下 MinIO 监控实战:通过 Prometheus 实现集群与桶级别性能监控一 获取 prometheus 配置二 配置的内容三 prometheus 的配置1)集群级别的指标2&a…...

渗透测试入门学习——使用python脚本自动跟踪csrf_token实现对网站登录界面的暴力破解
目录 写在前面 使用方法 相关代码 写在前面 最近在学习使用Burp Suite时发现其intruder模块无法实现多种模式的混合使用,就如想要暴力破解账号和口令两个区域并同时跟踪网页的csrf_token时BP似乎不能很方便的实现这一功能,于是自己在练习时就想到了用…...

stc8最小系统使用usb下载程序,关于断电的避坑
首先,按stc官方的原理图做好最小系统。 下面,来看一下stc手册中的操作步骤 USB-ISP 下载程序步骤: 1、按下板子上的 P3.2/INT0 按键,就是 P3.2 接地 2、给目标芯片重新上电,不管之前是否已通电。 电子开关是按下停电后…...
API 数据接口:使用操作流程与安全指南
在当今数字化高速发展的时代,API 数据接口如同构建数字世界的关键纽带,将不同的软件系统和服务紧密连接在一起。无论是企业开发者致力于提升业务效率,还是个人用户追求更便捷的数字体验,深入了解 API 数据接口的使用操作流程以及全…...
elasticsearch 8.2 版本如何设置config/elasticsearch.yml
在Elasticsearch 8.2版本中,`config/elasticsearch.yml`文件是用于配置Elasticsearch的主要配置文件。你可以通过编辑这个文件来设置各种配置选项。以下是一些常见的配置选项及其设置方法: ### 1. 基本配置 #### 集群名称 ```yaml cluster.name: my-cluster ``` #### 节点…...

华为 HCIP-Datacom H12-821 题库 (33)
🐣博客最下方微信公众号回复题库,领取题库和教学资源 🐤诚挚欢迎IT交流有兴趣的公众号回复交流群 🦘公众号会持续更新网络小知识😼 1.VLAN Pool 只要通过一个 SSID 就能够同时支持多个业务 VLAN,从而缩小广播域&#…...

【网络篇】计算机网络——运输层详述(笔记)
目录 一、运输层 1. 概述 2. 运输层和网络层的关系 3. 运输层协议概述 二、多路复用和多路分解 1. 综述 2. 无连接的多路复用与多路分解(UDP) 3. 面向连接的多路复用与多路分解(TCP) 4. Web 服务器与TCP 三、UDP&#x…...

用java编写飞机大战
游戏界面使用JFrame和JPanel构建。背景图通过BG类绘制。英雄机和敌机在界面上显示并移动。子弹从英雄机发射并在屏幕上移动。游戏有四种状态:READY、RUNNING、PAUSE、GAMEOVER。状态通过鼠标点击进行切换:点击开始游戏(从READY变为RUNNING&am…...
java Map中get方法爆错NullPointerException
代码如下: public class Hello {public static void main(String[] args) {Map<Integer,Integer> map new HashMap<>();map.put(2,1);int i map.get(1); System.out.println(i);} }运行出错,看代码很明显是get到一个不存在map的值&#x…...

ElasticSearch备考 -- Multi field
一、题目 Create the index hamlet_2 with one primary shard and no replicas Copy the mapping of hamlet_1 into hamlet_2, but also define a multi-field for speaker. The name of such multi-field is tokens and its data type is the (default) analysed string Reind…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...