mirror of
https://github.com/mindverse/Second-Me.git
synced 2026-07-16 12:48:24 +00:00
* new data pipiline * new data pipiline * shades and topic --------- Co-authored-by: yanmuyuan <2216646664@qq.com>
238 lines
No EOL
8.9 KiB
SQL
238 lines
No EOL
8.9 KiB
SQL
-- Document Table
|
|
CREATE TABLE IF NOT EXISTS document (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name VARCHAR(255) NOT NULL DEFAULT '',
|
|
title VARCHAR(511) NOT NULL DEFAULT '',
|
|
extract_status TEXT CHECK(extract_status IN ('INITIALIZED', 'SUCCESS', 'FAILED')) NOT NULL DEFAULT 'INITIALIZED',
|
|
embedding_status TEXT CHECK(embedding_status IN ('INITIALIZED', 'SUCCESS', 'FAILED')) NOT NULL DEFAULT 'INITIALIZED',
|
|
analyze_status TEXT CHECK(analyze_status IN ('INITIALIZED', 'SUCCESS', 'FAILED')) NOT NULL DEFAULT 'INITIALIZED',
|
|
mime_type VARCHAR(50) NOT NULL DEFAULT '',
|
|
raw_content TEXT DEFAULT NULL,
|
|
user_description VARCHAR(255) NOT NULL DEFAULT '',
|
|
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
url VARCHAR(1023) NOT NULL DEFAULT '',
|
|
document_size INTEGER NOT NULL DEFAULT 0,
|
|
insight TEXT DEFAULT NULL, -- JSON data stored as TEXT
|
|
summary TEXT DEFAULT NULL, -- JSON data stored as TEXT
|
|
keywords TEXT DEFAULT NULL
|
|
);
|
|
|
|
-- Document table indexes
|
|
CREATE INDEX IF NOT EXISTS idx_extract_status ON document(extract_status);
|
|
CREATE INDEX IF NOT EXISTS idx_name ON document(name);
|
|
CREATE INDEX IF NOT EXISTS idx_create_time ON document(create_time);
|
|
|
|
-- Chunk Table
|
|
CREATE TABLE IF NOT EXISTS chunk (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
document_id INTEGER NOT NULL,
|
|
content TEXT NOT NULL,
|
|
has_embedding BOOLEAN NOT NULL DEFAULT 0,
|
|
tags TEXT DEFAULT NULL, -- JSON data stored as TEXT
|
|
topic VARCHAR(255) DEFAULT NULL,
|
|
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (document_id) REFERENCES document(id)
|
|
);
|
|
|
|
-- Chunk table indexes
|
|
CREATE INDEX IF NOT EXISTS idx_document_id ON chunk(document_id);
|
|
CREATE INDEX IF NOT EXISTS idx_has_embedding ON chunk(has_embedding);
|
|
|
|
-- stage2 Version Table
|
|
CREATE TABLE IF NOT EXISTS l1_versions (
|
|
version INTEGER PRIMARY KEY,
|
|
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
status VARCHAR(50) NOT NULL,
|
|
description VARCHAR(500)
|
|
);
|
|
|
|
-- stage2 Bio Table
|
|
CREATE TABLE IF NOT EXISTS l1_bios (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
version INTEGER NOT NULL,
|
|
content TEXT,
|
|
content_third_view TEXT,
|
|
summary TEXT,
|
|
summary_third_view TEXT,
|
|
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (version) REFERENCES l1_versions(version)
|
|
);
|
|
|
|
-- stage2 Shade Table
|
|
CREATE TABLE IF NOT EXISTS l1_shades (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
version INTEGER NOT NULL,
|
|
name VARCHAR(200),
|
|
aspect VARCHAR(200),
|
|
icon VARCHAR(100),
|
|
desc_third_view TEXT,
|
|
content_third_view TEXT,
|
|
desc_second_view TEXT,
|
|
content_second_view TEXT,
|
|
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (version) REFERENCES l1_versions(version)
|
|
);
|
|
|
|
-- stage2 Cluster Table
|
|
CREATE TABLE IF NOT EXISTS l1_clusters (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
version INTEGER NOT NULL,
|
|
cluster_id VARCHAR(100),
|
|
memory_ids TEXT, -- JSON data stored as TEXT
|
|
cluster_center TEXT, -- JSON data stored as TEXT
|
|
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (version) REFERENCES l1_versions(version)
|
|
);
|
|
|
|
-- stage2 Chunk Topic Table
|
|
CREATE TABLE IF NOT EXISTS l1_chunk_topics (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
version INTEGER NOT NULL,
|
|
chunk_id VARCHAR(100),
|
|
topic TEXT,
|
|
tags TEXT, -- JSON data stored as TEXT
|
|
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (version) REFERENCES l1_versions(version)
|
|
);
|
|
|
|
-- Status Biography Table
|
|
CREATE TABLE IF NOT EXISTS status_biography (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
content TEXT NOT NULL,
|
|
content_third_view TEXT NOT NULL,
|
|
summary TEXT NOT NULL,
|
|
summary_third_view TEXT NOT NULL,
|
|
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Personal Load Table
|
|
CREATE TABLE IF NOT EXISTS loads (
|
|
id VARCHAR(36) PRIMARY KEY, -- UUID
|
|
name VARCHAR(255) NOT NULL, -- load name
|
|
description TEXT, -- load description
|
|
email VARCHAR(255) NOT NULL DEFAULT '', -- load email
|
|
avatar_data TEXT, -- load avatar base64 encoded data
|
|
instance_id VARCHAR(255), -- upload instance ID
|
|
instance_password VARCHAR(255), -- upload instance password
|
|
status TEXT CHECK(status IN ('active', 'inactive', 'deleted')) DEFAULT 'active',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_loads_status ON loads(status);
|
|
CREATE INDEX IF NOT EXISTS idx_loads_created_at ON loads(created_at);
|
|
|
|
-- Memory Files Table
|
|
CREATE TABLE IF NOT EXISTS memories (
|
|
id VARCHAR(36) NOT NULL,
|
|
name VARCHAR(255) NOT NULL,
|
|
size INTEGER NOT NULL,
|
|
type VARCHAR(50) NOT NULL,
|
|
path VARCHAR(1024) NOT NULL,
|
|
meta_data TEXT, -- JSON data stored as TEXT
|
|
document_id VARCHAR(36),
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
status TEXT CHECK(status IN ('active', 'deleted')) NOT NULL DEFAULT 'active',
|
|
is_trained BOOLEAN NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_memories_document_id ON memories(document_id);
|
|
CREATE INDEX IF NOT EXISTS idx_memories_created_at ON memories(created_at);
|
|
CREATE INDEX IF NOT EXISTS idx_memories_type ON memories(type);
|
|
CREATE INDEX IF NOT EXISTS idx_memories_status ON memories(status);
|
|
|
|
-- Roles Table
|
|
CREATE TABLE IF NOT EXISTS roles (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
uuid VARCHAR(64) NOT NULL UNIQUE,
|
|
name VARCHAR(100) NOT NULL UNIQUE,
|
|
description VARCHAR(500),
|
|
system_prompt TEXT NOT NULL,
|
|
icon VARCHAR(100),
|
|
is_active BOOLEAN NOT NULL DEFAULT 1,
|
|
enable_l0_retrieval BOOLEAN NOT NULL DEFAULT 1,
|
|
enable_l1_retrieval BOOLEAN NOT NULL DEFAULT 1,
|
|
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_roles_name ON roles(name);
|
|
CREATE INDEX IF NOT EXISTS idx_roles_uuid ON roles(uuid);
|
|
CREATE INDEX IF NOT EXISTS idx_roles_is_active ON roles(is_active);
|
|
|
|
-- Insert predefined Roles (only if they don't exist)
|
|
INSERT OR IGNORE INTO roles (uuid, name, description, system_prompt, icon) VALUES
|
|
('role_interviewer_8f3a1c2e4b5d6f7a9e0b1d2c3f4e5d6b',
|
|
'Interviewer (a test case)',
|
|
'Professional interviewer who asks insightful questions to learn about people',
|
|
|
|
'You are a professional interviewer with expertise in asking insightful questions to understand people deeply, and you are facing the interviewee, and you dont know his/her background. Your responsibilities include:\n1. Asking thoughtful, open-ended questions\n2. Following up on interesting points\n3. sharing what you know to attract the interviewee.',
|
|
'interview-icon');
|
|
|
|
-- User LLM Configuration Table
|
|
CREATE TABLE IF NOT EXISTS user_llm_configs (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
provider_type VARCHAR(50) NOT NULL DEFAULT 'openai',
|
|
key VARCHAR(200),
|
|
|
|
-- Chat configuration
|
|
chat_endpoint VARCHAR(200),
|
|
chat_api_key VARCHAR(200),
|
|
chat_model_name VARCHAR(200),
|
|
|
|
-- Embedding configuration
|
|
embedding_endpoint VARCHAR(200),
|
|
embedding_api_key VARCHAR(200),
|
|
embedding_model_name VARCHAR(200),
|
|
|
|
-- Thinking configuration
|
|
thinking_model_name VARCHAR(200),
|
|
thinking_endpoint VARCHAR(200),
|
|
thinking_api_key VARCHAR(200),
|
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
|
|
-- User LLM Configuration table indexes
|
|
CREATE INDEX IF NOT EXISTS idx_user_llm_configs_created_at ON user_llm_configs(created_at);
|
|
|
|
-- Spaces Table
|
|
CREATE TABLE IF NOT EXISTS spaces (
|
|
id VARCHAR(255) PRIMARY KEY,
|
|
title VARCHAR(255) NOT NULL,
|
|
objective TEXT NOT NULL,
|
|
participants TEXT NOT NULL, -- JSON array stored as TEXT
|
|
host VARCHAR(255) NOT NULL,
|
|
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
status INTEGER DEFAULT 1,
|
|
conclusion TEXT,
|
|
space_share_id VARCHAR(255)
|
|
);
|
|
|
|
-- Space Messages Table
|
|
CREATE TABLE IF NOT EXISTS space_messages (
|
|
id VARCHAR(255) PRIMARY KEY,
|
|
space_id VARCHAR(255) NOT NULL,
|
|
sender_endpoint VARCHAR(255) NOT NULL,
|
|
content TEXT NOT NULL,
|
|
message_type VARCHAR(50) NOT NULL,
|
|
round INTEGER DEFAULT 0,
|
|
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
role VARCHAR(50) DEFAULT 'participant',
|
|
FOREIGN KEY (space_id) REFERENCES spaces(id)
|
|
);
|
|
|
|
-- Space Messages Table Indexes
|
|
CREATE INDEX IF NOT EXISTS idx_space_messages_space_id ON space_messages(space_id);
|
|
CREATE INDEX IF NOT EXISTS idx_space_messages_round ON space_messages(round);
|
|
CREATE INDEX IF NOT EXISTS idx_space_messages_create_time ON space_messages(create_time);
|
|
|
|
-- Space Table Indexes
|
|
CREATE INDEX IF NOT EXISTS idx_spaces_create_time ON spaces(create_time);
|
|
CREATE INDEX IF NOT EXISTS idx_spaces_status ON spaces(status); |