数据库设计
本专题旨在引导大家从零开始实现一个基于 RAG(Retrieval-Augmented Generation)的知识库项目。
数据选型
- 前端:使用 MaxKB 前端
- 后端:采用 Java 进行开发
- 模型端:使用 OpenAI-4o-mini 系列模型
- 数据端:使用 PostgreSQL 配合 pgvector 进行向量数据的存储
创建用户、授予权限及安装 pgvector 插件
以下是在 PostgreSQL 中创建新用户和数据库,授予必要权限,并安装及测试 pgvector
插件的步骤:
1. 切换到 PostgreSQL 用户
首先,切换到 PostgreSQL 系统用户:
su - postgres
2. 连接到 PostgreSQL
使用 psql
连接到 PostgreSQL:
psql
3. 创建数据库和用户
在 psql
提示符下,执行以下命令来创建数据库 max_kb
和用户 max_kb
,并设置密码:
-- 创建数据库
CREATE DATABASE max_kb;
-- 创建用户并设置密码
CREATE USER max_kb WITH PASSWORD '00000000';
4. 授予用户权限
授予用户 max_kb
对数据库 max_kb
的所有权限:
GRANT ALL PRIVILEGES ON DATABASE max_kb TO max_kb;
此外,确保用户 max_kb
对 public
模式拥有必要的权限,以便在其中创建表:
-- 连接到 max_kb 数据库
\c max_kb
-- 授予 public 模式的所有权限
GRANT ALL PRIVILEGES ON SCHEMA public TO max_kb;
注意:无需更改 public
模式的所有者,除非有特定需求。
5. 安装并启用 pgvector 插件
确保您已安装 pgvector
插件。如果未安装,可以使用以下命令进行安装(以基于 Debian 的系统为例):
sudo apt-get update
sudo apt-get install postgresql-14-pgvector # 根据您的 PostgreSQL 版本调整
连接到 max_kb
数据库并启用 pgvector
插件:
-- 连接到 max_kb 数据库
\c max_kb
-- 创建 pgvector 扩展
CREATE EXTENSION IF NOT EXISTS vector;
验证扩展是否成功启用:
SELECT * FROM pg_extension WHERE extname = 'vector';
如果返回一行结果,说明扩展已成功启用。
6. 测试 pgvector 插件
创建一个使用 vector
类型的测试表,以确认 pgvector
正常工作:
CREATE TABLE vector_test (
id SERIAL PRIMARY KEY,
v VECTOR(3)
);
如果表创建成功,说明 vector
类型现已可用。
数据库设计
规范
- 主键:统一使用雪花 ID(Snowflake ID)
数据表
以下是各数据表的创建脚本及其解释:
1. max_kb_user
-- 如果表存在则删除
DROP TABLE IF EXISTS "public"."max_kb_user";
-- 创建表
CREATE TABLE "public"."max_kb_user" (
"id" BIGINT NOT NULL PRIMARY KEY,
"email" VARCHAR,
"phone" VARCHAR NOT NULL,
"nick_name" VARCHAR NOT NULL,
"username" VARCHAR NOT NULL,
"password" VARCHAR NOT NULL,
"role" VARCHAR NOT NULL,
"is_active" BOOLEAN NOT NULL,
"source" VARCHAR NOT NULL,
"remark" VARCHAR(256),
"creator" VARCHAR(64) DEFAULT '',
"create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updater" VARCHAR(64) DEFAULT '',
"update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"deleted" SMALLINT DEFAULT 0,
"tenant_id" BIGINT NOT NULL DEFAULT 0
);
-- 创建索引
CREATE INDEX "user_email_index_like" ON "public"."max_kb_user" USING btree (
"email" varchar_pattern_ops
);
CREATE INDEX "user_username_index_like" ON "public"."max_kb_user" USING btree (
"username" varchar_pattern_ops
);
-- 插入初始记录
INSERT INTO "public"."max_kb_user"
VALUES (1, '', '', '系统管理员', 'admin', '608fd4367502762e76a77ee348c9f1c7', 'ADMIN', TRUE, 'LOCAL', '', '', CURRENT_TIMESTAMP, '', CURRENT_TIMESTAMP, 0, 0);
-- 默认密码:Kimi@2024
2. max_kb_user_token
DROP TABLE IF EXISTS "public"."max_kb_user_token";
-- 创建表
CREATE TABLE "public"."max_kb_user_token" (
"id" BIGINT NOT NULL PRIMARY KEY,
"token" VARCHAR NOT NULL,
"remark" VARCHAR(256),
"creator" VARCHAR(64) DEFAULT '',
"create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updater" VARCHAR(64) DEFAULT '',
"update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"deleted" SMALLINT DEFAULT 0,
"tenant_id" BIGINT NOT NULL DEFAULT 0
);
3. max_kb_model
DROP TABLE IF EXISTS "public"."max_kb_model";
CREATE TABLE "public"."max_kb_model" (
"id" BIGINT NOT NULL PRIMARY KEY,
"name" VARCHAR NOT NULL,
"model_type" VARCHAR NOT NULL,
"model_name" VARCHAR NOT NULL,
"provider" VARCHAR NOT NULL,
"credential" VARCHAR NOT NULL,
"user_id" BIGINT NOT NULL,
"meta" JSONB,
"status" VARCHAR,
"permission_type" VARCHAR NOT NULL,
"remark" VARCHAR(256),
"creator" VARCHAR(64) DEFAULT '',
"create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updater" VARCHAR(64) DEFAULT '',
"update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"deleted" SMALLINT DEFAULT 0,
"tenant_id" BIGINT NOT NULL DEFAULT 0
);
CREATE INDEX "idx_user_id" ON "public"."max_kb_model" USING btree ("user_id");
4. max_kb_application
DROP TABLE IF EXISTS "public"."max_kb_application";
CREATE TABLE "public"."max_kb_application" (
"id" BIGINT PRIMARY KEY,
"code" INT,
"course_name" VARCHAR,
"owner_name" VARCHAR,
"state" INT,
"name" VARCHAR NOT NULL,
"desc" VARCHAR NOT NULL,
"prompt" VARCHAR,
"prologue" VARCHAR NOT NULL,
"dialogue_number" INT NOT NULL,
"dataset_setting" JSONB NOT NULL,
"model_setting" JSONB NOT NULL,
"problem_optimization" BOOLEAN NOT NULL,
"model_id" BIGINT,
"user_id" BIGINT NOT NULL,
"icon" VARCHAR,
"type" VARCHAR NOT NULL,
"work_flow" JSONB,
"model_params_setting" JSONB NOT NULL,
"stt_model_id" BIGINT,
"stt_model_enable" BOOLEAN NOT NULL,
"tts_model_id" BIGINT,
"tts_model_enable" BOOLEAN NOT NULL,
"tts_type" VARCHAR NOT NULL,
"problem_optimization_prompt" VARCHAR,
"tts_model_params_setting" JSONB,
"clean_time" INT,
"remark" VARCHAR(256),
"creator" VARCHAR(64) DEFAULT '',
"create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updater" VARCHAR(64) DEFAULT '',
"update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"deleted" SMALLINT DEFAULT 0,
"tenant_id" BIGINT NOT NULL DEFAULT 0
);
CREATE INDEX "application_model_id" ON "public"."max_kb_application" USING btree (
"model_id" ASC NULLS LAST
);
CREATE INDEX "application_stt_model_id" ON "public"."max_kb_application" USING btree (
"stt_model_id" ASC NULLS LAST
);
CREATE INDEX "application_tts_model_id" ON "public"."max_kb_application" USING btree (
"tts_model_id" ASC NULLS LAST
);
CREATE INDEX "application_user_id" ON "public"."max_kb_application" USING btree (
"user_id" ASC NULLS LAST
);
5. max_kb_application_access_token
CREATE TABLE "public"."max_kb_application_access_token" (
"application_id" BIGINT PRIMARY KEY,
"access_token" VARCHAR NOT NULL,
"is_active" BOOLEAN NOT NULL,
"access_num" INT NOT NULL,
"white_active" BOOLEAN NOT NULL,
"white_list" VARCHAR[] NOT NULL,
"show_source" BOOLEAN NOT NULL,
"remark" VARCHAR(256),
"creator" VARCHAR(64) DEFAULT '',
"create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updater" VARCHAR(64) DEFAULT '',
"update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"deleted" SMALLINT DEFAULT 0,
"tenant_id" BIGINT NOT NULL DEFAULT 0
);
CREATE INDEX "max_kb_application_access_token_access_token" ON "public"."max_kb_application_access_token" USING btree (
"access_token" ASC NULLS LAST
);
6. max_kb_task
DROP TABLE IF EXISTS "public"."max_kb_task";
CREATE TABLE "public"."max_kb_task" (
"id" BIGINT NOT NULL PRIMARY KEY,
"file_id" BIGINT,
"file_name" VARCHAR NOT NULL,
"file_size" BIGINT,
"dataset_id" BIGINT NOT NULL,
"document_id" BIGINT,
"progress" SMALLINT DEFAULT 0,
"status" VARCHAR NOT NULL,
"creator" VARCHAR(64) DEFAULT '',
"create_time" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updater" VARCHAR(64) DEFAULT '',
"update_time" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"deleted" SMALLINT NOT NULL DEFAULT 0,
"tenant_id" BIGINT NOT NULL DEFAULT 0
);
7. max_kb_file
DROP TABLE IF EXISTS "public"."max_kb_file";
CREATE TABLE "public"."max_kb_file" (
"id" BIGINT PRIMARY KEY, -- 文件ID
"md5" VARCHAR(32) NOT NULL, -- 文件的MD5值,用于校验文件一致性
"filename" VARCHAR(64) NOT NULL, -- 文件名
"file_size" BIGINT NOT NULL, -- 文件大小(字节)
"user_id" BIGINT, -- 用户ID,标识上传文件的用户
"platform" VARCHAR(64) NOT NULL, -- 上传平台(如S3)
"region_name" VARCHAR(32), -- 区域名
"bucket_name" VARCHAR(64) NOT NULL, -- 存储桶名称
"file_id" VARCHAR(64), -- 文件存储ID
"target_name" VARCHAR(255) NOT NULL, -- 文件存储路径
"tags" JSON, -- 文件标签(JSON格式)
"creator" VARCHAR(64) DEFAULT '',
"create_time" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updater" VARCHAR(64) DEFAULT '',
"update_time" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"deleted" SMALLINT NOT NULL DEFAULT 0,
"tenant_id" BIGINT NOT NULL DEFAULT 0
);
8. max_kb_dataset
DROP TABLE IF EXISTS "public"."max_kb_dataset";
CREATE TABLE "public"."max_kb_dataset" (
"id" BIGINT PRIMARY KEY,
"name" VARCHAR NOT NULL,
"desc" VARCHAR,
"type" VARCHAR,
"embedding_mode_id" BIGINT,
"meta" JSONB,
"user_id" BIGINT NOT NULL,
"remark" VARCHAR(256),
"creator" VARCHAR(64) DEFAULT '',
"create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updater" VARCHAR(64) DEFAULT '',
"update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"deleted" SMALLINT DEFAULT 0,
"tenant_id" BIGINT NOT NULL DEFAULT 0
);
9. max_kb_application_dataset_mapping
DROP TABLE IF EXISTS "public"."max_kb_application_dataset_mapping";
CREATE TABLE "public"."max_kb_application_dataset_mapping" (
"id" BIGINT PRIMARY KEY,
"application_id" BIGINT NOT NULL,
"dataset_id" BIGINT NOT NULL
);
10. max_kb_document
DROP TABLE IF EXISTS "public"."max_kb_document";
CREATE TABLE "public"."max_kb_document" (
"id" BIGINT NOT NULL PRIMARY KEY,
"file_id" BIGINT,
"user_id" BIGINT,
"title" VARCHAR,
"name" VARCHAR NOT NULL,
"char_length" INT NOT NULL,
"status" VARCHAR NOT NULL,
"is_active" BOOLEAN NOT NULL,
"type" VARCHAR NOT NULL,
"meta" JSONB,
"dataset_id" BIGINT NOT NULL,
"hit_handling_method" VARCHAR NOT NULL,
"directly_return_similarity" FLOAT8 NOT NULL,
"paragraph_count" INT,
"files" JSON, -- 文件信息,JSON格式
"creator" VARCHAR(64) DEFAULT '', -- 创建者
"create_time" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
"updater" VARCHAR(64) DEFAULT '', -- 更新者
"update_time" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 更新时间
"deleted" SMALLINT NOT NULL DEFAULT 0, -- 删除标志
"tenant_id" BIGINT NOT NULL DEFAULT 0 -- 租户ID
);
状态值及其含义
0
索引中1
成功2
识别3
排队中4
生成问题中
11. max_kb_paragraph
DROP TABLE IF EXISTS "public"."max_kb_paragraph";
CREATE TABLE "public"."max_kb_paragraph" (
"id" BIGINT PRIMARY KEY,
"source_id" BIGINT NOT NULL,
"source_type" VARCHAR NOT NULL,
"title" VARCHAR NOT NULL,
"content" VARCHAR NOT NULL,
"md5" VARCHAR NOT NULL,
"status" VARCHAR NOT NULL,
"hit_num" INT NOT NULL,
"is_active" BOOLEAN NOT NULL,
"dataset_id" BIGINT NOT NULL,
"document_id" BIGINT NOT NULL,
"embedding" VECTOR NOT NULL, -- 使用 pgvector 类型
"meta" JSONB,
"search_vector" TSVECTOR,
"creator" VARCHAR(64) DEFAULT '',
"create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updater" VARCHAR(64) DEFAULT '',
"update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"deleted" SMALLINT DEFAULT 0,
"tenant_id" BIGINT NOT NULL DEFAULT 0
);
12. max_kb_problem
CREATE TABLE "public"."max_kb_problem" (
"id" BIGINT PRIMARY KEY,
"content" VARCHAR NOT NULL,
"hit_num" INT NOT NULL,
"dataset_id" BIGINT NOT NULL,
"creator" VARCHAR(64) DEFAULT '',
"create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updater" VARCHAR(64) DEFAULT '',
"update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"deleted" SMALLINT DEFAULT 0,
"tenant_id" BIGINT NOT NULL DEFAULT 0
);
CREATE INDEX "max_kb_problem_dataset_id" ON "public"."max_kb_problem" USING btree (
"dataset_id" ASC NULLS LAST
);
13. max_kb_problem_paragraph_mapping
CREATE TABLE "public"."max_kb_problem_paragraph_mapping" (
"id" BIGINT PRIMARY KEY,
"dataset_id" BIGINT NOT NULL,
"document_id" BIGINT NOT NULL,
"paragraph_id" BIGINT NOT NULL,
"problem_id" BIGINT NOT NULL,
"creator" VARCHAR(64) DEFAULT '',
"create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updater" VARCHAR(64) DEFAULT '',
"update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"deleted" SMALLINT DEFAULT 0,
"tenant_id" BIGINT NOT NULL DEFAULT 0
);
CREATE INDEX "max_kb_problem_paragraph_mapping_dataset_id" ON "public"."max_kb_problem_paragraph_mapping" USING btree (
"dataset_id" ASC NULLS LAST
);
CREATE INDEX "max_kb_problem_paragraph_mapping_document_id" ON "public"."max_kb_problem_paragraph_mapping" USING btree (
"document_id" ASC NULLS LAST
);
CREATE INDEX "max_kb_problem_paragraph_mapping_paragraph_id" ON "public"."max_kb_problem_paragraph_mapping" USING btree (
"paragraph_id" ASC NULLS LAST
);
CREATE INDEX "max_kb_problem_paragraph_mapping_problem_id" ON "public"."max_kb_problem_paragraph_mapping" USING btree (
"problem_id" ASC NULLS LAST
);
14. max_kb_embedding_cache
DROP TABLE IF EXISTS "public"."max_kb_embedding_cache";
CREATE TABLE "public"."max_kb_embedding_cache" (
"id" BIGINT PRIMARY KEY,
"t" TEXT,
"m" VARCHAR,
"v" VECTOR,
"md5" VARCHAR
);
CREATE INDEX "idx_max_kb_embedding_cache_md5" ON "public"."max_kb_embedding_cache" USING btree (
"md5" TEXT_OPS ASC NULLS LAST
);
CREATE INDEX "idx_max_kb_embedding_cache_md5_m" ON "public"."max_kb_embedding_cache" USING btree (
"md5" TEXT_OPS ASC NULLS LAST,
"m" TEXT_OPS ASC NULLS LAST
);
15. max_kb_document_markdown_cache
DROP TABLE IF EXISTS "public"."max_kb_document_markdown_cache";
CREATE TABLE "public"."max_kb_document_markdown_cache" (
"id" VARCHAR PRIMARY KEY,
"target" VARCHAR,
"content" text
);
16. max_kb_document_markdown_page_cache
CREATE TABLE "public"."max_kb_document_markdown_page_cache" (
"id" VARCHAR PRIMARY KEY,
"target" VARCHAR,
"content" TEXT,
"elapsed" BIGINT,
"model" VARCHAR,
"system_fingerprint" VARCHAR,
"completion_tokens" INT,
"prompt_tokens" INT,
"total_tokens" INT
);
17. max_kb_application_chat
DROP TABLE IF EXISTS "public"."max_kb_application_chat";
CREATE TABLE "public"."max_kb_application_chat" (
"id" BIGINT PRIMARY KEY,
"abstract" VARCHAR,
"application_id" BIGINT NOT NULL,
"client_id" BIGINT,
"chat_type" INT NOT NULL,
"is_deleted" BOOLEAN NOT NULL DEFAULT FALSE,
"creator" VARCHAR(64) DEFAULT '',
"create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updater" VARCHAR(64) DEFAULT '',
"update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"deleted" SMALLINT DEFAULT 0,
"tenant_id" BIGINT NOT NULL DEFAULT 0
);
CREATE INDEX "max_kb_application_chat_application_id" ON "public"."max_kb_application_chat" USING btree (
"application_id" ASC NULLS LAST
);
chat_type
值及其含义
0
普通会话1
调试会话
18. max_kb_application_chat_record
DROP TABLE IF EXISTS "public"."max_kb_application_chat_record";
CREATE TABLE "public"."max_kb_application_chat_record" (
"id" BIGINT PRIMARY KEY,
"vote_status" VARCHAR NOT NULL DEFAULT '-1',
"problem_text" VARCHAR NOT NULL,
"answer_text" VARCHAR,
"message_tokens" INT NOT NULL,
"answer_tokens" INT,
"const" INT NOT NULL DEFAULT 0,
"details" JSONB,
"improve_paragraph_id_list" BIGINT[],
"run_time" FLOAT8,
"index" INT,
"chat_id" BIGINT NOT NULL,
"creator" VARCHAR(64) DEFAULT '',
"create_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updater" VARCHAR(64) DEFAULT '',
"update_time" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
"deleted" SMALLINT DEFAULT 0,
"tenant_id" BIGINT NOT NULL DEFAULT 0
);
CREATE INDEX "max_kb_application_chat_record_chat_id" ON "public"."max_kb_application_chat_record" USING btree (
"chat_id" ASC NULLS LAST
);
19. max_kb_application_temp_setting
DROP TABLE IF EXISTS "public"."max_kb_application_temp_setting";
CREATE TABLE "public"."max_kb_application_temp_setting" (
"id" BIGINT PRIMARY KEY,
"setting" JSONB
);
CREATE TABLE "public"."max_kb_paragraph_summary_cache" (
"id" VARCHAR PRIMARY KEY,
"md5" VARCHAR,
"content" TEXT,
"elapsed" BIGINT,
"model" VARCHAR,
"system_fingerprint" VARCHAR,
"completion_tokens" INT,
"prompt_tokens" INT,
"total_tokens" INT
);
表结构解释
以下是各数据表的详细解释:
max_kb_user
存储用户的信息,包括用户 ID、邮箱、电话、昵称、用户名、密码、角色、激活状态、来源、备注、创建者、创建时间、更新者、更新时间、删除标志及租户 ID。
max_kb_user_token
存储用户的认证令牌,用于管理用户会话和认证。包括令牌 ID、令牌内容、备注、创建者、创建时间、更新者、更新时间、删除标志及租户 ID。
max_kb_model
关联模型数据,存储模型的详细信息,如模型名称、类型、提供商、凭证、关联的用户 ID、元数据、状态、权限类型、备注、创建者、创建时间、更新者、更新时间、删除标志及租户 ID。
max_kb_application
存储知识库应用程序的信息,包括应用 ID、代码、课程名称、所有者名称、状态、名称、描述、提示信息、前言、对话数量、数据集设置、模型设置、问题优化选项、模型 ID、用户 ID、图标、类型、工作流程、模型参数设置、语音识别和合成模型相关设置、清理时间、备注、创建者、创建时间、更新者、更新时间、删除标志及租户 ID。
max_kb_application_access_token
存储应用程序的访问令牌信息,包括应用 ID、访问令牌内容、激活状态、访问次数、白名单激活状态、白名单列表、是否显示来源、备注、创建者、创建时间、更新者、更新时间、删除标志及租户 ID。
max_kb_task
存储任务的信息,包括任务 ID、文件 ID、文件名称、文件大小、数据集 ID、文档 ID、进度、状态、创建者、创建时间、更新者、更新时间、删除标志及租户 ID。
max_kb_file
存储文件的信息,包括文件 ID、MD5 值(用于校验文件一致性)、文件名、文件大小、用户 ID(标识上传文件的用户)、上传平台(如 S3)、区域名、存储桶名称、文件存储 ID、文件存储路径、文件标签(JSON 格式)、创建者、创建时间、更新者、更新时间、删除标志及租户 ID。
max_kb_dataset
存储数据集的信息,包括数据集 ID、名称、描述、类型、嵌入模式 ID、元数据、用户 ID、备注、创建者、创建时间、更新者、更新时间、删除标志及租户 ID。
max_kb_application_dataset_mapping
关联应用程序与数据集的映射表,表示哪些数据集被哪个应用程序使用,包含映射 ID、应用 ID 及数据集 ID。
max_kb_document
存储文档的信息,包括文档 ID、文件 ID、用户 ID、标题、名称、字符长度、状态、激活状态、类型、元数据、所属数据集 ID、命中处理方法、直接返回相似度、段落数量、文件信息(JSON 格式)、创建者、创建时间、更新者、更新时间、删除标志及租户 ID。
状态值及其含义
0
索引中1
成功2
识别3
排队中4
生成问题中
max_kb_paragraph
存储段落的信息,包括段落 ID、来源 ID、来源类型、标题、内容、MD5 值、状态、点击数、激活状态、向量表示(Embedding)、元数据、所属数据集 ID、文档 ID、搜索向量、创建者、创建时间、更新者、更新时间、删除标志及租户 ID。
max_kb_problem
存储问题的信息,包括问题 ID、内容、点击数、所属数据集 ID、创建者、创建时间、更新者、更新时间、删除标志及租户 ID。
创建了索引
max_kb_problem_dataset_id
,以加速基于dataset_id
的查询。max_kb_problem_paragraph_mapping
存储问题与段落的映射关系,包括映射 ID、数据集 ID、文档 ID、段落 ID、问题 ID、创建者、创建时间、更新者、更新时间、删除标志及租户 ID。
创建了多个索引(
dataset_id
、document_id
、paragraph_id
、problem_id
)以优化相关查询。max_kb_embedding_cache
存储嵌入向量的缓存信息,包括缓存 ID、文本内容
t
、模型m
、向量v
、MD5 值。创建了基于md5
的索引,以加速基于 MD5 值的查询。max_kb_document_markdown_cache
存储文档的 Markdown 缓存,包括缓存 ID 和目标路径
target
提交使用 s3 的 url。max_kb_document_markdown_page_cache
存储文档 Markdown 页面的缓存信息,包括缓存 ID、目标路径(提交使用 s3 的 url)、内容、耗时(
elapsed
)、模型、大模型指纹、完成的 token 数、提示的 token 数、总 token 数。max_kb_application_chat
存储应用程序的聊天会话信息,包括聊天 ID、摘要、应用 ID、客户端 ID、聊天类型、是否删除、创建者、创建时间、更新者、更新时间、删除标志及租户 ID。
chat_type
值及其含义0
普通会话1
调试会话
max_kb_application_chat_record
存储聊天记录的信息,包括记录 ID、投票状态、问题文本、回答文本、消息 token 数、回答 token 数、常量
const
、详细信息、改进段落 ID 列表、运行时间、索引、关联的聊天 ID、创建者、创建时间、更新者、更新时间、删除标志及租户 ID。创建了基于
chat_id
的索引,以优化与聊天相关的查询。max_kb_application_temp_setting
存储应用程序临时的推理设置,包括设置 ID 和设置内容(JSON 格式)。