sql更新

This commit is contained in:
2025-12-02 14:59:34 +08:00
parent 94718edd6b
commit 2a9e624ba9
18 changed files with 1542 additions and 937 deletions

View File

@@ -8,7 +8,8 @@ CREATE SCHEMA IF NOT EXISTS knowledge;
DROP TABLE IF EXISTS knowledge.tb_knowledge_base CASCADE;
CREATE TABLE knowledge.tb_knowledge_base (
optsn VARCHAR(50) NOT NULL, -- 流水号
kb_id VARCHAR(50) NOT NULL, -- 知识库ID
agent_id VARCHAR(50) NOT NULL, -- 智能体id
knowledge_id VARCHAR(50) NOT NULL, -- 知识库ID
name VARCHAR(255) NOT NULL, -- 知识库名称
kb_type VARCHAR(50) NOT NULL, -- 知识库类型bidding-招投标/customer_service-客服/internal-内部协同
access_level VARCHAR(20) NOT NULL DEFAULT 'private', -- 访问级别public-公开/private-私有/internal-内部
@@ -16,6 +17,7 @@ CREATE TABLE knowledge.tb_knowledge_base (
storage_path VARCHAR(500), -- 存储路径
version VARCHAR(20) DEFAULT '1.0', -- 当前版本号
config JSONB DEFAULT NULL, -- 知识库配置JSON格式索引配置、检索参数等
service_type VARCHAR(50), -- 服务类型bidding/customer_service/internal冗余kb_type便于查询
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
status VARCHAR(20) NOT NULL DEFAULT 'active', -- 状态active-激活/inactive-停用/archived-归档
creator VARCHAR(50) DEFAULT NULL, -- 创建者
@@ -24,15 +26,17 @@ CREATE TABLE knowledge.tb_knowledge_base (
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
PRIMARY KEY (kb_id),
PRIMARY KEY (knowledge_id),
UNIQUE (optsn)
);
CREATE INDEX idx_kb_type ON knowledge.tb_knowledge_base(kb_type) WHERE deleted = false;
CREATE INDEX idx_kb_service ON knowledge.tb_knowledge_base(service_type) WHERE deleted = false;
CREATE INDEX idx_kb_dept_path ON knowledge.tb_knowledge_base(dept_path) WHERE deleted = false;
COMMENT ON TABLE knowledge.tb_knowledge_base IS '知识库表';
COMMENT ON COLUMN knowledge.tb_knowledge_base.kb_type IS '知识库类型bidding-招投标/customer_service-客服/internal-内部协同';
COMMENT ON COLUMN knowledge.tb_knowledge_base.service_type IS '服务类型冗余存储便于快速过滤与kb_type保持一致';
COMMENT ON COLUMN knowledge.tb_knowledge_base.access_level IS '访问级别public-公开/private-私有/internal-内部';
-- 知识文档表
@@ -40,7 +44,7 @@ DROP TABLE IF EXISTS knowledge.tb_knowledge_document CASCADE;
CREATE TABLE knowledge.tb_knowledge_document (
optsn VARCHAR(50) NOT NULL, -- 流水号
doc_id VARCHAR(50) NOT NULL, -- 文档ID
kb_id VARCHAR(50) NOT NULL, -- 所属知识库ID
knowledge_id VARCHAR(50) NOT NULL, -- 所属知识库ID
title VARCHAR(500) NOT NULL, -- 文档标题
doc_type VARCHAR(50) NOT NULL, -- 文档类型text-文本/pdf/word/excel/image/video
category VARCHAR(100), -- 文档分类(自动或手动分类)
@@ -50,8 +54,9 @@ CREATE TABLE knowledge.tb_knowledge_document (
file_path VARCHAR(500), -- 文件路径
file_size BIGINT, -- 文件大小(字节)
mime_type VARCHAR(100), -- MIME类型
version VARCHAR(20) DEFAULT '1.0', -- 文档版本号
parent_doc_id VARCHAR(50), -- 文档ID用于版本管理
version INTEGER DEFAULT 1, -- 版本号(自动递增)
root_doc_id VARCHAR(50), -- 文档ID版本组标识
is_current BOOLEAN DEFAULT true, -- 是否当前使用的版本
tags TEXT[], -- 文档标签数组
keywords TEXT[], -- 关键词数组AI提取
embedding_status VARCHAR(20) DEFAULT 'pending', -- 向量化状态pending-待处理/processing-处理中/completed-完成/failed-失败
@@ -59,6 +64,7 @@ CREATE TABLE knowledge.tb_knowledge_document (
chunk_count INTEGER DEFAULT 0, -- 切片数量
metadata JSONB DEFAULT NULL, -- 文档元数据JSON格式
source_url VARCHAR(500), -- 来源URL
service_type VARCHAR(50), -- 服务类型(继承自知识库)
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
status VARCHAR(20) NOT NULL DEFAULT 'active', -- 状态active-激活/inactive-停用/archived-归档
creator VARCHAR(50) DEFAULT NULL, -- 创建者
@@ -69,15 +75,21 @@ CREATE TABLE knowledge.tb_knowledge_document (
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
PRIMARY KEY (doc_id),
UNIQUE (optsn),
FOREIGN KEY (kb_id) REFERENCES knowledge.tb_knowledge_base(kb_id)
FOREIGN KEY (knowledge_id) REFERENCES knowledge.tb_knowledge_base(knowledge_id)
);
CREATE INDEX idx_doc_kb ON knowledge.tb_knowledge_document(kb_id) WHERE deleted = false;
CREATE INDEX idx_doc_kb ON knowledge.tb_knowledge_document(knowledge_id) WHERE deleted = false;
CREATE INDEX idx_doc_service ON knowledge.tb_knowledge_document(service_type) WHERE deleted = false;
CREATE INDEX idx_doc_category ON knowledge.tb_knowledge_document(category) WHERE deleted = false;
CREATE INDEX idx_doc_embedding_status ON knowledge.tb_knowledge_document(embedding_status) WHERE deleted = false;
CREATE INDEX idx_doc_tags ON knowledge.tb_knowledge_document USING GIN(tags) WHERE deleted = false;
CREATE INDEX idx_doc_root_current ON knowledge.tb_knowledge_document(root_doc_id, is_current) WHERE deleted = false;
COMMENT ON TABLE knowledge.tb_knowledge_document IS '知识文档表';
COMMENT ON COLUMN knowledge.tb_knowledge_document.service_type IS '服务类型(从知识库继承,用于服务间隔离)';
COMMENT ON COLUMN knowledge.tb_knowledge_document.version IS '版本号(整数,每次创建新版本自动+1';
COMMENT ON COLUMN knowledge.tb_knowledge_document.root_doc_id IS '根文档ID同一文档的所有版本共享此ID首次上传时等于doc_id';
COMMENT ON COLUMN knowledge.tb_knowledge_document.is_current IS '是否当前使用的版本每个root_doc_id只有一个is_current=true';
COMMENT ON COLUMN knowledge.tb_knowledge_document.embedding_status IS '向量化状态pending/processing/completed/failed';
-- 知识文档片段表用于RAG检索
@@ -86,12 +98,13 @@ CREATE TABLE knowledge.tb_knowledge_chunk (
optsn VARCHAR(50) NOT NULL, -- 流水号
chunk_id VARCHAR(50) NOT NULL, -- 片段ID
doc_id VARCHAR(50) NOT NULL, -- 所属文档ID
kb_id VARCHAR(50) NOT NULL, -- 所属知识库ID
knowledge_id VARCHAR(50) NOT NULL, -- 所属知识库ID
chunk_index INTEGER NOT NULL, -- 片段索引(在文档中的顺序)
content TEXT NOT NULL, -- 片段内容
content_length INTEGER, -- 内容长度
embedding vector(1536), -- 向量嵌入假设使用OpenAI 1536维
chunk_type VARCHAR(20) DEFAULT 'text', -- 片段类型text-文本/table-表格/image-图片
version INTEGER DEFAULT 1, -- 分段版本号(用于乐观锁,每次编辑+1
position_info JSONB, -- 位置信息(页码、坐标等)
metadata JSONB, -- 片段元数据
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
@@ -102,15 +115,16 @@ CREATE TABLE knowledge.tb_knowledge_chunk (
PRIMARY KEY (chunk_id),
UNIQUE (optsn),
FOREIGN KEY (doc_id) REFERENCES knowledge.tb_knowledge_document(doc_id),
FOREIGN KEY (kb_id) REFERENCES knowledge.tb_knowledge_base(kb_id)
FOREIGN KEY (knowledge_id) REFERENCES knowledge.tb_knowledge_base(knowledge_id)
);
CREATE INDEX idx_chunk_doc ON knowledge.tb_knowledge_chunk(doc_id) WHERE deleted = false;
CREATE INDEX idx_chunk_kb ON knowledge.tb_knowledge_chunk(kb_id) WHERE deleted = false;
CREATE INDEX idx_chunk_kb ON knowledge.tb_knowledge_chunk(knowledge_id) WHERE deleted = false;
-- 向量检索索引需要安装pgvector扩展
-- CREATE INDEX idx_chunk_embedding ON knowledge.tb_knowledge_chunk USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);
COMMENT ON TABLE knowledge.tb_knowledge_chunk IS '知识文档片段表RAG检索';
COMMENT ON COLUMN knowledge.tb_knowledge_chunk.version IS '分段版本号(用于乐观锁,防止并发编辑冲突)';
COMMENT ON COLUMN knowledge.tb_knowledge_chunk.embedding IS '向量嵌入需要pgvector扩展';
-- 知识访问日志表
@@ -118,7 +132,7 @@ DROP TABLE IF EXISTS knowledge.tb_knowledge_access_log CASCADE;
CREATE TABLE knowledge.tb_knowledge_access_log (
optsn VARCHAR(50) NOT NULL, -- 流水号
log_id VARCHAR(50) NOT NULL, -- 日志ID
kb_id VARCHAR(50), -- 知识库ID
knowledge_id VARCHAR(50), -- 知识库ID
doc_id VARCHAR(50), -- 文档ID
user_id VARCHAR(50) NOT NULL, -- 用户ID
access_type VARCHAR(20) NOT NULL, -- 访问类型view-查看/download-下载/search-搜索/edit-编辑
@@ -133,6 +147,6 @@ CREATE TABLE knowledge.tb_knowledge_access_log (
);
CREATE INDEX idx_access_log_user ON knowledge.tb_knowledge_access_log(user_id, create_time DESC);
CREATE INDEX idx_access_log_kb ON knowledge.tb_knowledge_access_log(kb_id, create_time DESC);
CREATE INDEX idx_access_log_kb ON knowledge.tb_knowledge_access_log(knowledge_id, create_time DESC);
COMMENT ON TABLE knowledge.tb_knowledge_access_log IS '知识访问日志表';