GraphRAG + Ollama + Groq 构建知识库 续篇 利用neo4j显示知识库
GraphRAG + Ollama + Groq 构建知识库
在上一篇文章中,我们详细介绍了如何创建一个知识库。尽管知识库已经建立,但其内容的可视化展示尚未实现。我们无法直接看到知识库中的数据,也就无法判断这些数据是否符合我们的预期。为了解决这个问题,本文将向你展示如何使用Neo4j这一强大的图形数据库,将知识库中的数据以图形化的形式呈现出来。
0. 环境准备
pip install yfiles_jupyter_graphs --quiet确保安装 Docker 和 Docker Compose
docker --version
docker-compose --version
如果没有安装,请根据您的操作系统访问 Docker 官方网站 进行安装。https://docs.docker.com/get-started/get-docker/
要使用您提供的 Docker Compose 配置文件来启动 Neo4j 数据库,请按照以下步骤操作:
1. 确保安装 Docker 和 Docker Compose
- 确保您的系统上已安装 Docker 和 Docker Compose。您可以在终端中运行以下命令以检查是否已安装:
docker --version
docker-compose --version
如果没有安装,请根据您的操作系统访问 Docker 官方网站 进行安装。
window 启动docker desktop
2. 创建项目目录
在您的工作目录中,创建一个新的文件夹来存放 Neo4j 数据库相关的文件:
mkdir neo4j_project # 此目录和前回文章中的graphRAG目录是平级的
cd neo4j_project
3. 创建必要的子目录
根据您的配置,您需要创建以下目录:
mkdir -p data\neo4j logs import
4. 创建 docker-compose.yml
文件
在 neo4j_project
目录中创建一个名为 docker-compose.yml
的文件,并将您提供的内容粘贴到该文件中:
version: "3.0"
services:neo4j:image: "neo4j:5.24-community"restart: alwaysports:- "7474:7474"- "7687:7687"volumes:- ./data/neo4j:/data- ./logs:/var/lib/neo4j/logs- ./import:/var/lib/neo4j/importenvironment:- NEO4J_AUTH=neo4j/123456
您可以使用文本编辑器(如 VS Code、Notepad++ 或任何其他)来创建和编辑此文件。
5. 启动 Neo4j 服务
在终端中,确保您仍在 neo4j_project
目录下,然后运行以下命令以启动 Neo4j 服务:
docker-compose up -d neo4j
-d
参数表示在后台运行容器。
6. 访问 Neo4j 浏览器
一旦服务启动,您可以通过浏览器访问 Neo4j 浏览器,通常地址为:
http://localhost:7474/browser/
使用用户名 neo4j
和密码 123456
登录。
7. 验证服务状态
如果需要查看正在运行的容器,可以使用以下命令:
docker-compose ps
这将显示所有由 Docker Compose 管理的服务及其状态。
通过以上步骤,您应该能够成功搭建并运行 Neo4j 图数据库。如果在过程中遇到任何问题,请检查 Docker 日志以获取更多信息:
docker-compose logs neo4j
这将帮助您诊断可能出现的问题。
8.导入数据
8.1 把前回文章中,graphRAG生成的parquet文件,转换成csv文件
display_graph\parquet转csv.py
import os
import pandas as pd# 定义一个函数,用于处理parquet文件
def process_parquet_files(path):# 遍历指定路径下的所有文件for root, dirs, files in os.walk(path):for file in files:# 如果文件以.parquet结尾,则进行处理if file.endswith('.parquet'):# 获取文件的完整路径file_path = os.path.join(root, file)# 读取parquet文件df = pd.read_parquet(file_path)# 打印正在处理的文件路径print(f"Processing file: {file_path}")# 定义输出文件的路径out_path = os.path.join(root, r'.\display_graph\neo4j_project\import', str(file).replace('parquet', 'csv'))# 将parquet文件转换为csv文件df.to_csv(out_path, index=False)# 指定要处理的文件路径,graphRAG生成的parquet文件目录
path = r'.\graphRAG\output\20241012-003213\artifacts'
# 调用函数处理文件
process_parquet_files(path)
8.2 导入csv文件到neo4j,cypher语句批量导入csv文件。
节点导入:
LOAD CSV WITH HEADERS FROM 'file:///create_final_entities.csv' AS row
CREATE (n:PERSON)
SET n.id = row.id,n.name = row.name,n.type = row.type,n.description = row.description,n.humanReadableId = row.human_readable_id;
关系导入:
LOAD CSV WITH HEADERS FROM 'file:///create_final_relationships.csv' AS row
MATCH (s:PERSON { name: toString(row.source) })
MATCH (t:PERSON { name: toString(row.target) })
CREATE (t)-[r:REL]->(s)
SET r.weight = row.weight, r.description = row.description,r.textUnitIds = split(row.text_unit_ids, ','), r.id = row.id,r.humanReadableId = row.human_readable_id,r.sourceDegree = toInteger(row.source_degree), r.targetDegree = toInteger(row.target_degree), r.rank = toInteger(row.rank);
我们的每一步进步,都是站在前人的肩膀上取得的。正如饮水思源,我们在享受成果的同时,不应忘记那些辛勤挖掘井泉的人。前人种下树木,后人得以乘凉。我们应带着感恩的心,继续传承和发扬无私分享的精神。
参照连接
https://blog.csdn.net/Johntill/article/details/142380487
https://www.cnblogs.com/222wan/p/18212878
相关文章:
GraphRAG + Ollama + Groq 构建知识库 续篇 利用neo4j显示知识库
GraphRAG Ollama Groq 构建知识库 在上一篇文章中,我们详细介绍了如何创建一个知识库。尽管知识库已经建立,但其内容的可视化展示尚未实现。我们无法直接看到知识库中的数据,也就无法判断这些数据是否符合我们的预期。为了解决这个问题&…...

