80 lines
3.7 KiB
SQL
80 lines
3.7 KiB
SQL
CREATE TABLE IF NOT EXISTS `la_ai_kb_document` (
|
|
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
|
|
`domain` varchar(32) NOT NULL DEFAULT '' COMMENT 'article/post/lottery/match',
|
|
`subtype` varchar(32) NOT NULL DEFAULT '' COMMENT 'article/post/draw_result/ai_history/event',
|
|
`source_id` bigint unsigned NOT NULL DEFAULT 0,
|
|
`title` varchar(255) NOT NULL DEFAULT '',
|
|
`summary` text NULL,
|
|
`canonical_text` longtext NULL,
|
|
`keywords` text NULL,
|
|
`metadata_json` json NULL,
|
|
`source_created_at` int unsigned NOT NULL DEFAULT 0,
|
|
`source_updated_at` int unsigned NOT NULL DEFAULT 0,
|
|
`content_hash` varchar(64) NOT NULL DEFAULT '',
|
|
`is_active` tinyint unsigned NOT NULL DEFAULT 1,
|
|
`create_time` int unsigned NOT NULL DEFAULT 0,
|
|
`update_time` int unsigned NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_domain_subtype_source` (`domain`, `subtype`, `source_id`),
|
|
KEY `idx_domain_active` (`domain`, `is_active`),
|
|
KEY `idx_source_updated` (`source_updated_at`),
|
|
FULLTEXT KEY `ft_doc_text` (`title`, `summary`, `canonical_text`, `keywords`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI知识库文档主表';
|
|
|
|
CREATE TABLE IF NOT EXISTS `la_ai_kb_chunk` (
|
|
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
|
|
`document_id` bigint unsigned NOT NULL DEFAULT 0,
|
|
`collection_name` varchar(32) NOT NULL DEFAULT 'global',
|
|
`chunk_index` int unsigned NOT NULL DEFAULT 0,
|
|
`chunk_text` mediumtext NULL,
|
|
`embedding_json` mediumtext NULL,
|
|
`embedding_model` varchar(100) NOT NULL DEFAULT '',
|
|
`embedding_dim` int unsigned NOT NULL DEFAULT 0,
|
|
`vector_norm` decimal(20,8) NOT NULL DEFAULT 0.00000000,
|
|
`keyword_text` text NULL,
|
|
`create_time` int unsigned NOT NULL DEFAULT 0,
|
|
`update_time` int unsigned NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_document_chunk` (`document_id`, `chunk_index`),
|
|
KEY `idx_document` (`document_id`),
|
|
KEY `idx_collection` (`collection_name`),
|
|
FULLTEXT KEY `ft_chunk_text` (`chunk_text`, `keyword_text`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI知识库切片表';
|
|
|
|
CREATE TABLE IF NOT EXISTS `la_ai_kb_sync_job` (
|
|
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
|
|
`domain` varchar(32) NOT NULL DEFAULT '',
|
|
`subtype` varchar(32) NOT NULL DEFAULT '',
|
|
`source_id` bigint unsigned NOT NULL DEFAULT 0,
|
|
`action` varchar(16) NOT NULL DEFAULT 'upsert',
|
|
`priority` int unsigned NOT NULL DEFAULT 100,
|
|
`status` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '0待处理1处理中2成功3失败',
|
|
`retry_count` int unsigned NOT NULL DEFAULT 0,
|
|
`error_msg` varchar(500) NOT NULL DEFAULT '',
|
|
`scheduled_at` int unsigned NOT NULL DEFAULT 0,
|
|
`processed_at` int unsigned NOT NULL DEFAULT 0,
|
|
`create_time` int unsigned NOT NULL DEFAULT 0,
|
|
`update_time` int unsigned NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_status_schedule` (`status`, `scheduled_at`),
|
|
KEY `idx_domain_source` (`domain`, `subtype`, `source_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI知识库同步任务表';
|
|
|
|
CREATE TABLE IF NOT EXISTS `la_ai_kb_query_log` (
|
|
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
|
|
`user_id` int unsigned NOT NULL DEFAULT 0,
|
|
`scene` varchar(50) NOT NULL DEFAULT '',
|
|
`ref_id` bigint unsigned NOT NULL DEFAULT 0,
|
|
`query_text` text NULL,
|
|
`filters_json` json NULL,
|
|
`hit_docs_json` json NULL,
|
|
`tokens_used` int unsigned NOT NULL DEFAULT 0,
|
|
`cost_ms` int unsigned NOT NULL DEFAULT 0,
|
|
`status` tinyint unsigned NOT NULL DEFAULT 1 COMMENT '1成功2失败',
|
|
`create_time` int unsigned NOT NULL DEFAULT 0,
|
|
`update_time` int unsigned NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_scene_ref` (`scene`, `ref_id`),
|
|
KEY `idx_user_time` (`user_id`, `create_time`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI知识库查询日志';
|