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(二)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/442514.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLO 二元分类器

YOLO 二元分类器 在评估二元分类器性能时,TP、FP、TN和FN是四个核心指标,它们分别代表真阳性、假阳性、真阴性和假阴性。以下是这些指标的定义、计算方法以及在实际应用中的意义: 定义 TP(真阳性):模型正…

嵌入式 c 内存堆栈增长方向往低地址方向好处

如下是堆和栈内存空间使用方式有如下好处: 1、stack从高地址向低地址扩展,这样栈空间的起始位置就能确定下来;如果反向,则要考虑这个起点从哪里合适,要确定堆的大小。 2、可以共用中间部分区域空间,最大化…

kafka-windows集群部署

kafka-windows集群部署目录 文章目录 kafka-windows集群部署目录前言一、复制出来四个kafka文件夹二、修改集群每个kafka的配置文件四、启动zookeeper,kafka集群 前言 部署本文步骤可以先阅读这一篇博客,这篇是关于单机kafka部署测试的。本文用到的文件…

Linux驱动学习——内核编译

1、从官网下载适合板子的Linux内核版本 选择什么版本的内核需要根据所使用的硬件平台而定,最好使用硬件厂商推荐使用的版本 https://www.kernel.org/pub/linux/kernel/ 2、将压缩包复制到Ubuntu内进行解压 sudo tar -xvf linux-2.6.32.2-mini2440-20150709.tgz 然…

职场上的人情世故,你知多少?这五点一定要了解

职场是一个由人组成的复杂社交网络,人情世故在其中起着至关重要的作用。良好的人际关系可以帮助我们更好地融入团队,提升工作效率,甚至影响职业发展。在职场中,我们需要了解一些关键要素,以更好地处理人际关系&#xf…

前端练习小项目 —— 让图片变得更 “色”

前言:相信读者在学习完了HTML、CSS和JavaScript之后已经想要迫不及待的想找一个小型的项目来练练手,那么这篇文章就正好能满足你的 “需求”。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 在开始学习…

详解JavaScript中函数式编程

函数式编程 JS并非函数式编程语言,但可以应用函数式编程技术,这种风格很多语言都用,例如Java. 使用函数处理数组 假设有一个数组,数组元素都是数字,我们想要计算这些元素的平均值和标准差。使用非函数式编程风格的话…

微信小程序python+uniapp毕业论文选题系统设计与实现 lj141

目录 项目介绍具体实现截图开发者工具介绍技术路线性能/安全/负载方面开发语言以及框架介绍python-flask核心代码部分展示python-django核心代码部分展示详细视频演示源码获取 项目介绍 考虑到实际生活中在毕业论文选题管理方面的需要以及对该系统认真的分析,将小程序权限按管…

LabVIEW回转支承间隙自动化检测系统

开发了一种基于LabVIEW软件的回转支承间隙检测系统,通过高精度传感器和数据采集卡,自动化、高效地测量回转支承的轴向间隙和径向间隙,提高了检测精度和生产质量。以下是对系统的详细描述与应用案例分析,希望能为有类似需求的开发者…

linux如何与网络时间对齐(雪花算法ID重复)

文章目录 前言一、可能引发什么问题?二、调整步骤1.查看当前系统时间2.修改为中国时区3.同步网络时间4. 雪花id重复 总结 前言 linux服务器是部署服务的不二之选,有个小问题不可忽略: 会发现默认的服务器时间并非中国时区,时间也是相差八小时,中国时区…

踩坑NVTX

最开始在 【简说】NVTX Nsight Nvidia性能分析利器 看到NVTX的时候,我觉得这是一个好东西啊,可以详细说明每一段时间对应的是哪一段程序。 看了一下github,他的文章已经过时,现在已经不需要链接动态库了,直接includ…

2024_10_8 系统进展

改进位置 发现是label_api里藏了我需要改进的东西 settings.py 数据库 我这边电脑上使用的是windows 192 vue.config.js 陈家强是这样设置的 module.exports {publicPath: process.env.NODE_ENV production? /: /,assetsDir: static,// css: {// extract: false// },…

问:LINUXWINDOWS线程CPU时间如何排序?

Linux 在Linux上,你可以使用ps命令结合sort命令来查看和排序进程或线程的CPU使用时间。 查看进程的CPU使用时间并按时间排序 使用ps命令的-o选项可以自定义输出格式,-e选项表示显示所有进程,--sort选项用于排序。 ps -e -o pid,tid,comm,…

使用YOLO11实例分割模型进行人物分割【附完整源码】

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

D31【python 接口自动化学习】- python基础之输入输出与文件操作

day31 文件的打开 学习日期:20241008 学习目标:输入输出与文件操作﹣-43 常见常新:文件的打开 学习笔记: 文件的概念 使用open()函数打开文件 文件路径处理 文件打开模式 总结 文件操作包括:打开&#…

VM虚拟机安装 CentOS 7.6 部署宝塔面板实操

一、centos下载 进入centos官网下载页面,选择7.6版本,依次点击 tree-》isos-》x86_64/-》CentOS-7-x86_64-DVD-1810.iso 进行下载。 centos官网下载页面: https://wiki.centos.org/Download.html1、打开下载页面 二、配置CentOS 7的网络 1、…

秋季猫咪掉毛严重怎么办?宠物空气净化器到底有没有用?

告别炎热的夏天,秋意随着家里猫咪新一轮的掉毛一起到来。我家两只布偶齐齐发力,疯狂掉毛,家里每个角落无一幸免。衣服上、地板上,肉眼可见家里的毛发量在不断增多,又陷入了日复一日的清理大战。除此之外,对…

『网络游戏』Tips弹窗队列【10】

修改脚本:DynamicWnd.cs 修改脚本:GameRoot.cs 运行项目 - Tips提示消息按顺序依次弹出显示 修改代码:GameRoot.cs 修改代码:LoginSys.cs 运行项目 设置初始化函数 将CreateWnd设置为隐藏 运行项目 本章结束

【C++ 11】for 基于范围的循环

文章目录 【 1. 基本用法 】【 2. for 新格式的应用 】2.1 for 遍历字符串2.2 for 遍历列表2.3 for 遍历的同时修改元素 问题背景 C 11标准之前(C 98/03 标准),如果要用 for 循环语句遍历一个数组或者容器,只能套用如下结构&#…

k8s 中的金丝雀发布(灰度发布)

目录 1 什么是金丝雀发布 2 Canary 发布方式 3 Canary 两种发布方式实操 3.1 准备工作 3.1.1 将 nginx 命名两个版本 v1 与 v2 3.1.2 暴露端口并指定微服务类型 3.1.3 进入 pod 修改默认发布文件 3.1.4 测试 service 是否正常 3.2 基于权重的灰度发布 3.2.1 创建 Igress 资源类…