Pular para o conteúdo principal
atenção

Este tutorial é uma contribuição da comunidade e não é suportado pela equipe do Open WebUI. Serve apenas como uma demonstração de como personalizar o Open WebUI para seu caso de uso específico. Quer contribuir? Confira o tutorial de contribuição.

[!WARNING]
Esta documentação foi criada com base na versão atual (0.5.11) e está sendo constantemente atualizada.

Banco de Dados SQLite Interno do Open-WebUI

Para o Open-WebUI, o banco de dados SQLite serve como a espinha dorsal para gerenciamento de usuários, histórico de conversas, armazenamento de arquivos e várias outras funcionalidades principais. Compreender essa estrutura é essencial para quem deseja contribuir ou manter o projeto de forma eficaz.

Localização do SQLite Interno

Você pode encontrar o banco de dados SQLite em root -> data -> webui.db

📁 Root (/)
├── 📁 data
│ ├── 📁 cache
│ ├── 📁 uploads
│ ├── 📁 vector_db
│ └── 📄 webui.db
├── 📄 dev.sh
├── 📁 open_webui
├── 📄 requirements.txt
├── 📄 start.sh
└── 📄 start_windows.bat

Copiar o Banco de Dados Localmente

Se você quiser copiar o banco de dados SQLite do Open-WebUI que está sendo executado no contêiner para sua máquina local, você pode usar:

docker cp open-webui:/app/backend/data/webui.db ./webui.db

Alternativamente, você pode acessar o banco de dados dentro do contêiner usando:

docker exec -it open-webui /bin/sh

Visão Geral das Tabelas

Aqui está uma lista completa de tabelas no banco de dados SQLite do Open-WebUI. As tabelas estão listadas em ordem alfabética e numeradas para conveniência.

Nome da TabelaDescrição
01authArmazena as credenciais de autenticação e informações de login de usuários
02channelGerencia os canais de conversa e suas configurações
03channel_memberAcompanha a associação de usuários e permissões nos canais
04chatArmazena sessões de conversa e seus metadados
05chatidtagMapeia relacionamentos entre conversas e as tags associadas
06configMantém as configurações de sistema
07documentArmazena documentos e seus metadados para gerenciamento de conhecimento
08feedbackCaptura feedback e avaliações dos usuários
09fileGerencia arquivos enviados e seus metadados
10folderOrganiza arquivos e conteúdos em estruturas hierárquicas
11functionArmazena funções personalizadas e suas configurações
12groupGerencia grupos de usuários e suas permissões
13knowledgeArmazena entradas da base de conhecimento e informações relacionadas
14memoryMantém o histórico das conversas e memória contextual
15messageArmazena mensagens de conversas individuais e seus conteúdos
16message_reactionRegistra reações dos usuários (emojis/respostas) às mensagens
17migrate_historyAcompanha a versão do esquema do banco de dados e registros de migração
18modelGerencia as configurações e configurações dos modelos de IA
19promptArmazena templates e configurações para prompts de IA
20tagGerencia tags/etiquetas para categorização de conteúdo
21toolArmazena configurações para ferramentas e integrações do sistema
22userMantém perfis de usuários e informações de conta

Nota: existem duas tabelas adicionais no banco de dados SQLite do Open-WebUI que não estão relacionadas à funcionalidade principal do Open-WebUI e foram excluídas:

  • Tabela de Versão do Alembic
  • Tabela de Histórico de Migração

Agora que temos todas as tabelas, vamos entender a estrutura de cada uma delas.

Tabela Auth

Nome da ColunaTipo de DadoRestriçõesDescrição
idStringPRIMARY KEYIdentificador único
emailString-Email do usuário
passwordText-Senha criptografada
activeBoolean-Status da conta

Coisas para saber sobre a tabela auth:

  • Usa UUID como chave primária
  • Relacionamento Um-para-Um com a tabela users (id compartilhado)

Tabela Channel

Nome da ColunaTipo de DadoRestriçõesDescrição
idTextoCHAVE PRIMÁRIAIdentificador único (UUID)
user_idTexto-Proprietário/criador do canal
typeTextopode ser nuloTipo de canal
nameTexto-Nome do canal
descriptionTextopode ser nuloDescrição do canal
dataJSONpode ser nuloArmazenamento flexível de dados
metaJSONpode ser nuloMetadados do canal
access_controlJSONpode ser nuloConfigurações de permissões
created_atBigInteger-Timestamp de criação (nanosegundos)
updated_atBigInteger-Timestamp da última atualização

Considerações sobre a tabela de autenticação:

  • Utiliza UUID como chave primária
  • Nomes de canais não diferencia maiúsculas de minúsculas (armazenados em minúsculas)

Tabela de Membros do Canal

