当前位置: 首页 > news >正文

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


工作流集成

  1. 启动Core API(api.py)以启用后端功能。
  2. 如果使用Ollama进行嵌入,请启动嵌入代理(embedding_proxy.py)。
  3. 使用索引和提示调整UI(index_app.py)准备数据并微调系统。
  4. (可选)使用主交互式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


工作流集成

  1. 启动Core API(api.py)以启用后端功能。
  2. 使用索引和提示调整UI(index_app.py)准备数据并微调系统。
  3. (可选)使用主交互式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

代码如下&#xff1a; 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);} }运行出错&#xff0c;看代码很明显是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…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

6.9-QT模拟计算器

源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...

stm32进入Infinite_Loop原因(因为有系统中断函数未自定义实现)

这是系统中断服务程序的默认处理汇编函数&#xff0c;如果我们没有定义实现某个中断函数&#xff0c;那么当stm32产生了该中断时&#xff0c;就会默认跑这里来了&#xff0c;所以我们打开了什么中断&#xff0c;一定要记得实现对应的系统中断函数&#xff0c;否则会进来一直循环…...

Qt学习及使用_第1部分_认识Qt---Qt开发基本流程

前言 学以致用,通过QT框架的学习,一边实践,一边探索编程的方方面面. 参考书:<Qt 6 C开发指南>(以下称"本书") 标识说明:概念用粗体倾斜.重点内容用(加粗黑体)---重点内容(红字)---重点内容(加粗红字), 本书原话内容用深蓝色标识,比较重要的内容用加粗倾…...