-- AI 知识库(RAG)建表脚本(MySQL) -- 说明:本项目使用 MyBatis-Plus 默认命名规则(AiKbDocument -> ai_kb_document)。 CREATE TABLE IF NOT EXISTS `ai_kb_document` ( `document_id` INT NOT NULL AUTO_INCREMENT COMMENT '文档ID', `title` VARCHAR(255) NULL COMMENT '标题', `source_type` VARCHAR(32) NULL COMMENT '来源类型:upload/cms', `source_id` INT NULL COMMENT '来源ID(如 cms.article_id)', `source_ref` VARCHAR(255) NULL COMMENT '来源引用(如文件名、文章 code)', `content_hash` CHAR(64) NULL COMMENT '内容hash(SHA-256),用于增量同步', `status` TINYINT NULL DEFAULT 0 COMMENT '状态', `deleted` TINYINT NULL DEFAULT 0 COMMENT '逻辑删除:0否1是', `tenant_id` INT NOT NULL COMMENT '租户ID', `update_time` DATETIME NULL COMMENT '更新时间', `create_time` DATETIME NULL COMMENT '创建时间', PRIMARY KEY (`document_id`), KEY `idx_ai_kb_document_tenant` (`tenant_id`), KEY `idx_ai_kb_document_source` (`tenant_id`, `source_type`, `source_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI 知识库文档'; CREATE TABLE IF NOT EXISTS `ai_kb_chunk` ( `id` INT NOT NULL AUTO_INCREMENT COMMENT '自增ID', `document_id` INT NOT NULL COMMENT '文档ID', `chunk_id` VARCHAR(64) NOT NULL COMMENT 'chunk 唯一ID(用于引用)', `chunk_index` INT NULL COMMENT 'chunk 序号', `title` VARCHAR(255) NULL COMMENT '标题(冗余,便于展示)', `content` LONGTEXT NULL COMMENT 'chunk 文本', `content_hash` CHAR(64) NULL COMMENT 'chunk 内容hash', `embedding` LONGTEXT NULL COMMENT 'embedding(JSON数组)', `embedding_norm` DOUBLE NULL COMMENT 'embedding L2 范数', `deleted` TINYINT NULL DEFAULT 0 COMMENT '逻辑删除:0否1是', `tenant_id` INT NOT NULL COMMENT '租户ID', `create_time` DATETIME NULL COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_ai_kb_chunk_chunk_id` (`chunk_id`), KEY `idx_ai_kb_chunk_tenant` (`tenant_id`), KEY `idx_ai_kb_chunk_document` (`document_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI 知识库 chunk';