Nome da ColunaTipo de DadosRestriçõesDescrição
idTEXTONÃO NULOIdentificador único da associação ao canal
channel_idTEXTONÃO NULOReferência ao canal
user_idTEXTONÃO NULOReferência ao usuário
created_atBIGINT-Timestamp de quando a associação foi criada

Tabela de Chat

Nome da ColunaTipo de DadosRestriçõesDescrição
idStringCHAVE PRIMÁRIAIdentificador único (UUID)
user_idString-Proprietário do chat
titleTexto-Título do chat
chatJSON-Conteúdo e histórico do chat
created_atBigInteger-Timestamp de criação
updated_atBigInteger-Timestamp da última atualização
share_idTextoÚNICO, pode ser nuloIdentificador de compartilhamento
archivedBooleanpadrão=FalseStatus de arquivamento
pinnedBooleanpadrão=False, pode ser nuloStatus de fixação
metaJSONpadrão_do_servidor=""Metadados incluindo tags
folder_idTextopode ser nuloID da pasta pai

Tabela de Tags de ID do Chat

Nome da ColunaTipo de DadosRestriçõesDescrição
idVARCHAR(255)NÃO NULOIdentificador único
tag_nameVARCHAR(255)NÃO NULONome da tag
chat_idVARCHAR(255)NÃO NULOReferência ao chat
user_idVARCHAR(255)NÃO NULOReferência ao usuário
timestampINTEGERNÃO NULOTimestamp de criação

Configuração

Nome da ColunaTipo de DadosRestriçõesPadrãoDescrição
idINTEGERNÃO NULO-Identificador chave primária
dataJSONNÃO NULO-Dados de configuração
versionINTEGERNÃO NULO-Número da versão da configuração
created_atDATETIMENÃO NULOTIMESTAMP_ATUALTimestamp de criação
updated_atDATETIME-TIMESTAMP_ATUALTimestamp da última atualização

Tabela de Feedback

Nome da ColunaTipo de DadosRestriçõesDescrição
idTextoCHAVE PRIMÁRIAIdentificador único (UUID)
user_idTexto-Usuário que forneceu feedback
versionBigIntegerpadrão=0Número da versão do feedback
typeTexto-Tipo de feedback
dataJSONpode ser nuloDados de feedback incluindo avaliações
metaJSONpode ser nuloMetadados (arena, chat_id, etc)
snapshotJSONpode ser nuloSnapshot associado ao chat
created_atBigInteger-Timestamp de criação
updated_atBigInteger-Timestamp da última atualização

Tabela de Arquivo

Nome da ColunaTipo de DadosRestriçõesDescrição
idStringPRIMARY KEYIdentificador único
user_idString-Proprietário do arquivo
hashTextnullableHash/checksum do arquivo
filenameText-Nome do arquivo
pathTextnullableCaminho no sistema de arquivos
dataJSONnullableDados relacionados ao arquivo
metaJSONnullableMetadados do arquivo
access_controlJSONnullableConfigurações de permissão
created_atBigInteger-Timestamp de criação
updated_atBigInteger-Timestamp da última atualização

Formato esperado para o campo meta:

{
"name": string, # Nome opcional para exibição
"content_type": string, # Tipo MIME
"size": integer, # Tamanho do arquivo em bytes
# Metadados adicionais suportados via ConfigDict(extra="allow")
}

Tabela de Pastas

Nome da ColunaTipo de DadosRestriçõesDescrição
idTextPRIMARY KEYIdentificador único (UUID)
parent_idTextnullableID da pasta pai para hierarquia
user_idText-Proprietário da pasta
nameText-Nome da pasta
itemsJSONnullableConteúdo da pasta
metaJSONnullableMetadados da pasta
is_expandedBooleandefault=FalseEstado de expansão na interface
created_atBigInteger-Timestamp de criação
updated_atBigInteger-Timestamp da última atualização

Coisas a saber sobre a tabela de pastas:

  • Pastas podem ser aninhadas (referência a parent_id)
  • Pastas raíz têm parent_id nulo
  • Os nomes das pastas devem ser únicos dentro de um mesmo pai

Tabela de Funções

Nome da ColunaTipo de DadosRestriçõesDescrição
idStringPRIMARY KEYIdentificador único
user_idString-Proprietário da função
nameText-Nome da função
typeText-Tipo da função
contentText-Conteúdo/código da função
metaJSON-Metadados da função
valvesJSON-Configurações de controle da função
is_activeBoolean-Status ativo da função
is_globalBoolean-Indicador de disponibilidade global
created_atBigInteger-Timestamp de criação
updated_atBigInteger-Timestamp da última atualização

Coisas a saber sobre a tabela de funções:

  • type pode ser apenas: ["filter", "action"]

Tabela de Grupos

