# DB4Trans **Repository Path**: AugustLpk/db4-trans ## Basic Information - **Project Name**: DB4Trans - **Description**: 数据库内置知识图谱嵌入模型训练引擎 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-10-19 - **Last Updated**: 2024-05-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DB4Trans ##### 介绍 基于“存算一体化”的思想,研究并设计了一种数据库内置知识图谱嵌入模型训练引擎,DB4Trans,以TransE模型为例,实现模型训练过程中对中间结果的快速访问和更新;提出了一种数据库与内存间的数据批量交换算法,利用数据库技术支持模型训练的工作流程,使用关系数据库完成对大规模知识图谱嵌入模型的训练与存储;在合成数据集和真实数据集上进行实验,验证了DB4Trans对于同时支持数据存储、模型训练与预测的有效性及良好的可扩展性。 ##### 项目架构 ``` home/{用户名}/ |--agensgraph/ 数据库源码 |--agensgraph2/ 编译安装路径 | |--bin/ | |--include/ | |--lib/ | |--share/ | |--python/ Python调用数据库接口的工具 https://github.com/bitnine-oss/agensgraph-python | |--db_cluster/ 数据库数据文件 |--data/ 实验数据集 | |--FB15k/ | |--FB15k237/ | |--WN18/ | |--WN18RR/ | |--FB86m/ |--code/ 工程代码 | |--KB2E/ 评测基线 | |--DB4Trans/ | |--script/ 数据库访问脚本 ``` ##### 运行环境 ``` 操作系统: CentOS Linux 7 (Core) 数据库: AgensGraph 2.5.0 编程语言: python 3.9 C++ (g++ (GCC) 4.8.5) ``` ##### 环境部署 ###### 1.基本编译环境 ```shell #1. 安装依赖(root权限) yum install -y gcc glibc glib-common readline readline-devel zlib zlib-devel flex bison git #2. 安装flex和bison yum install flex bison ``` ###### 2.数据库AgensGraph编译安装 ```shell #1. 下载源码 cd home/{用户名}/ git clone https://github.com/bitnine-oss/agensgraph.git #2. 编译安装源码 cd agensgraph/ ./configure --prefix=/home/{用户名}/agensgraph2 make install #3. 修改环境变量 vim ~/.bashrc export AG_HOME=/home/{用户名}/agensgraph2/ export LD_LIBRARY_PATH=$AG_HOME/lib:$LD_LIBRARY_PATH export PATH=$AG_HOME/bin:$PATH export AGDATA=/home/{用户名}/db_cluster export PGDATA=/home/{用户名}/db_cluster source ~/.bashrc #4. 数据库初始化与运行 agens --version initdb ag_ctl start createdb benetl agens benetl ``` ###### 3.Python3.9安装 ```shell #1. 通常软件安装目录 cd /usr/local #2. 安装依赖 yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel #3. python源码下载 wget http://npm.taobao.org/mirrors/python/3.9.0/Python-3.9.0.tgz tar -zxvf Python-3.9.0.tgz cd Python-3.9.0 #4. 配置安装位置 ./configure -prefix=/usr/local/python3.9 --enable-shared make -j8 make install #5. 在/usr/bin下建立命令行的链接 sudo ln -s /usr/local/python3.9/bin/python3.9 /usr/bin/python3.9 #为python3创建软连接 sudo ln -s /usr/local/python3.9/bin/pip3.9 /usr/bin/pip3.9 #为pip3创建软连接 sudo cp /usr/local/Python-3.9.0/libpython3.9.so.1.0 /usr/lib64 sudo cp libpython3.9.so.1.0 /usr/lib64 ``` ###### 4.安装Python调用数据库调用驱动 ```shell pip3 install -U pip pip3 install psycopg2-binary git clone https://github.com/bitnine-oss/agensgraph-python.git cd agensgraph-python sudo python3.9 setup.py install ``` ##### 数据预处理与导入 ```sql /*1. 创建训练数据、实体、关系的关系表*/ create table trainURI2id(starturi varchar(500), enduri varchar(500), relationuri varchar(500)); create table relation2id(uri varchar(500), id int); create table entity2id (uri varchar(500), id int); /*2. 以FB15k数据集为例,拷贝数据集文件到关系表中 */ COPY trainURI2id FROM '/home/{用户名}/data/FB15k/train.txt' (DELIMITER E'\t'); COPY entity2id(uri, id) FROM '/home/{用户名}/data/FB15k/entity2id.txt' (DELIMITER E'\t'); COPY relation2id(uri, id) FROM '/home/{用户名}/data/FB15k/relation2id.txt' (DELIMITER E'\t'); /*3. 向实体表和关系表中增加embedding列, 建立100维的向量 */ ALTER table relation2id add embedding double precision [100]; ALTER table entity2id add embedding double precision [100]; ``` ##### 使用说明 ```shell #1. 主文件目录 cd /home/{用户名}/code/ git clone git@gitee.com:AugustLpk/db4-trans.git cd /home/{用户名}/code/db4-trans/TransE #2. 编译文件 g++ Train_TransE.cpp -I /usr/local/python3.9/include/python3.9 -l python3.9 -o Train_TransE #3. 运行 ./Train_TransE ```