首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

告别手动!Docker+Docker Compose 让知识图谱数据处理效率飙升DAY3

昨天手动完成知识图谱数据的系列操作,今天借助 Docker 与 Docker Compose 实现批量化、简化的数据处理流程。

本系列旨在将数据导入知识图谱,进而构建 RAG 应用。

知识图谱质量决定 RAG 应用能力,此前手动创建点和边效率低、易出错,企业数据量大时建模生产效率极低,所以引入 ETL 管道很有必要。

下面对比手动与 ETL 管道两种方式:

系列实践安排如下:

day1:数据处理,转为知识图谱标准数据。

day2:构建知识图谱,存入 Neo4J。

day3:企业批量创建,工程化处理知识数据(本篇)。

day4:深入学习 langchain 核心。

day5:与 GraphRAG 融合,构建 kg + rag 应用。

前言

今日实操让 LLM 生成公司多方面数据,此前医疗数据庞大且格式单一,本次数据更复杂多样。通过创建 Dockerfile 代码,实现数据自动加载、清洗、合并及导入,执行docker - compose up -- build即可。

这里不深入原理,直接实操,内容涵盖:

数据准备及前置工作。

代码及背后原理。

运用 Cypher 操作 neo4j。

数据准备及前置工作

需电脑安装并启动 docker。

数据准备

开始前要在 neo4j 清空已有数据库,不会操作可回顾昨天内容。本次准备企业日常 csv 格式数据,也可用自己公司数据实操。

代码及背后原理

操作过程

进入工作目录:cd app。

下载 Python 镜像:docker pull python:3.11 - slim。

执行任务:docker - compose up -- build。

代码工作流程

加载 dockerfile + env

:执行docker - compose up -- build后,docker 读取.yml 配置文件,加载 dockerfile 和.env 环境变量,环境变量含数据库连接、文件路径等关键信息,若未加载,打包镜像时无法确定路径和文件。

打包独立 docker 镜像

:Dockerfile 定义容器镜像构建步骤,示例如下:

运行代码

通过 sh 脚本python3 ETL_pipelines/main_etl.py运行。

核心代码

读取合并 csv 文件

从产品、类别、供应商 CSV 文件读取数据,基于特定列合并,清理缺失值。

导入 neo4j

在 Neo4j 创建产品节点,合并类别和供应商节点,建立关系。

插入关系与边

导入订单相关数据,创建并合并多类节点和关系,关联员工与管理者。

代码在独立 docker 镜像运行,避免依赖冲突,日后更新修改配置文件即可。

运用 Cypher 操作 neo4j

Cypher 是 Neo4j 图形查询语言,类似 SQL,容易学习。常用语句示例:

控制结果数量

MATCH (o: Order) RETURN o LIMIT 10;,最多返回 10 个订单节点。

查询特定节点

MATCH (o: Order) WHERE o.orderID = 10249 RETURN o;,查询编号 10249 的订单节点。

查询关联数据

MATCH (s: Shipper)<-[sr: SHIPPED_BY ]-(o: Order{orderID: 10249})-[cr: ORDERED_BY]->(c: Customer) RETURN s, sr, o, c, cr;,查询与 10249 订单相关的发货人和客户及关系。

查询深度关联

MATCH (o: Order)-[r]-(n) WHERE o.orderID = 10249 RETURN o, r, n;,查询与 10249 订单节点相连的所有节点和关系。

更多操作可参考官方文档,节点和关系包括客户、订单、员工等及它们之间的创建、包含等关联。明天将实体图谱接入 langchain 构建 RAG 应用。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/ON-gPqPsGTYsDmA72NjbGuHQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券