Nome da ColunaTipo de DadosRestriçõesDescrição
idTextPRIMARY KEY, UNIQUEIdentificador único (UUID)
user_idText-Proprietário/criador do grupo
nameText-Nome do grupo
descriptionText-Descrição do grupo
dataJSONnullableDados adicionais do grupo
metaJSONnullableMetadados do grupo
permissionsJSONnullableConfiguração de permissão
user_idsJSONnullableLista de IDs dos usuários membros
created_atBigInteger-Timestamp de criação
updated_atBigInteger-Timestamp da última atualização

Tabela de Conhecimento

Nome da ColunaTipo de DadosRestriçõesDescrição
idTextoPRIMARY KEY, UNIQUEIdentificador único (UUID)
user_idTexto-Proprietário da base de conhecimento
nameTexto-Nome da base de conhecimento
descriptionTexto-Descrição da base de conhecimento
dataJSONnullableConteúdo da base de conhecimento
metaJSONnullableMetadados adicionais
access_controlJSONnullableRegras de controle de acesso
created_atBigInteger-Timestamp de criação
updated_atBigInteger-Timestamp da última atualização

Estrutura esperada para os campos 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"]
}
}

Tabela de Memória

Nome da ColunaTipo de DadoRestriçõesDescrição
idStringPRIMARY KEYIdentificador único (UUID)
user_idString-Proprietário da memória
contentTexto-Conteúdo da memória
created_atBigInteger-Timestamp de criação
updated_atBigInteger-Timestamp da última atualização

Tabela de Mensagem

Nome da ColunaTipo de DadoRestriçõesDescrição
idTextoPRIMARY KEYIdentificador único (UUID)
user_idTexto-Autor da mensagem
channel_idTextonullableCanal associado
parent_idTextonullableMensagem pai para threads
contentTexto-Conteúdo da mensagem
dataJSONnullableDados adicionais da mensagem
metaJSONnullableMetadados da mensagem
created_atBigInteger-Timestamp de criação (nanosegundos)
updated_atBigInteger-Timestamp da última atualização (nanosegundos)

Tabela de Reações a Mensagens

Nome da ColunaTipo de DadoRestriçõesDescrição
idTextoPRIMARY KEYIdentificador único (UUID)
user_idTexto-Usuário que reagiu
message_idTexto-Mensagem associada
nameTexto-Nome/reação emoji
created_atBigInteger-Timestamp da reação

Tabela de Modelos

Nome da ColunaTipo de DadoRestriçõesDescrição
idTextoPRIMARY KEYIdentificador do modelo
user_idTexto-Proprietário do modelo
base_model_idTextonullableReferência ao modelo pai
nameTexto-Nome de exibição
paramsJSON-Parâmetros do modelo
metaJSON-Metadados do modelo
access_controlJSONnullablePermissões de acesso
is_activeBooleandefault=TrueStatus ativo
created_atBigInteger-Timestamp de criação
updated_atBigInteger-Timestamp da última atualização

Tabela de Prompt

Nome da ColunaTipo de DadoRestriçõesDescrição
commandStringPRIMARY KEYIdentificador único do comando
user_idString-Proprietário do prompt
titleTexto-Título do prompt
contentTexto-Conteúdo/modelo do prompt
timestampBigInteger-Timestamp da última atualização
access_controlJSONnullablePermissões de acesso

Tabela de Tags

Nome da ColunaTipo de DadosRestriçõesDescrição
idStringPK (composto)Identificador normalizado de tag
nameString-Nome de exibição
user_idStringPK (composto)Proprietário da tag
metaJSONnullableMetadados da tag

Pontos para saber sobre a tabela de tag:

  • Chave primária é composta (id, user_id)

Tabela de Ferramenta

Nome da ColunaTipo de DadosRestriçõesDescrição
idStringCHAVE PRIMÁRIAIdentificador único
user_idString-Proprietário da ferramenta
nameText-Nome da ferramenta
contentText-Conteúdo/código da ferramenta
specsJSON-Especificações da ferramenta
metaJSON-Metadados da ferramenta
valvesJSON-Configurações de controle da ferramenta
access_controlJSONnullablePermissões de acesso
created_atBigInteger-Timestamp de criação
updated_atBigInteger-Timestamp da última atualização

Tabela de Usuário

Nome da ColunaTipo de DadosRestriçõesDescrição
idStringCHAVE PRIMÁRIAIdentificador único
nameString-Nome do usuário
emailString-Email do usuário
roleString-Função do usuário
profile_image_urlText-Caminho da imagem de perfil
last_active_atBigInteger-Timestamp da última atividade
updated_atBigInteger-Timestamp da última atualização
created_atBigInteger-Timestamp de criação
api_keyStringÚNICO, nullableChave de autenticação API
settingsJSONnullablePreferências do usuário
infoJSONnullableInformações adicionais do usuário
oauth_subTextÚNICOIdentificador de assunto OAuth

Diagrama de Relacionamento de Entidades

Para ajudar a visualizar o relacionamento entre as tabelas, consulte o Diagrama de Relacionamento de Entidades (ERD) abaixo, gerado com Mermaid.