警告
本教程由社区贡献,不受 Open WebUI 团队支持。它仅作为如何为您的特定用例定制 Open WebUI 的演示。想做贡献?请查看贡献教程。
[!警告]
本文档基于当前版本 (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 | 跟踪数据库 schema 版本和迁移记录 |
18 | model | 管理 AI 模型配置和设置 |
19 | prompt | 存储 AI 提示的模板和配置 |
20 | tag | 管理用于内容分类的标签/标记 |
21 | tool | 存储系统工具和集成的配置 |
22 | user | 维护用户个人资料和账户信息 |
注意:Open-WebUI 的 SQLite 数据库中还有两个与 Open-WebUI 核心功能无关的表,在此已排除
- Alembic 版本表
- 迁移历史表
既然我们了解了所有表格,接下来看看每个表格的结构。
Auth 表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 字符串 | 主键 | 唯一标识符 |
字符串 | - | 用户邮箱 | |
password | 文本 | - | 哈希密码 |
active | 布尔值 | - | 账户状态 |
关于 auth 表需要了解的事项
- 使用 UUID 作为主键
- 与
users
表存在一对一关系(共享 id)
Channel 表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 文本 | 主键 | 唯一标识符 (UUID) |
user_id | 文本 | - | 频道的拥有者/创建者 |
type | 文本 | 可为空 | 频道类型 |
name | 文本 | - | 频道名称 |
description | 文本 | 可为空 | 频道描述 |
data | JSON | 可为空 | 灵活数据存储 |
meta | JSON | 可为空 | 频道元数据 |
access_control | JSON | 可为空 | 权限设置 |
created_at | 大整数 | - | 创建时间戳(纳秒) |
updated_at | 大整数 | - | 最后更新时间戳(纳秒) |
关于 auth 表需要了解的事项
- 使用 UUID 作为主键
- 频道名称不区分大小写(存储为小写)
Channel Member 表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 文本 | 不为空 | 频道成员资格的唯一标识符 |
channel_id | 文本 | 不为空 | 频道引用 |
user_id | 文本 | 不为空 | 用户引用 |
created_at | 大整数 | - | 创建成员资格的时间戳 |
Chat 表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 字符串 | 主键 | 唯一标识符 (UUID) |
user_id | 字符串 | - | 聊天的拥有者 |
title | 文本 | - | 聊天标题 |
chat | JSON | - | 聊天内容和历史记录 |
created_at | 大整数 | - | 创建时间戳 |
updated_at | 大整数 | - | 最后更新时间戳 |
share_id | 文本 | 唯一,可为空 | 分享标识符 |
archived | 布尔值 | 默认为 False | 归档状态 |
pinned | 布尔值 | 默认为 False,可为空 | 置顶状态 |
meta | JSON | 服务器默认值=""" | 元数据(包括标签) |
folder_id | 文本 | 可为空 | 父文件夹 ID |
Chat ID Tag 表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 可变字符 (255) | 不为空 | 唯一标识符 |
tag_name | 可变字符 (255) | 不为空 | 标签名称 |
chat_id | 可变字符 (255) | 不为空 | 聊天引用 |
user_id | 可变字符 (255) | 不为空 | 用户引用 |
timestamp | 整型 | 不为空 | 创建时间戳 |
Config 表
列名 | 数据类型 | 约束 | 默认值 | 描述 |
---|---|---|---|---|
id | 整型 | 不为空 | - | 主键标识符 |
data | JSON | 不为空 | - | 配置数据 |
version | 整型 | 不为空 | - | 配置版本号 |
created_at | 日期时间 | 不为空 | 当前时间戳 | 创建时间戳 |
updated_at | 日期时间 | - | 当前时间戳 | 最后更新时间戳 |
Feedback 表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 文本 | 主键 | 唯一标识符 (UUID) |
user_id | 文本 | - | 提供反馈的用户 |
version | 大整数 | 默认为 0 | 反馈版本号 |
type | 文本 | - | 反馈类型 |
data | JSON | 可为空 | 反馈数据(包括评分) |
meta | JSON | 可为空 | 元数据(竞技场、聊天 ID 等) |
snapshot | JSON | 可为空 | 关联的聊天快照 |
created_at | 大整数 | - | 创建时间戳 |
updated_at | 大整数 | - | 最后更新时间戳 |
File 表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 字符串 | 主键 | 唯一标识符 |
user_id | 字符串 | - | 文件拥有者 |
hash | 文本 | 可为空 | 文件哈希值/校验和 |
filename | 文本 | - | 文件名称 |
path | 文本 | 可为空 | 文件系统路径 |
data | JSON | 可为空 | 文件相关数据 |
meta | JSON | 可为空 | 文件元数据 |
access_control | JSON | 可为空 | 权限设置 |
created_at | 大整数 | - | 创建时间戳 |
updated_at | 大整数 | - | 最后更新时间戳 |
meta
字段的预期结构
{
"name": string, # Optional display name
"content_type": string, # MIME type
"size": integer, # File size in bytes
# Additional metadata supported via ConfigDict(extra="allow")
}
Folder 表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 文本 | 主键 | 唯一标识符 (UUID) |
parent_id | 文本 | 可为空 | 用于层级的父文件夹 ID |
user_id | 文本 | - | 文件夹拥有者 |
name | 文本 | - | 文件夹名称 |
items | JSON | 可为空 | 文件夹内容 |
meta | JSON | 可为空 | 文件夹元数据 |
is_expanded | 布尔值 | 默认为 False | UI 展开状态 |
created_at | 大整数 | - | 创建时间戳 |
updated_at | 大整数 | - | 最后更新时间戳 |
关于 folder 表需要了解的事项
- 文件夹可以嵌套(通过 parent_id 引用)
- 根文件夹的 parent_id 为 null
- 文件夹名称在同一父级下必须唯一
Function 表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 字符串 | 主键 | 唯一标识符 |
user_id | 字符串 | - | 函数拥有者 |
name | 文本 | - | 函数名称 |
type | 文本 | - | 函数类型 |
content | 文本 | - | 函数内容/代码 |
meta | JSON | - | 函数元数据 |
valves | JSON | - | 函数控制设置 |
is_active | 布尔值 | - | 函数活跃状态 |
is_global | 布尔值 | - | 全局可用标志 |
created_at | 大整数 | - | 创建时间戳 |
updated_at | 大整数 | - | 最后更新时间戳 |
关于 folder 表需要了解的事项
type
只能是:["filter", "action"]
Group 表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 文本 | 主键,唯一 | 唯一标识符 (UUID) |
user_id | 文本 | - | 群组拥有者/创建者 |
name | 文本 | - | 群组名称 |
description | 文本 | - | 群组描述 |
data | JSON | 可为空 | 其他群组数据 |
meta | JSON | 可为空 | 群组元数据 |
permissions | JSON | 可为空 | 权限配置 |
user_ids | JSON | 可为空 | 成员用户 ID 列表 |
created_at | 大整数 | - | 创建时间戳 |
updated_at | 大整数 | - | 最后更新时间戳 |
Knowledge 表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 文本 | 主键,唯一 | 唯一标识符 (UUID) |
user_id | 文本 | - | 知识库拥有者 |
name | 文本 | - | 知识库名称 |
description | 文本 | - | 知识库描述 |
data | JSON | 可为空 | 知识库内容 |
meta | JSON | 可为空 | 其他元数据 |
access_control | JSON | 可为空 | 访问控制规则 |
created_at | 大整数 | - | 创建时间戳 |
updated_at | 大整数 | - | 最后更新时间戳 |
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 | 字符串 | 主键 | 唯一标识符 (UUID) |
user_id | 字符串 | - | 记忆拥有者 |
content | 文本 | - | 记忆内容 |
created_at | 大整数 | - | 创建时间戳 |
updated_at | 大整数 | - | 最后更新时间戳 |
Message 表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 文本 | 主键 | 唯一标识符 (UUID) |
user_id | 文本 | - | 消息作者 |
channel_id | 文本 | 可为空 | 关联频道 |
parent_id | 文本 | 可为空 | 线程的父消息 |
content | 文本 | - | 消息内容 |
data | JSON | 可为空 | 其他消息数据 |
meta | JSON | 可为空 | 消息元数据 |
created_at | 大整数 | - | 创建时间戳(纳秒) |
updated_at | 大整数 | - | 最后更新时间戳(纳秒) |
Message Reaction 表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 文本 | 主键 | 唯一标识符 (UUID) |
user_id | 文本 | - | 做出反应的用户 |
message_id | 文本 | - | 关联消息 |
name | 文本 | - | 反应名称/表情符号 |
created_at | 大整数 | - | 反应时间戳 |
Model 表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 文本 | 主键 | 模型标识符 |
user_id | 文本 | - | 模型拥有者 |
base_model_id | 文本 | 可为空 | 父模型引用 |
name | 文本 | - | 显示名称 |
params | JSON | - | 模型参数 |
meta | JSON | - | 模型元数据 |
access_control | JSON | 可为空 | 访问权限 |
is_active | 布尔值 | 默认为 True | 活跃状态 |
created_at | 大整数 | - | 创建时间戳 |
updated_at | 大整数 | - | 最后更新时间戳 |
Prompt 表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
command | 字符串 | 主键 | 唯一命令标识符 |
user_id | 字符串 | - | 提示拥有者 |
title | 文本 | - | 提示标题 |
content | 文本 | - | 提示内容/模板 |
timestamp | 大整数 | - | 最后更新时间戳 |
access_control | JSON | 可为空 | 访问权限 |
Tag 表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 字符串 | 主键(复合) | 规范化的标签标识符 |
name | 字符串 | - | 显示名称 |
user_id | 字符串 | 主键(复合) | 标签拥有者 |
meta | JSON | 可为空 | 标签元数据 |
关于 tag 表需要了解的事项
- 主键是复合的(id, user_id)
Tool 表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 字符串 | 主键 | 唯一标识符 |
user_id | 字符串 | - | 工具拥有者 |
name | 文本 | - | 工具名称 |
content | 文本 | - | 工具内容/代码 |
specs | JSON | - | 工具规格 |
meta | JSON | - | 工具元数据 |
valves | JSON | - | 工具控制设置 |
access_control | JSON | 可为空 | 访问权限 |
created_at | 大整数 | - | 创建时间戳 |
updated_at | 大整数 | - | 最后更新时间戳 |
User 表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 字符串 | 主键 | 唯一标识符 |
name | 字符串 | - | 用户姓名 |
字符串 | - | 用户邮箱 | |
role | 字符串 | - | 用户角色 |
profile_image_url | 文本 | - | 头像路径 |
last_active_at | 大整数 | - | 最后活跃时间戳 |
updated_at | 大整数 | - | 最后更新时间戳 |
created_at | 大整数 | - | 创建时间戳 |
api_key | 字符串 | 唯一,可为空 | API 认证密钥 |
settings | JSON | 可为空 | 用户偏好设置 |
info | JSON | 可为空 | 其他用户信息 |
oauth_sub | 文本 | 唯一 | OAuth 主题标识符 |
实体关系图
为了帮助可视化表格之间的关系,请参考下方使用 Mermaid 生成的实体关系图(ERD)。