Files
ruoyi-ai/script/sql/knowledge_graph_schema.sql
Administrator 3610899f2b fix(billing): 新增知识图谱构
1. 从非结构化文本中自动抽取实体和关系
2. 构建和管理知识图谱
3. 基于图谱的检索增强生成(GraphRAG)
4. 交互式图谱可视化
2025-10-23 09:48:49 +08:00

205 lines
11 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- ========================================
-- RuoYi AI 知识图谱数据库表结构
-- ========================================
-- 创建时间: 2025-09-30
-- 说明: 知识图谱功能的MySQL表结构
-- ========================================
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- 1. 知识图谱实例表
-- ----------------------------
DROP TABLE IF EXISTS `knowledge_graph_instance`;
CREATE TABLE `knowledge_graph_instance` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`graph_uuid` VARCHAR(32) NOT NULL COMMENT '图谱UUID',
`knowledge_id` VARCHAR(50) NOT NULL COMMENT '关联knowledge_info.kid',
`graph_name` VARCHAR(100) NOT NULL COMMENT '图谱名称',
`graph_status` TINYINT(2) DEFAULT 10 COMMENT '构建状态10构建中、20已完成、30失败',
`node_count` INT(11) DEFAULT 0 COMMENT '节点数量',
`relationship_count` INT(11) DEFAULT 0 COMMENT '关系数量',
`config` JSON COMMENT '图谱配置(JSON格式)',
`model_name` VARCHAR(100) DEFAULT NULL COMMENT 'LLM模型名称',
`entity_types` VARCHAR(500) DEFAULT NULL COMMENT '实体类型(逗号分隔)',
`relation_types` VARCHAR(500) DEFAULT NULL COMMENT '关系类型(逗号分隔)',
`error_message` TEXT COMMENT '错误信息',
`create_dept` BIGINT(20) DEFAULT NULL COMMENT '创建部门',
`create_by` VARCHAR(64) DEFAULT '' COMMENT '创建者',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT '' COMMENT '更新者',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
`del_flag` CHAR(1) DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_graph_uuid` (`graph_uuid`) USING BTREE,
KEY `idx_knowledge_id` (`knowledge_id`) USING BTREE,
KEY `idx_graph_status` (`graph_status`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识图谱实例表';
-- ----------------------------
-- 2. 实体类型定义表
-- ----------------------------
DROP TABLE IF EXISTS `graph_entity_type`;
CREATE TABLE `graph_entity_type` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`type_name` VARCHAR(50) NOT NULL COMMENT '实体类型名称',
`type_code` VARCHAR(20) NOT NULL COMMENT '类型编码',
`description` VARCHAR(200) DEFAULT NULL COMMENT '描述',
`color` VARCHAR(10) DEFAULT '#1890ff' COMMENT '可视化颜色',
`icon` VARCHAR(50) DEFAULT NULL COMMENT '图标',
`sort` INT(4) DEFAULT 0 COMMENT '显示顺序',
`is_enable` TINYINT(1) DEFAULT 1 COMMENT '是否启用0否 1是',
`create_by` VARCHAR(64) DEFAULT '' COMMENT '创建者',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT '' COMMENT '更新者',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_type_code` (`type_code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='图谱实体类型定义表';
-- ----------------------------
-- 3. 关系类型定义表
-- ----------------------------
DROP TABLE IF EXISTS `graph_relation_type`;
CREATE TABLE `graph_relation_type` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`relation_name` VARCHAR(50) NOT NULL COMMENT '关系名称',
`relation_code` VARCHAR(20) NOT NULL COMMENT '关系编码',
`description` VARCHAR(200) DEFAULT NULL COMMENT '描述',
`direction` TINYINT(1) DEFAULT 1 COMMENT '关系方向0双向、1单向',
`style` JSON COMMENT '可视化样式(JSON格式)',
`sort` INT(4) DEFAULT 0 COMMENT '显示顺序',
`is_enable` TINYINT(1) DEFAULT 1 COMMENT '是否启用0否 1是',
`create_by` VARCHAR(64) DEFAULT '' COMMENT '创建者',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT '' COMMENT '更新者',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_relation_code` (`relation_code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='图谱关系类型定义表';
-- ----------------------------
-- 4. 图谱构建任务表
-- ----------------------------
DROP TABLE IF EXISTS `graph_build_task`;
CREATE TABLE `graph_build_task` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`task_uuid` VARCHAR(32) NOT NULL COMMENT '任务UUID',
`graph_uuid` VARCHAR(32) NOT NULL COMMENT '图谱UUID',
`knowledge_id` VARCHAR(50) NOT NULL COMMENT '知识库ID',
`doc_id` VARCHAR(50) DEFAULT NULL COMMENT '文档ID可选null表示全量构建',
`task_type` TINYINT(2) DEFAULT 1 COMMENT '任务类型1全量构建、2增量更新、3重建',
`task_status` TINYINT(2) DEFAULT 1 COMMENT '任务状态1待执行、2执行中、3成功、4失败',
`progress` INT(3) DEFAULT 0 COMMENT '进度百分比0-100',
`total_docs` INT(11) DEFAULT 0 COMMENT '总文档数',
`processed_docs` INT(11) DEFAULT 0 COMMENT '已处理文档数',
`extracted_entities` INT(11) DEFAULT 0 COMMENT '提取的实体数',
`extracted_relations` INT(11) DEFAULT 0 COMMENT '提取的关系数',
`error_message` TEXT COMMENT '错误信息',
`result_summary` JSON COMMENT '结果摘要(JSON格式)',
`start_time` DATETIME DEFAULT NULL COMMENT '开始时间',
`end_time` DATETIME DEFAULT NULL COMMENT '结束时间',
`create_dept` BIGINT(20) DEFAULT NULL COMMENT '创建部门',
`create_by` VARCHAR(64) DEFAULT '' COMMENT '创建者',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT '' COMMENT '更新者',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_task_uuid` (`task_uuid`) USING BTREE,
KEY `idx_graph_uuid` (`graph_uuid`) USING BTREE,
KEY `idx_knowledge_id` (`knowledge_id`) USING BTREE,
KEY `idx_task_status` (`task_status`) USING BTREE,
KEY `idx_create_time` (`create_time`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='图谱构建任务表';
-- ----------------------------
-- 5. 图谱查询历史表
-- ----------------------------
DROP TABLE IF EXISTS `graph_query_history`;
CREATE TABLE `graph_query_history` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`query_uuid` VARCHAR(32) NOT NULL COMMENT '查询UUID',
`user_id` BIGINT(20) NOT NULL COMMENT '用户ID',
`knowledge_id` VARCHAR(50) DEFAULT NULL COMMENT '知识库ID',
`graph_uuid` VARCHAR(32) DEFAULT NULL COMMENT '图谱UUID',
`query_text` TEXT NOT NULL COMMENT '查询文本',
`query_type` TINYINT(2) DEFAULT 1 COMMENT '查询类型1实体查询、2关系查询、3路径查询、4混合查询',
`cypher_query` TEXT COMMENT '生成的Cypher查询',
`result_count` INT(11) DEFAULT 0 COMMENT '结果数量',
`response_time` INT(11) DEFAULT 0 COMMENT '响应时间(ms)',
`is_success` TINYINT(1) DEFAULT 1 COMMENT '是否成功0否 1是',
`error_message` TEXT COMMENT '错误信息',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_query_uuid` (`query_uuid`) USING BTREE,
KEY `idx_user_id` (`user_id`) USING BTREE,
KEY `idx_knowledge_id` (`knowledge_id`) USING BTREE,
KEY `idx_create_time` (`create_time`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='图谱查询历史表';
-- ----------------------------
-- 6. 图谱统计信息表
-- ----------------------------
DROP TABLE IF EXISTS `graph_statistics`;
CREATE TABLE `graph_statistics` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`graph_uuid` VARCHAR(32) NOT NULL COMMENT '图谱UUID',
`stat_date` DATE NOT NULL COMMENT '统计日期',
`total_nodes` INT(11) DEFAULT 0 COMMENT '总节点数',
`total_relationships` INT(11) DEFAULT 0 COMMENT '总关系数',
`node_type_distribution` JSON COMMENT '节点类型分布(JSON格式)',
`relation_type_distribution` JSON COMMENT '关系类型分布(JSON格式)',
`query_count` INT(11) DEFAULT 0 COMMENT '查询次数',
`avg_query_time` INT(11) DEFAULT 0 COMMENT '平均查询时间(ms)',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_graph_date` (`graph_uuid`, `stat_date`) USING BTREE,
KEY `idx_stat_date` (`stat_date`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='图谱统计信息表';
-- ----------------------------
-- 初始化基础数据:实体类型
-- ----------------------------
INSERT INTO `graph_entity_type` (`type_name`, `type_code`, `description`, `color`, `icon`, `sort`) VALUES
('人物', 'PERSON', '人物实体,包括真实人物和虚拟角色', '#1890ff', 'user', 1),
('机构', 'ORGANIZATION', '组织机构,包括公司、政府机构等', '#52c41a', 'bank', 2),
('地点', 'LOCATION', '地理位置,包括国家、城市、地址等', '#fa8c16', 'environment', 3),
('概念', 'CONCEPT', '抽象概念,包括理论、方法等', '#722ed1', 'bulb', 4),
('事件', 'EVENT', '事件记录,包括历史事件、活动等', '#eb2f96', 'calendar', 5),
('产品', 'PRODUCT', '产品或服务', '#13c2c2', 'shopping', 6),
('技术', 'TECHNOLOGY', '技术或工具', '#2f54eb', 'tool', 7),
('文档', 'DOCUMENT', '文档或资料', '#faad14', 'file-text', 8);
-- ----------------------------
-- 初始化基础数据:关系类型
-- ----------------------------
INSERT INTO `graph_relation_type` (`relation_name`, `relation_code`, `description`, `direction`, `sort`) VALUES
('属于', 'BELONGS_TO', '隶属关系,表示从属或归属', 1, 1),
('位于', 'LOCATED_IN', '地理位置关系', 1, 2),
('相关', 'RELATED_TO', '一般关联关系', 0, 3),
('导致', 'CAUSES', '因果关系', 1, 4),
('包含', 'CONTAINS', '包含关系', 1, 5),
('提及', 'MENTIONS', '文档提及实体的关系', 1, 6),
('部分', 'PART_OF', '部分关系', 1, 7),
('实例', 'INSTANCE_OF', '实例关系', 1, 8),
('相似', 'SIMILAR_TO', '相似关系', 0, 9),
('前序', 'PRECEDES', '时序关系', 1, 10),
('工作于', 'WORKS_AT', '人物与机构的工作关系', 1, 11),
('创建', 'CREATED_BY', '创建关系', 1, 12),
('使用', 'USES', '使用关系', 1, 13);
SET FOREIGN_KEY_CHECKS = 1;
-- ----------------------------
-- 完成
-- ----------------------------
-- 知识图谱数据库表结构创建完成
-- 请执行以下命令应用到数据库:
-- mysql -u root -p ruoyi-ai < knowledge_graph_schema.sql
-- ----------------------------