mirror of
https://gitcode.com/ageerle/ruoyi-ai.git
synced 2026-03-14 05:03:43 +08:00
fix(billing): 新增知识图谱构
1. 从非结构化文本中自动抽取实体和关系 2. 构建和管理知识图谱 3. 基于图谱的检索增强生成(GraphRAG) 4. 交互式图谱可视化
This commit is contained in:
274
script/sql/graph_menu.sql
Normal file
274
script/sql/graph_menu.sql
Normal file
@@ -0,0 +1,274 @@
|
||||
-- =============================================
|
||||
-- 知识图谱菜单配置SQL
|
||||
-- 执行此脚本后,图谱管理菜单将显示在系统中
|
||||
-- =============================================
|
||||
|
||||
-- 注意:请根据实际情况修改以下内容:
|
||||
-- 1. parent_id: 运营管理的菜单ID(需要先查询获取)
|
||||
-- 2. order_num: 菜单排序号
|
||||
-- 3. create_by: 创建人
|
||||
|
||||
-- =============================================
|
||||
-- 第一步:查询运营管理的菜单ID
|
||||
-- =============================================
|
||||
-- SELECT menu_id FROM sys_menu WHERE menu_name = '运营管理' AND parent_id = 0;
|
||||
-- 假设查询结果为: 2000(请根据实际情况修改)
|
||||
|
||||
SET @operator_menu_id = (SELECT menu_id FROM sys_menu WHERE menu_name = '运营管理' AND parent_id = 0 LIMIT 1);
|
||||
|
||||
-- =============================================
|
||||
-- 第二步:插入图谱管理目录
|
||||
-- =============================================
|
||||
INSERT INTO sys_menu (
|
||||
menu_id,
|
||||
menu_name,
|
||||
parent_id,
|
||||
order_num,
|
||||
path,
|
||||
component,
|
||||
is_frame,
|
||||
is_cache,
|
||||
menu_type,
|
||||
visible,
|
||||
status,
|
||||
perms,
|
||||
icon,
|
||||
create_dept,
|
||||
create_by,
|
||||
create_time,
|
||||
update_by,
|
||||
update_time,
|
||||
remark
|
||||
) VALUES (
|
||||
1950000000000000001, -- 菜单ID(使用雪花ID规则)
|
||||
'图谱管理', -- 菜单名称
|
||||
@operator_menu_id, -- 父菜单ID(运营管理)
|
||||
15, -- 排序号(在知识库管理之后)
|
||||
'graph', -- 路由地址
|
||||
NULL, -- 组件路径(目录为空)
|
||||
1, -- 是否外链(0否 1是)
|
||||
0, -- 是否缓存(0缓存 1不缓存)
|
||||
'M', -- 菜单类型(M目录 C菜单 F按钮)
|
||||
'0', -- 显示状态(0显示 1隐藏)
|
||||
'0', -- 菜单状态(0正常 1停用)
|
||||
NULL, -- 权限标识
|
||||
'carbon:chart-relationship', -- 菜单图标
|
||||
103, -- 创建部门
|
||||
1, -- 创建者(用户ID)
|
||||
NOW(), -- 创建时间
|
||||
1, -- 更新者(用户ID)
|
||||
NOW(), -- 更新时间
|
||||
'知识图谱管理目录' -- 备注
|
||||
);
|
||||
|
||||
-- 设置图谱管理目录ID
|
||||
SET @graph_menu_id = 1950000000000000001;
|
||||
|
||||
-- =============================================
|
||||
-- 第三步:插入图谱实例管理菜单
|
||||
-- =============================================
|
||||
INSERT INTO sys_menu (
|
||||
menu_id,
|
||||
menu_name,
|
||||
parent_id,
|
||||
order_num,
|
||||
path,
|
||||
component,
|
||||
is_frame,
|
||||
is_cache,
|
||||
menu_type,
|
||||
visible,
|
||||
status,
|
||||
perms,
|
||||
icon,
|
||||
create_dept,
|
||||
create_by,
|
||||
create_time,
|
||||
update_by,
|
||||
update_time,
|
||||
remark
|
||||
) VALUES (
|
||||
1950000000000000002, -- 菜单ID
|
||||
'图谱实例', -- 菜单名称
|
||||
@graph_menu_id, -- 父菜单ID(图谱管理)
|
||||
1, -- 排序号
|
||||
'graphInstance', -- 路由地址
|
||||
'operator/graphInstance/index', -- 组件路径
|
||||
1, -- 是否外链
|
||||
0, -- 是否缓存
|
||||
'C', -- 菜单类型
|
||||
'0', -- 显示状态
|
||||
'0', -- 菜单状态
|
||||
'operator:graph:list', -- 权限标识
|
||||
'ant-design:node-index-outlined', -- 菜单图标
|
||||
103, -- 创建部门
|
||||
1, -- 创建者(用户ID)
|
||||
NOW(), -- 创建时间
|
||||
1, -- 更新者(用户ID)
|
||||
NOW(), -- 更新时间
|
||||
'图谱实例管理菜单' -- 备注
|
||||
);
|
||||
|
||||
-- 设置图谱实例菜单ID
|
||||
SET @graph_instance_menu_id = 1950000000000000002;
|
||||
|
||||
-- =============================================
|
||||
-- 第四步:插入图谱实例管理的按钮权限
|
||||
-- =============================================
|
||||
|
||||
-- 查询按钮
|
||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, remark)
|
||||
VALUES (1950000000000000003, '图谱实例查询', @graph_instance_menu_id, 1, '#', '', 1, 0, 'F', '0', '0', 'operator:graph:query', '#', 103, 1, NOW(), '');
|
||||
|
||||
-- 新增按钮
|
||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, remark)
|
||||
VALUES (1950000000000000004, '图谱实例新增', @graph_instance_menu_id, 2, '#', '', 1, 0, 'F', '0', '0', 'operator:graph:add', '#', 103, 1, NOW(), '');
|
||||
|
||||
-- 编辑按钮
|
||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, remark)
|
||||
VALUES (1950000000000000005, '图谱实例编辑', @graph_instance_menu_id, 3, '#', '', 1, 0, 'F', '0', '0', 'operator:graph:edit', '#', 103, 1, NOW(), '');
|
||||
|
||||
-- 删除按钮
|
||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, remark)
|
||||
VALUES (1950000000000000006, '图谱实例删除', @graph_instance_menu_id, 4, '#', '', 1, 0, 'F', '0', '0', 'operator:graph:remove', '#', 103, 1, NOW(), '');
|
||||
|
||||
-- 导出按钮
|
||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, remark)
|
||||
VALUES (1950000000000000007, '图谱实例导出', @graph_instance_menu_id, 5, '#', '', 1, 0, 'F', '0', '0', 'operator:graph:export', '#', 103, 1, NOW(), '');
|
||||
|
||||
-- 构建按钮
|
||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, remark)
|
||||
VALUES (1950000000000000008, '图谱构建', @graph_instance_menu_id, 6, '#', '', 1, 0, 'F', '0', '0', 'operator:graph:build', '#', 103, 1, NOW(), '');
|
||||
|
||||
-- 重建按钮
|
||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, remark)
|
||||
VALUES (1950000000000000009, '图谱重建', @graph_instance_menu_id, 7, '#', '', 1, 0, 'F', '0', '0', 'operator:graph:rebuild', '#', 103, 1, NOW(), '');
|
||||
|
||||
-- =============================================
|
||||
-- 第五步:插入图谱可视化菜单
|
||||
-- =============================================
|
||||
INSERT INTO sys_menu (
|
||||
menu_id,
|
||||
menu_name,
|
||||
parent_id,
|
||||
order_num,
|
||||
path,
|
||||
component,
|
||||
is_frame,
|
||||
is_cache,
|
||||
menu_type,
|
||||
visible,
|
||||
status,
|
||||
perms,
|
||||
icon,
|
||||
create_dept,
|
||||
create_by,
|
||||
create_time,
|
||||
update_by,
|
||||
update_time,
|
||||
remark
|
||||
) VALUES (
|
||||
1950000000000000010, -- 菜单ID
|
||||
'图谱可视化', -- 菜单名称
|
||||
@graph_menu_id, -- 父菜单ID(图谱管理)
|
||||
2, -- 排序号
|
||||
'graphVisualization', -- 路由地址
|
||||
'operator/graphVisualization/index', -- 组件路径
|
||||
1, -- 是否外链
|
||||
0, -- 是否缓存
|
||||
'C', -- 菜单类型
|
||||
'0', -- 显示状态
|
||||
'0', -- 菜单状态
|
||||
'operator:graph:view', -- 权限标识
|
||||
'carbon:chart-network', -- 菜单图标
|
||||
103, -- 创建部门
|
||||
1, -- 创建者(用户ID)
|
||||
NOW(), -- 创建时间
|
||||
1, -- 更新者(用户ID)
|
||||
NOW(), -- 更新时间
|
||||
'图谱可视化菜单' -- 备注
|
||||
);
|
||||
|
||||
-- =============================================
|
||||
-- 第六步:插入图谱检索测试菜单
|
||||
-- =============================================
|
||||
INSERT INTO sys_menu (
|
||||
menu_id,
|
||||
menu_name,
|
||||
parent_id,
|
||||
order_num,
|
||||
path,
|
||||
component,
|
||||
is_frame,
|
||||
is_cache,
|
||||
menu_type,
|
||||
visible,
|
||||
status,
|
||||
perms,
|
||||
icon,
|
||||
create_dept,
|
||||
create_by,
|
||||
create_time,
|
||||
update_by,
|
||||
update_time,
|
||||
remark
|
||||
) VALUES (
|
||||
1950000000000000011, -- 菜单ID
|
||||
'图谱检索测试', -- 菜单名称
|
||||
@graph_menu_id, -- 父菜单ID(图谱管理)
|
||||
3, -- 排序号
|
||||
'graphRAG', -- 路由地址
|
||||
'operator/graphRAG/index', -- 组件路径
|
||||
1, -- 是否外链
|
||||
0, -- 是否缓存
|
||||
'C', -- 菜单类型
|
||||
'0', -- 显示状态
|
||||
'0', -- 菜单状态
|
||||
'operator:graph:retrieve', -- 权限标识
|
||||
'carbon:search-advanced', -- 菜单图标
|
||||
103, -- 创建部门
|
||||
1, -- 创建者(用户ID)
|
||||
NOW(), -- 创建时间
|
||||
1, -- 更新者(用户ID)
|
||||
NOW(), -- 更新时间
|
||||
'图谱检索测试菜单' -- 备注
|
||||
);
|
||||
|
||||
-- 设置图谱检索测试菜单ID
|
||||
SET @graph_rag_menu_id = 1950000000000000011;
|
||||
|
||||
-- =============================================
|
||||
-- 第七步:插入图谱检索测试的按钮权限
|
||||
-- =============================================
|
||||
|
||||
-- 实体抽取按钮
|
||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, remark)
|
||||
VALUES (1950000000000000012, '实体抽取', @graph_rag_menu_id, 1, '#', '', 1, 0, 'F', '0', '0', 'operator:graph:extract', '#', 103, 1, NOW(), '');
|
||||
|
||||
-- 文本入库按钮
|
||||
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, remark)
|
||||
VALUES (1950000000000000013, '文本入库', @graph_rag_menu_id, 2, '#', '', 1, 0, 'F', '0', '0', 'operator:graph:ingest', '#', 103, 1, NOW(), '');
|
||||
|
||||
-- =============================================
|
||||
-- 完成提示
|
||||
-- =============================================
|
||||
SELECT '图谱管理菜单配置完成!' AS message;
|
||||
SELECT '请刷新浏览器页面,菜单将显示在"运营管理"下' AS tip;
|
||||
|
||||
-- =============================================
|
||||
-- 查询结果验证
|
||||
-- =============================================
|
||||
SELECT
|
||||
m1.menu_name AS '一级菜单',
|
||||
m2.menu_name AS '二级菜单',
|
||||
m3.menu_name AS '三级菜单/按钮',
|
||||
m3.perms AS '权限标识',
|
||||
m3.path AS '路由地址',
|
||||
m3.component AS '组件路径'
|
||||
FROM sys_menu m1
|
||||
LEFT JOIN sys_menu m2 ON m2.parent_id = m1.menu_id
|
||||
LEFT JOIN sys_menu m3 ON m3.parent_id = m2.menu_id
|
||||
WHERE m1.menu_name = '运营管理'
|
||||
AND m2.menu_name = '图谱管理'
|
||||
ORDER BY m2.order_num, m3.order_num;
|
||||
|
||||
204
script/sql/knowledge_graph_schema.sql
Normal file
204
script/sql/knowledge_graph_schema.sql
Normal file
@@ -0,0 +1,204 @@
|
||||
-- ========================================
|
||||
-- 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
|
||||
-- ----------------------------
|
||||
28
script/sql/knowledge_graph_segment.sql
Normal file
28
script/sql/knowledge_graph_segment.sql
Normal file
@@ -0,0 +1,28 @@
|
||||
-- 知识图谱片段表
|
||||
-- 用于记录从文档中抽取图谱时的文本片段信息
|
||||
CREATE TABLE IF NOT EXISTS `knowledge_base_graph_segment` (
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`uuid` VARCHAR(64) NOT NULL COMMENT '片段UUID',
|
||||
`kb_uuid` VARCHAR(64) NOT NULL COMMENT '知识库UUID',
|
||||
`kb_item_uuid` VARCHAR(64) COMMENT '知识库条目UUID',
|
||||
`doc_uuid` VARCHAR(64) COMMENT '文档UUID',
|
||||
`segment_text` TEXT COMMENT '片段文本内容',
|
||||
`chunk_index` INT DEFAULT 0 COMMENT '片段索引(第几个片段)',
|
||||
`total_chunks` INT DEFAULT 1 COMMENT '总片段数',
|
||||
`extraction_status` TINYINT DEFAULT 0 COMMENT '抽取状态:0-待处理 1-处理中 2-已完成 3-失败',
|
||||
`entity_count` INT DEFAULT 0 COMMENT '抽取的实体数量',
|
||||
`relation_count` INT DEFAULT 0 COMMENT '抽取的关系数量',
|
||||
`token_used` INT DEFAULT 0 COMMENT '消耗的token数',
|
||||
`error_message` VARCHAR(500) COMMENT '错误信息',
|
||||
`user_id` BIGINT COMMENT '用户ID',
|
||||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`remark` VARCHAR(500) COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_uuid` (`uuid`),
|
||||
KEY `idx_kb_uuid` (`kb_uuid`),
|
||||
KEY `idx_kb_item_uuid` (`kb_item_uuid`),
|
||||
KEY `idx_doc_uuid` (`doc_uuid`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_create_time` (`create_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识图谱片段表';
|
||||
35
script/sql/update/add_graph_build_task_fields.sql
Normal file
35
script/sql/update/add_graph_build_task_fields.sql
Normal file
@@ -0,0 +1,35 @@
|
||||
-- ========================================
|
||||
-- 为 graph_build_task 表添加缺失字段
|
||||
-- ========================================
|
||||
-- 执行日期: 2025-10-11
|
||||
-- 说明: 添加 create_dept 和 update_by 字段以符合 MyBatis-Plus BaseEntity 规范
|
||||
-- ========================================
|
||||
|
||||
-- 检查表是否存在
|
||||
SELECT 'Adding fields to graph_build_task table...' AS status;
|
||||
|
||||
-- 添加 create_dept 字段(如果不存在)
|
||||
ALTER TABLE `graph_build_task`
|
||||
ADD COLUMN `create_dept` BIGINT(20) NULL COMMENT '创建部门' AFTER `end_time`;
|
||||
|
||||
-- 添加 update_by 字段(如果已存在 create_by 但缺少 update_by)
|
||||
-- 注意:update_by 应该在 create_time 之前
|
||||
ALTER TABLE `graph_build_task`
|
||||
ADD COLUMN `update_by` VARCHAR(64) DEFAULT '' COMMENT '更新者' AFTER `create_by`;
|
||||
|
||||
-- 验证字段是否添加成功
|
||||
SELECT 'Fields added successfully!' AS status;
|
||||
|
||||
-- 查看表结构
|
||||
DESCRIBE `graph_build_task`;
|
||||
|
||||
-- ========================================
|
||||
-- 说明
|
||||
-- ========================================
|
||||
-- create_dept: 创建部门ID,与创建者关联
|
||||
-- update_by: 更新者用户名或ID
|
||||
--
|
||||
-- 这两个字段是 MyBatis-Plus BaseEntity 的标准字段
|
||||
-- 添加后可以正常使用自动填充功能
|
||||
-- ========================================
|
||||
|
||||
16
script/sql/update/add_graph_instance_fields.sql
Normal file
16
script/sql/update/add_graph_instance_fields.sql
Normal file
@@ -0,0 +1,16 @@
|
||||
-- 为 knowledge_graph_instance 表添加新字段
|
||||
-- 用于支持图谱实例管理的扩展功能
|
||||
-- 执行日期: 2025-01-11
|
||||
|
||||
-- 添加 LLM 模型名称字段
|
||||
ALTER TABLE knowledge_graph_instance
|
||||
ADD COLUMN model_name VARCHAR(100) DEFAULT NULL COMMENT 'LLM模型名称' AFTER config;
|
||||
|
||||
-- 添加实体类型字段
|
||||
ALTER TABLE knowledge_graph_instance
|
||||
ADD COLUMN entity_types VARCHAR(500) DEFAULT NULL COMMENT '实体类型(逗号分隔)' AFTER model_name;
|
||||
|
||||
-- 添加关系类型字段
|
||||
ALTER TABLE knowledge_graph_instance
|
||||
ADD COLUMN relation_types VARCHAR(500) DEFAULT NULL COMMENT '关系类型(逗号分隔)' AFTER entity_types;
|
||||
|
||||
115
script/sql/update/fix_graph_visualization_menu.sql
Normal file
115
script/sql/update/fix_graph_visualization_menu.sql
Normal file
@@ -0,0 +1,115 @@
|
||||
-- =============================================
|
||||
-- 修复图谱可视化菜单配置
|
||||
-- 日期: 2025-10-13
|
||||
-- 说明: 确保图谱可视化菜单正确配置,支持独立访问
|
||||
-- =============================================
|
||||
|
||||
-- 1. 检查图谱可视化菜单是否存在
|
||||
SELECT
|
||||
menu_id,
|
||||
menu_name,
|
||||
parent_id,
|
||||
path,
|
||||
component,
|
||||
visible,
|
||||
status,
|
||||
menu_type
|
||||
FROM sys_menu
|
||||
WHERE menu_name = '图谱可视化' OR path = 'graphVisualization';
|
||||
|
||||
-- 2. 如果菜单不存在,插入菜单
|
||||
-- 注意:如果已存在,此语句会因主键冲突而失败,这是正常的
|
||||
INSERT INTO sys_menu (
|
||||
menu_id,
|
||||
menu_name,
|
||||
parent_id,
|
||||
order_num,
|
||||
path,
|
||||
component,
|
||||
is_frame,
|
||||
is_cache,
|
||||
menu_type,
|
||||
visible,
|
||||
status,
|
||||
perms,
|
||||
icon,
|
||||
create_dept,
|
||||
create_by,
|
||||
create_time,
|
||||
update_by,
|
||||
update_time,
|
||||
remark
|
||||
)
|
||||
SELECT
|
||||
1950000000000000010, -- 菜单ID
|
||||
'图谱可视化', -- 菜单名称
|
||||
(SELECT menu_id FROM sys_menu WHERE menu_name = '图谱管理' LIMIT 1), -- 父菜单ID
|
||||
2, -- 排序号
|
||||
'graphVisualization', -- 路由地址
|
||||
'operator/graphVisualization/index', -- 组件路径
|
||||
1, -- 是否外链(1=否)
|
||||
0, -- 是否缓存(0=缓存)
|
||||
'C', -- 菜单类型(C=菜单)
|
||||
'0', -- 显示状态(0=显示)
|
||||
'0', -- 菜单状态(0=正常)
|
||||
'operator:graph:view', -- 权限标识
|
||||
'carbon:chart-network', -- 菜单图标
|
||||
103, -- 创建部门
|
||||
1, -- 创建者(用户ID)
|
||||
NOW(), -- 创建时间
|
||||
1, -- 更新者(用户ID)
|
||||
NOW(), -- 更新时间
|
||||
'图谱可视化菜单' -- 备注
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_menu WHERE menu_id = 1950000000000000010
|
||||
);
|
||||
|
||||
-- 3. 更新现有菜单(如果已存在)
|
||||
UPDATE sys_menu
|
||||
SET
|
||||
path = 'graphVisualization',
|
||||
component = 'operator/graphVisualization/index',
|
||||
visible = '0',
|
||||
status = '0',
|
||||
menu_type = 'C',
|
||||
is_frame = 1,
|
||||
is_cache = 0,
|
||||
update_by = 1,
|
||||
update_time = NOW()
|
||||
WHERE menu_name = '图谱可视化';
|
||||
|
||||
-- 4. 验证菜单配置
|
||||
SELECT
|
||||
menu_id,
|
||||
menu_name,
|
||||
parent_id,
|
||||
path,
|
||||
component,
|
||||
visible AS '显示状态(0=显示)',
|
||||
status AS '菜单状态(0=正常)',
|
||||
menu_type AS '菜单类型(C=菜单)',
|
||||
perms AS '权限标识'
|
||||
FROM sys_menu
|
||||
WHERE menu_name = '图谱可视化';
|
||||
|
||||
-- 5. 检查父菜单
|
||||
SELECT
|
||||
m1.menu_id,
|
||||
m1.menu_name,
|
||||
m1.path,
|
||||
m2.menu_name AS parent_name,
|
||||
m2.path AS parent_path
|
||||
FROM sys_menu m1
|
||||
LEFT JOIN sys_menu m2 ON m1.parent_id = m2.menu_id
|
||||
WHERE m1.menu_name = '图谱可视化';
|
||||
|
||||
-- =============================================
|
||||
-- 执行说明
|
||||
-- =============================================
|
||||
-- 1. 在 MySQL 客户端或 Navicat 中执行此 SQL
|
||||
-- 2. 检查输出,确认菜单配置正确
|
||||
-- 3. 重新登录系统以刷新菜单权限
|
||||
-- 4. 访问 http://localhost:5666/#/operator/graphVisualization?id=xxx&knowledgeId=xxx
|
||||
-- =============================================
|
||||
|
||||
Reference in New Issue
Block a user