工业以太网之战:EtherCAT是如何杀出重围的?
前言 EtherCAT 是一种开放的实时工业以太网协议,由德国倍福公司开发并在 2003 年 4 月的汉诺威工业博览会上首次亮相,目前由 EtherCAT 技术协会(ETG)进行维护和推广。经过 21 年的不断发展,EtherCAT 显示出极强的生命…...

轻量级可视化数据分析报表,分组汇总表!
什么是可视化分组汇总表? 可视化分组汇总表,是一种结合了数据分组、聚合计算与视觉呈现功能的数据分析展示功能。它能够按照指定的维度(如时间、地区、产品类型等)对数据进行分组,还能自动计算各组的统计指标…...

初始Python篇(4)—— 元组、字典
找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: Python 目录 元组 相关概念 元组的创建与删除 元组的遍历 元组生成式 字典 相关概念 字典的创建与删除 字典的遍历与访问 字典…...
C#中正则表达式
在C#中,正则表达式由 System.Text.RegularExpressions 命名空间提供,可以使用 Regex 类来处理正则表达式。以下是一些常见的用法及示例。 C# 中使用正则表达式的步骤: 引入命名空间: using System.Text.RegularExpressions; 创…...
【python写一个带有界面的计算器】
python写一个带有界面的计算器 为了创建一个带有图形用户界面(GUI)的计算器,我们可以使用Python的tkinter库。tkinter是Python的标准GUI库,它允许我们创建窗口、按钮、文本框等GUI元素。 下面是一个简单的带有GUI的计算器示例&a…...
K230获取单摄像头的 3 个通道图像并显示在 HDMI 显示器上
本示例打开摄像头,获取 3 个通道的图像并显示在 HDMI 显示器上。通道 0 采集 1080P 图像,通道 1 和通道 2 采集 VGA 分辨率的图像并叠加在通道 0 的图像上。 # Camera 示例 import time import os import sysfrom media.sensor import * from media.dis…...

nginx中的HTTP 负载均衡
HTTP 负载均衡:如何实现多台服务器的高效分发 为了让流量均匀分配到两台或多台 HTTP 服务器上,我们可以通过 NGINX 的 upstream 代码块实现负载均衡。 方法 在 NGINX 的 HTTP 模块内使用 upstream 代码块对 HTTP 服务器实施负载均衡: upstr…...

