警告
本教程由社区贡献,不获得 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 | 跟踪数据库模式版本和迁移记录 |
18 | model | 管理 AI 模型配置和设置 |
19 | prompt | 存储 AI 提示的模板和配置 |
20 | tag | 管理内容分类的标签 |
21 | tool | 存储系统工具和集成的配置 |
22 | user | 维护用户配置文件和账户信息 |
注意:Open-WebUI 的 SQLite 数据库中还有两个与 Open-WebUI 核心功能无关的表,已排除在外。
- Alembic 版本表
- 迁移历史表
现在我们已经列出了所有表,接下来了解每个表的结构。
认证表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 字符串 | 主键 | 唯一标识符 |
字符串 | - | 用户邮箱 | |
password | 文本 | - | 哈希密码 |
active | 布尔 | - | 账户状态 |
关于认证表的须知事项
- 使用 UUID 作为主键
- 与
users
表的一对一关系(共享 id)
频道表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 文本 | 主键 | 唯一标识符 (UUID) |
user_id | 文本 | - | 频道的拥有者/创建者 |
type | 文本 | 可为空 | 频道类型 |
name | 文本 | - | 频道名称 |
description | 文本 | 可为空 | 频道描述 |
data | JSON | 可为空 | 灵活数据存储 |
meta | JSON | 可为空 | 频道元数据 |
access_control | JSON | 可为空 | 权限设置 |
created_at | 大整数 | - | 创建时间戳(纳秒) |
updated_at | 大整数 | - | 上次更新时间戳(纳秒) |
关于认证表的须知事项
- 使用 UUID 作为主键
- 频道名称不区分大小写(以小写形式存储)
频道成员表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 文本 | 非空 | 频道成员的唯一标识符 |
channel_id | 文本 | 非空 | 频道引用 |
user_id | 文本 | 非空 | 用户引用 |
created_at | 大整数 | - | 成员创建时的时间戳 |
聊天表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 字符串 | 主键 | 唯一标识符 (UUID) |
user_id | 字符串 | - | 聊天的所有者 |
title | 文本 | - | 聊天标题 |
chat | JSON | - | 聊天内容和历史记录 |
created_at | 大整数 | - | 创建时间戳 |
updated_at | 大整数 | - | 上次更新时间戳 |
share_id | 文本 | 唯一,可为空 | 共享标识符 |
archived | 布尔 | 默认=False | 归档状态 |
pinned | 布尔 | 默认=False,可为空 | 置顶状态 |
meta | JSON | server_default="" | 包含标签的元数据 |
folder_id | 文本 | 可为空 | 父文件夹 ID |
聊天 ID 标签表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | VARCHAR(255) | 非空 | 唯一标识符 |
tag_name | VARCHAR(255) | 非空 | 标签名称 |
chat_id | VARCHAR(255) | 非空 | 聊天引用 |
user_id | VARCHAR(255) | 非空 | 用户引用 |
timestamp | 整数 | 非空 | 创建时间戳 |
配置
列名 | 数据类型 | 约束 | 默认 | 描述 |
---|---|---|---|---|
id | 整数 | 非空 | - | 主键标识符 |
data | JSON | 非空 | - | 配置数据 |
version | 整数 | 非空 | - | 配置版本号 |
created_at | 日期时间 | 非空 | CURRENT_TIMESTAMP | 创建时间戳 |
updated_at | 日期时间 | - | CURRENT_TIMESTAMP | 上次更新时间戳 |
反馈表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 文本 | 主键 | 唯一标识符 (UUID) |
user_id | 文本 | - | 提供反馈的用户 |
version | 大整数 | 默认值=0 | 反馈版本号 |
type | 文本 | - | 反馈类型 |
data | JSON | 可为空 | 包含评分的反馈数据 |
meta | JSON | 可为空 | 元数据(arena, chat_id 等) |
snapshot | JSON | 可为空 | 关联的聊天快照 |
created_at | 大整数 | - | 创建时间戳 |
updated_at | 大整数 | - | 上次更新时间戳 |
文件表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
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")
}
文件夹表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 文本 | 主键 | 唯一标识符 (UUID) |
parent_id | 文本 | 可为空 | 用于层次结构的父文件夹 ID |
user_id | 文本 | - | 文件夹所有者 |
name | 文本 | - | 文件夹名称 |
items | JSON | 可为空 | 文件夹内容 |
meta | JSON | 可为空 | 文件夹元数据 |
is_expanded | 布尔 | 默认=False | UI 展开状态 |
created_at | 大整数 | - | 创建时间戳 |
updated_at | 大整数 | - | 上次更新时间戳 |
关于文件夹表的须知事项
- 文件夹可以嵌套(parent_id 引用)
- 根文件夹的 parent_id 为空
- 文件夹名称在同一父级下必须唯一
函数表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 字符串 | 主键 | 唯一标识符 |
user_id | 字符串 | - | 函数所有者 |
name | 文本 | - | 函数名称 |
type | 文本 | - | 函数类型 |
content | 文本 | - | 函数内容/代码 |
meta | JSON | - | 函数元数据 |
valves | JSON | - | 函数控制设置 |
is_active | 布尔 | - | 函数激活状态 |
is_global | 布尔 | - | 全局可用标志 |
created_at | 大整数 | - | 创建时间戳 |
updated_at | 大整数 | - | 上次更新时间戳 |
关于文件夹表的须知事项
type
只能是:["filter", "action"]
群组表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 文本 | 主键,唯一 | 唯一标识符 (UUID) |
user_id | 文本 | - | 群组拥有者/创建者 |
name | 文本 | - | 群组名称 |
description | 文本 | - | 群组描述 |
data | JSON | 可为空 | 附加群组数据 |
meta | JSON | 可为空 | 群组元数据 |
permissions | JSON | 可为空 | 权限配置 |
user_ids | JSON | 可为空 | 成员用户ID列表 |
created_at | 大整数 | - | 创建时间戳 |
updated_at | 大整数 | - | 上次更新时间戳 |
知识表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
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"]
}
}
记忆表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 字符串 | 主键 | 唯一标识符 (UUID) |
user_id | 字符串 | - | 记忆所有者 |
content | 文本 | - | 记忆内容 |
created_at | 大整数 | - | 创建时间戳 |
updated_at | 大整数 | - | 上次更新时间戳 |
消息表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 文本 | 主键 | 唯一标识符 (UUID) |
user_id | 文本 | - | 消息作者 |
channel_id | 文本 | 可为空 | 关联频道 |
parent_id | 文本 | 可为空 | 用于主题的父消息 |
content | 文本 | - | 消息内容 |
data | JSON | 可为空 | 附加消息数据 |
meta | JSON | 可为空 | 消息元数据 |
created_at | 大整数 | - | 创建时间戳(纳秒) |
updated_at | 大整数 | - | 上次更新时间戳(纳秒) |
消息反应表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 文本 | 主键 | 唯一标识符 (UUID) |
user_id | 文本 | - | 做出反应的用户 |
message_id | 文本 | - | 关联消息 |
name | 文本 | - | 反应名称/表情符号 |
created_at | 大整数 | - | 反应时间戳 |
模型表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 文本 | 主键 | 模型标识符 |
user_id | 文本 | - | 模型所有者 |
base_model_id | 文本 | 可为空 | 父模型引用 |
name | 文本 | - | 显示名称 |
params | JSON | - | 模型参数 |
meta | JSON | - | 模型元数据 |
access_control | JSON | 可为空 | 访问权限 |
is_active | 布尔 | 默认=True | 激活状态 |
created_at | 大整数 | - | 创建时间戳 |
updated_at | 大整数 | - | 上次更新时间戳 |
提示表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
command | 字符串 | 主键 | 唯一命令标识符 |
user_id | 字符串 | - | 提示所有者 |
title | 文本 | - | 提示标题 |
content | 文本 | - | 提示内容/模板 |
timestamp | 大整数 | - | 上次更新时间戳 |
access_control | JSON | 可为空 | 访问权限 |
标签表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 字符串 | 主键(复合) | 标准化标签标识符 |
name | 字符串 | - | 显示名称 |
user_id | 字符串 | 主键(复合) | 标签所有者 |
meta | JSON | 可为空 | 标签元数据 |
关于标签表的须知事项
- 主键是复合的 (id, user_id)
工具表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
id | 字符串 | 主键 | 唯一标识符 |
user_id | 字符串 | - | 工具所有者 |
name | 文本 | - | 工具名称 |
content | 文本 | - | 工具内容/代码 |
specs | JSON | - | 工具规格 |
meta | JSON | - | 工具元数据 |
valves | JSON | - | 工具控制设置 |
access_control | JSON | 可为空 | 访问权限 |
created_at | 大整数 | - | 创建时间戳 |
updated_at | 大整数 | - | 上次更新时间戳 |
用户表
列名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
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)。