warning
本教程是社区贡献,不受Open WebUI团队支持 。它仅作为如何为您的特定用例自定义Open WebUI的演示。想要贡献?请查看贡献教程。
[!WARNING]
此文档基于当前版本(0.5.11)创建,正在不断更新。
Open-WebUI内部SQLite数据库
对于Open-WebUI,SQLite数据库作为用户管理、聊天历史、文件存储和各种其他核心功能的支柱。理解这种结构对于任何希望有效贡献或维护项目的人来说都是必不可少的。
内部SQLite位置
您可以在root
-> data
-> webui.db
找到SQLite数据库
📁 Root (/)
├── 📁 data
│ ├── 📁 cache
│ ├── 📁 uploads
│ ├── 📁 vector_db
│ └── 📄 webui.db
├── 📄 dev.sh
├── 📁 open_webui
├── 📄 requirements.txt
├── 📄 start.sh
└── 📄 start_windows.bat
本地复制数据库
如果您想将运行在容器中的Open-WebUI SQLite数据库复制到本地机器,可以使用:
docker cp open-webui:/app/backend/data/webui.db ./webui.db
或者,您可以使用以下方式在容器内访问数据库:
docker exec -it open-webui /bin/sh
表格概述
以下是Open-WebUI SQLite数据库中表格的完整列表。表格按字母顺序列出并编号以便查看。
序号 | 表格名称 | 描述 |
---|---|---|
01 | auth | 存储用户身份验证凭据和登录信息 |
02 | channel | 管理聊天频道及其配置 |
03 | channel_member | 跟踪频道内用户成员资格和权限 |
04 | chat | 存储聊天会话及其元数据 |
05 | chatidtag | 映射聊天与其关联标签之间的关系 |
06 | config | 维护系统级配置设置 |
07 | document | 存储文档及其知识管理元数据 |
08 | feedback | 捕获用户反馈和评级 |
09 | file | 管理上传的文件及其元数据 |
10 | folder | 将文件和内容组织成层次结构 |
11 | function | 存储自定义函数及其配置 |
12 | group | 管理用户组及其权限 |
13 | knowledge | 存储知识库条目和相关信息 |
14 | memory | 维护聊天历史和上下文记忆 |
15 | message | 存储单个聊天消息及其内容 |
16 | message_reaction | 记录用户对消息的反应(表情符号/响应) |
17 | migrate_history | 跟踪数据库模式版本和迁移记录 |
18 | model | 管理AI模型配置和设置 |
19 | prompt | 存储AI提示的模板和配置 |
20 | tag | 管理用于内容分类的标签/标识 |
21 | tool | 存储系统工具和集成的配置 |
22 | user | 维护用户配置文件和账户信息 |
注意:Open-WebUI的SQLite数据库中还有两个与Open-WebUI核心功能无关的附加表格,已被排除:
- Alembic版本表
- 迁移历史表
现在我们有了所有表格,让我们了解每个表格的结构。
Auth表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | String | PRIMARY KEY | 唯一标识符 |
String | - | 用户的电子邮件 | |
password | Text | - | 哈希密码 |
active | Boolean | - | 账户状态 |
关于auth表需要了解的事项:
- 主键使用UUID
- 与
users
表存在一对一关系(共享id)
Channel表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | Text | PRIMARY KEY | 唯一标识符(UUID) |
user_id | Text | - | 频道的所有者/创建者 |
type | Text | nullable | 频道类型 |
name | Text | - | 频道名称 |
description | Text | nullable | 频道描述 |
data | JSON | nullable | 灵活的数据存储 |
meta | JSON | nullable | 频道元数据 |
access_control | JSON | nullable | 权限设置 |
created_at | BigInteger | - | 创建时间戳(纳秒) |
updated_at | BigInteger | - | 最后更新时间戳(纳秒) |
关于channel表需要了解的事项:
- 主键使用UUID
- 频道名称不区分大小写(存储为小写)
Channel Member表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | TEXT | NOT NULL | 频道成员资格的唯一标识符 |
channel_id | TEXT | NOT NULL | 对频道的引用 |
user_id | TEXT | NOT NULL | 对用户的引用 |
created_at | BIGINT | - | 成员资格创建时的时间戳 |
Chat表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | String | PRIMARY KEY | 唯一标识符(UUID) |
user_id | String | - | 聊天的所有者 |
title | Text | - | 聊天标题 |
chat | JSON | - | 聊天内容和历史 |
created_at | BigInteger | - | 创建时间戳 |
updated_at | BigInteger | - | 最后更新时间戳 |
share_id | Text | UNIQUE, nullable | 共享标识符 |
archived | Boolean | default=False | 归档状态 |
pinned | Boolean | default=False, nullable | 固定状态 |
meta | JSON | server_default="" | 包括标签的元数据 |
folder_id | Text | nullable | 父文件夹ID |
Chat ID Tag表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | VARCHAR(255) | NOT NULL | 唯一标识符 |
tag_name | VARCHAR(255) | NOT NULL | 标签名称 |
chat_id | VARCHAR(255) | NOT NULL | 对聊天的引用 |
user_id | VARCHAR(255) | NOT NULL | 对用户的引用 |
timestamp | INTEGER | NOT NULL | 创建时间戳 |
Config表
列名 | 数据类型 | 约束 | 默认值 | 描述 |
---|---|---|---|---|
id | INTEGER | NOT NULL | - | 主键标识符 |
data | JSON | NOT NULL | - | 配置数据 |
version | INTEGER | NOT NULL | - | 配置版本号 |
created_at | DATETIME | NOT NULL | CURRENT_TIMESTAMP | 创建时间戳 |
updated_at | DATETIME | - | CURRENT_TIMESTAMP | 最后更新时间戳 |
Feedback表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | Text | PRIMARY KEY | 唯一标识符(UUID) |
user_id | Text | - | 提供反馈的用户 |
version | BigInteger | default=0 | 反馈版本号 |
type | Text | - | 反馈类型 |
data | JSON | nullable | 包括评级的反馈数据 |
meta | JSON | nullable | 元数据(竞技场、聊天ID等) |
snapshot | JSON | nullable | 关联的聊天快照 |
created_at | BigInteger | - | 创建时间戳 |
updated_at | BigInteger | - | 最后更新时间戳 |
File表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | String | PRIMARY KEY | 唯一标识符 |
user_id | String | - | 文件的所有者 |
hash | Text | nullable | 文件哈希/校验和 |
filename | Text | - | 文件名称 |
path | Text | nullable | 文件系统路径 |
data | JSON | nullable | 文件相关数据 |
meta | JSON | nullable | 文件元数据 |
access_control | JSON | nullable | 权限设置 |
created_at | BigInteger | - | 创建时间戳 |
updated_at | BigInteger | - | 最后更新时间戳 |
meta
字段的预期结构:
{
"name": string, # 可选显示名称
"content_type": string, # MIME类型
"size": integer, # 文件大小(字节)
# 通过ConfigDict(extra="allow")支持的附加元数据
}
Folder表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | Text | PRIMARY KEY | 唯一标识符(UUID) |
parent_id | Text | nullable | 层次结构的父文件夹ID |
user_id | Text | - | 文件夹的所有者 |
name | Text | - | 文件夹名称 |
items | JSON | nullable | 文件夹内容 |
meta | JSON | nullable | 文件夹元数据 |
is_expanded | Boolean | default=False | UI展开状态 |
created_at | BigInteger | - | 创建时 间戳 |
updated_at | BigInteger | - | 最后更新时间戳 |
关于folder表需要了解的事项:
- 文件夹可以嵌套(parent_id引用)
- 根文件夹的parent_id为null
- 文件夹名称在同一父级下必须唯一
Function表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | String | PRIMARY KEY | 唯一标识符 |
user_id | String | - | 函数的所有者 |
name | Text | - | 函数名称 |
type | Text | - | 函数类型 |
content | Text | - | 函数内容/代码 |
meta | JSON | - | 函数元数据 |
valves | JSON | - | 函数控制设置 |
is_active | Boolean | - | 函数活跃状态 |
is_global | Boolean | - | 全局可用标志 |
created_at | BigInteger | - | 创建时间戳 |
updated_at | BigInteger | - | 最后更新时间戳 |
关于function表需要了解的事项:
type
只能是:["filter", "action"]
Group表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | Text | PRIMARY KEY, UNIQUE | 唯一标识符(UUID) |
user_id | Text | - | 组的所有者/创建者 |
name | Text | - | 组名称 |
description | Text | - | 组描述 |
data | JSON | nullable | 附加组数据 |
meta | JSON | nullable | 组元数据 |
permissions | JSON | nullable | 权限配置 |
user_ids | JSON | nullable | 成员用户ID列表 |
created_at | BigInteger | - | 创建时间戳 |
updated_at | BigInteger | - | 最后更新时间戳 |
Knowledge表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | Text | PRIMARY KEY, UNIQUE | 唯一标识符(UUID) |
user_id | Text | - | 知识库所有者 |
name | Text | - | 知识库名称 |
description | Text | - | 知识库描述 |
data | JSON | nullable | 知识库内容 |
meta | JSON | nullable | 附加元数据 |
access_control | JSON | nullable | 访问控制规则 |
created_at | BigInteger | - | 创建时间戳 |
updated_at | BigInteger | - | 最后更新时间戳 |
access_control
字段的预期结构:
{
"read": {
"group_ids": ["group_id1", "group_id2"],
"user_ids": ["user_id1", "user_id2"]
},
"write": {
"group_ids": ["group_id1", "group_id2"],
"user_ids": ["user_id1", "user_id2"]
}
}
Memory表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | String | PRIMARY KEY | 唯一标识符(UUID) |
user_id | String | - | 记忆所有者 |
content | Text | - | 记忆内容 |
created_at | BigInteger | - | 创建时间戳 |
updated_at | BigInteger | - | 最后更新时间戳 |
Message表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | Text | PRIMARY KEY | 唯一标识符(UUID) |
user_id | Text | - | 消息作者 |
channel_id | Text | nullable | 关联频道 |
parent_id | Text | nullable | 线程的父消息 |
content | Text | - | 消息内容 |
data | JSON | nullable | 附加消息数据 |
meta | JSON | nullable | 消息元数据 |
created_at | BigInteger | - | 创建时间戳(纳秒) |
updated_at | BigInteger | - | 最后更新时间戳(纳秒) |
Message Reaction表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | Text | PRIMARY KEY | 唯一标识符(UUID) |
user_id | Text | - | 反应的用户 |
message_id | Text | - | 关联消息 |
name | Text | - | 反应名称/表情符号 |
created_at | BigInteger | - | 反应时间戳 |
Model表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | Text | PRIMARY KEY | 模型标识符 |
user_id | Text | - | 模型所有者 |
base_model_id | Text | nullable | 父模型引用 |
name | Text | - | 显示名称 |
params | JSON | - | 模型参数 |
meta | JSON | - | 模型元数据 |
access_control | JSON | nullable | 访问权限 |
is_active | Boolean | default=True | 活跃状态 |
created_at | BigInteger | - | 创建时间戳 |
updated_at | BigInteger | - | 最后更新时间戳 |
Prompt表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
command | String | PRIMARY KEY | 唯一命令标识符 |
user_id | String | - | 提示所有者 |
title | Text | - | 提示标题 |
content | Text | - | 提示内容/模板 |
timestamp | BigInteger | - | 最后更新时间戳 |
access_control | JSON | nullable | 访问权限 |
Tag表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | String | PK (composite) | 标准化标签标识符 |
name | String | - | 显示名称 |
user_id | String | PK (composite) | 标签所有者 |
meta | JSON | nullable | 标签元数据 |
关于tag表需要了解的事项:
- 主键是复合键(id, user_id)
Tool表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | String | PRIMARY KEY | 唯一标识符 |
user_id | String | - | 工具所有者 |
name | Text | - | 工具名称 |
content | Text | - | 工具内容/代码 |
specs | JSON | - | 工具规格 |
meta | JSON | - | 工具元数据 |
valves | JSON | - | 工具控制设置 |
access_control | JSON | nullable | 访问权限 |
created_at | BigInteger | - | 创建时间戳 |
updated_at | BigInteger | - | 最后更新时间戳 |
User表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | String | PRIMARY KEY | 唯一标识符 |
name | String | - | 用户姓名 |
String | - | 用户电子邮件 | |
role | String | - | 用户角色 |
profile_image_url | Text | - | 头像图片路径 |
last_active_at | BigInteger | - | 最后活跃时间戳 |
updated_at | BigInteger | - | 最后更新时间戳 |
created_at | BigInteger | - | 创建时间戳 |
api_key | String | UNIQUE, nullable | API认证密钥 |
settings | JSON | nullable | 用户偏好设置 |
info | JSON | nullable | 附加用户信息 |
oauth_sub | Text | UNIQUE | OAuth主题标识符 |
实体关系图
为了帮助可视化表格之间的关系,请参考下面用Mermaid生成的实体关系图(ERD)。