package.json 里的 dependencies和devDependencies区别
dependencies(依赖的意思): 通过 --save 安装,是需要发布到生产环境的。 比如项目中使用react,那么没有这个包的依赖就会报错,因此把依赖写入dependencies npm install <package-name>// 缩写 np…...

【功能安全】HARA分析中的SEC如何确认
目录 01 SEC介绍 02 SEC怎么定义 📖 推荐阅读 01 SEC介绍 SEC定义 S代表safety,E指的是Exposure,C指的是Controllability ASIL等级就是基于SEC三个参数确定下来的。 计算公式:10=D,9=C,8=B,7=A,<7=QM 举例:S3-C2-E4,即3+2+4=9,ASIL C 02 SEC怎么定义 Safe…...
阿里云Docker镜像源安装Docker的步骤
阿里云 Docker 镜像源安装 Docker 的步骤: 1. 更新包管理器: sudo apt update 2. 安装 Docker 的依赖包: sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release 3. 添加阿里云 Docker 镜像源 GP…...

得一微全资子公司硅格半导体携手广东工业大学,荣获省科学技术奖一等奖
10月17日,全省科技大会在广州召开,会上颁发了2023年度广东省科学技术奖。得一微电子旗下全资子公司深圳市硅格半导体有限公司(以下简称“硅格半导体”)与广东工业大学(以下简称:广工大)携手多家…...
@SneakyThrows不合理使用,是真的坑
public static void main(String[] args) {int a 1;int b 2;String result getResult(a, b);System.out.println(result);}SneakyThrowspublic static String getResult(Integer a,Integer b){if (a.equals(b)){return "成功!";}else{throw new Interru…...

怎么把ppt页面切换为竖页?首推使用这个在线ppt工具!
熟悉ppt的朋友都知道,最常见的ppt演示文稿为横版样式,且一旦确定了ppt的版式,后续所有页面会保持相同的大小,但有时横版不能满足我们需求,想单独把其中一页或多页变为竖页,Office Powerpoint就无能为力了。…...

【JavaEE】——自定义协议方案、UDP协议
阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:自定义协议 1:自定义协议 (1)交互哪些信息 &…...

python爬虫快速入门之---Scrapy 从入门到包吃包住
python爬虫快速入门之—Scrapy 从入门到包吃包住 文章目录 python爬虫快速入门之---Scrapy 从入门到包吃包住一、scrapy简介1.1、scrapy是什么?1.2、Scrapy 的特点1.3、Scrapy 的主要组件1.4、Scrapy 工作流程1.5、scrapy的安装 二、scrapy项目快速入门2.1、scrapy项目快速创建…...

【Photoshop——肤色变白——曲线】
1. 三通道曲线原理 在使用RGB曲线调整肤色时,你可以通过调整红、绿、蓝三个通道的曲线来实现黄皮肤到白皮肤的转变。 黄皮肤通常含有较多的红色和黄色。通过减少这些颜色的量,可以使肤色看起来更白。 具体步骤如下: 打开图像并创建曲线调…...

[python]从零开始的API调用教程
一、API是什么? API即应用程序编程接口,是一组定义了不同软件系统或组件之间如何交互的规则和协议。API为开发者提供了一种简化的方式,通过预定义的函数或方法,来使用某个软件、库、操作系统或硬件的功能,而不需要深入…...
FFmpeg 怎样根据图片和文本生成视频
使用FFmpeg根据图片和文本生成视频,你可以使用image2过滤器来处理图片,并使用subtitles过滤器来添加文本。以下是一个基本的命令行示例,它将图片转换为视频,并将文本作为字幕叠加: ffmpeg -loop 1 -i image.jpg -vf &…...

paddlepaddle显存未正常释放
NVIDIA GPU 显存未正常释放 问题描述 paddlepaddle 训练过程出现问题中断等导致GPU显存没有释放。 情况1: 使用nvidia-smi -l查看显存占用情况,输出结果中没有显示PID,但是有显存占用。 解决方法 使用killall python 直接kill掉所有python进程。假如运行此命…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...