Saltar al contenido principal
aviso

Este tutorial es una contribución de la comunidad y no está respaldado por el equipo de Open WebUI. Solo sirve como una demostración sobre cómo personalizar Open WebUI para tu caso de uso específico. ¿Quieres contribuir? Consulta el tutorial de contribuciones.

[!WARNING]
Esta documentación fue creada basada en la versión actual (0.5.11) y se actualiza constantemente.

Base de datos interna SQLite en Open-WebUI

Para Open-WebUI, la base de datos SQLite actúa como el soporte para la gestión de usuarios, historial de chat, almacenamiento de archivos y varias otras funcionalidades principales. Entender esta estructura es esencial para cualquiera que desee contribuir o mantener el proyecto de manera efectiva.

Ubicación interna de SQLite

Puedes encontrar la base de datos SQLite en root -> data -> webui.db

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

Copiar la base de datos localmente

Si deseas copiar la base de datos SQLite de Open-WebUI que está ejecutándose en el contenedor a tu máquina local, puedes usar:

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

Alternativamente, puedes acceder a la base de datos dentro del contenedor utilizando:

docker exec -it open-webui /bin/sh

Visión general de las tablas

Aquí hay una lista completa de las tablas en la base de datos SQLite de Open-WebUI. Las tablas están listadas alfabéticamente y numeradas para mayor comodidad.

No.Nombre de la TablaDescripción
01authAlmacena credenciales de autenticación de usuarios e información de inicio de sesión
02channelAdministra canales de chat y sus configuraciones
03channel_memberLleva un registro de la membresía de usuarios y permisos dentro de canales
04chatAlmacena las sesiones de chat y sus metadatos
05chatidtagMapea relaciones entre chats y sus etiquetas asociadas
06configMantiene configuraciones del sistema a nivel global
07documentAlmacena documentos y sus metadatos para la gestión del conocimiento
08feedbackCaptura retroalimentación y calificaciones de usuarios
09fileAdministra los archivos subidos y sus metadatos
10folderOrganiza archivos y contenido en estructuras jerárquicas
11functionAlmacena funciones personalizadas y sus configuraciones
12groupAdministra grupos de usuarios y sus permisos
13knowledgeAlmacena entradas de la base de conocimientos e información relacionada
14memoryMantiene el historial de chat y la memoria de contexto
15messageAlmacena mensajes individuales y su contenido
16message_reactionRegistra las reacciones de los usuarios (emojis/respuestas) a los mensajes
17migrate_historyRastrea la versión del esquema de base de datos y los registros de migración
18modelAdministra configuraciones y ajustes de modelos de IA
19promptAlmacena plantillas y configuraciones para prompts de IA
20tagAdministra etiquetas y categoriza contenido
21toolAlmacena configuraciones de herramientas e integraciones del sistema
22userMantiene perfiles de usuarios e información de cuentas

Nota: hay dos tablas adicionales en la base de datos SQLite de Open-WebUI que no están relacionadas con la funcionalidad principal de Open-WebUI y que han sido excluidas:

  • Tabla de Version Alembic
  • Tabla de Historial de Migración

Ahora que tenemos todas las tablas, entendamos la estructura de cada una de ellas.

Tabla Auth

Nombre de la ColumnaTipo de DatoRestriccionesDescripción
idStringPRIMARY KEYIdentificador único
emailString-Email del usuario
passwordText-Contraseña cifrada
activeBoolean-Estado de la cuenta

Aspectos a saber sobre la tabla auth:

  • Usa UUID como clave primaria
  • Relación Uno a Uno con la tabla users (id compartida)

Tabla Channel

Nombre de la ColumnaTipo de DatoRestriccionesDescripción
idTextoCLAVE PRIMARIAIdentificador único (UUID)
user_idTexto-Propietario/creador del canal
typeTextonullableTipo de canal
nameTexto-Nombre del canal
descriptionTextonullableDescripción del canal
dataJSONnullableAlmacenamiento de datos flexible
metaJSONnullableMetadatos del canal
access_controlJSONnullableConfiguración de permisos
created_atBigInteger-Marca de tiempo de creación (nanosegundos)
updated_atBigInteger-Marca de tiempo de última actualización (nanosegundos)

Cosas que saber sobre la tabla auth:

  • Usa UUID como clave primaria
  • Nombres de canales insensibles a mayúsculas (almacenados en minúsculas)

Tabla de Miembro del Canal

Nombre de columnaTipo de datoRestriccionesDescripción
idTEXTONOT NULLIdentificador único de la membresía del canal
channel_idTEXTONOT NULLReferencia al canal
user_idTEXTONOT NULLReferencia al usuario
created_atBIGINT-Marca de tiempo de creación de la membresía

Tabla de Chat

Nombre de columnaTipo de datoRestriccionesDescripción
idStringCLAVE PRIMARIAIdentificador único (UUID)
user_idString-Propietario del chat
titleTexto-Título del chat
chatJSON-Contenido e historial del chat
created_atBigInteger-Marca de tiempo de creación
updated_atBigInteger-Marca de tiempo de última actualización
share_idTextoÚNICO, nullableIdentificador para compartir
archivedBooleanpredeterminado=FalseEstado de archivo
pinnedBooleanpredeterminado=False, nullableEstado de fijación
metaJSONserver_default=""Metadatos incluyendo etiquetas
folder_idTextonullableID del folder padre

Tabla de Etiquetas de Chat

Nombre de columnaTipo de datoRestriccionesDescripción
idVARCHAR(255)NOT NULLIdentificador único
tag_nameVARCHAR(255)NOT NULLNombre de la etiqueta
chat_idVARCHAR(255)NOT NULLReferencia al chat
user_idVARCHAR(255)NOT NULLReferencia al usuario
timestampINTEGERNOT NULLMarca de tiempo de creación

Configuración

Nombre de columnaTipo de datoRestriccionesPredeterminadoDescripción
idINTEGERNOT NULL-Identificador clave primaria
dataJSONNOT NULL-Datos de configuración
versionINTEGERNOT NULL-Número de versión de configuración
created_atDATETIMENOT NULLCURRENT_TIMESTAMPMarca de tiempo de creación
updated_atDATETIME-CURRENT_TIMESTAMPMarca de tiempo de última actualización

Tabla de Retroalimentación

Nombre de columnaTipo de datoRestriccionesDescripción
idTextoCLAVE PRIMARIAIdentificador único (UUID)
user_idTexto-Usuario que proporcionó retroalimentación
versionBigIntegerpredeterminado=0Número de versión de la retroalimentación
typeTexto-Tipo de retroalimentación
dataJSONnullableDatos de retroalimentación incluyendo calificaciones
metaJSONnullableMetadatos (arena, chat_id, etc.)
snapshotJSONnullableInstantánea de chat asociada
created_atBigInteger-Marca de tiempo de creación
updated_atBigInteger-Marca de tiempo de última actualización

Tabla de Archivos

Nombre de ColumnaTipo de DatosRestriccionesDescripción
idStringPRIMARY KEYIdentificador único
user_idString-Propietario del archivo
hashTextnullableHash/checksum del archivo
filenameText-Nombre del archivo
pathTextnullableRuta del sistema de archivos
dataJSONnullableDatos relacionados con el archivo
metaJSONnullableMetadatos del archivo
access_controlJSONnullableConfiguración de permisos
created_atBigInteger-Marca de tiempo de creación
updated_atBigInteger-Marca de tiempo de última actualización

La estructura esperada del campo meta:

{
"name": string, # Nombre opcional para mostrar
"content_type": string, # Tipo MIME
"size": integer, # Tamaño del archivo en bytes
# Metadatos adicionales compatibles a través de ConfigDict(extra="allow")
}

Tabla de Carpetas

Nombre de ColumnaTipo de DatosRestriccionesDescripción
idTextPRIMARY KEYIdentificador único (UUID)
parent_idTextnullableID de carpeta padre para jerarquía
user_idText-Propietario de la carpeta
nameText-Nombre de la carpeta
itemsJSONnullableContenido de la carpeta
metaJSONnullableMetadatos de la carpeta
is_expandedBooleandefault=FalseEstado de expansión en la interfaz gráfica
created_atBigInteger-Marca de tiempo de creación
updated_atBigInteger-Marca de tiempo de última actualización

Aspectos importantes sobre la tabla de carpetas:

  • Las carpetas pueden estar anidadas (referencia a parent_id)
  • Las carpetas raíz tienen parent_id nulo
  • Los nombres de las carpetas deben ser únicos dentro del mismo padre

Tabla de Funciones

Nombre de ColumnaTipo de DatosRestriccionesDescripción
idStringPRIMARY KEYIdentificador único
user_idString-Propietario de la función
nameText-Nombre de la función
typeText-Tipo de función
contentText-Código/contenido de la función
metaJSON-Metadatos de la función
valvesJSON-Configuración de control de la función
is_activeBoolean-Estado activo de la función
is_globalBoolean-Indicador de disponibilidad global
created_atBigInteger-Marca de tiempo de creación
updated_atBigInteger-Marca de tiempo de última actualización

Aspectos importantes sobre la tabla de funciones:

  • type solo puede ser: ["filter", "action"]

Tabla de Grupos

Nombre de ColumnaTipo de DatosRestriccionesDescripción
idTextPRIMARY KEY, UNIQUEIdentificador único (UUID)
user_idText-Propietario/creador del grupo
nameText-Nombre del grupo
descriptionText-Descripción del grupo
dataJSONnullableDatos adicionales del grupo
metaJSONnullableMetadatos del grupo
permissionsJSONnullableConfiguración de permisos
user_idsJSONnullableLista de IDs de usuario miembros
created_atBigInteger-Marca de tiempo de creación
updated_atBigInteger-Marca de tiempo de última actualización

Tabla de Conocimientos

Nombre de ColumnaTipo de DatosRestriccionesDescripción
idTextPRIMARY KEY, UNIQUEIdentificador único (UUID)
user_idText-Propietario de la base de conocimientos
nameText-Nombre de la base de conocimientos
descriptionText-Descripción de la base de conocimientos
dataJSONnullableContenido de la base de conocimientos
metaJSONnullableMetadatos adicionales
access_controlJSONnullableReglas de control de acceso
created_atBigInteger-Marca de tiempo de creación
updated_atBigInteger-Marca de tiempo de la última actualización

La estructura esperada de los 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"]
}
}

Tabla de Memoria

Nombre de la columnaTipo de datosRestriccionesDescripción
idStringPRIMARY KEYIdentificador único (UUID)
user_idString-Propietario de la memoria
contentText-Contenido de la memoria
created_atBigInteger-Marca de tiempo de creación
updated_atBigInteger-Marca de tiempo de la última actualización

Tabla de Mensajes

Nombre de la columnaTipo de datosRestriccionesDescripción
idTextPRIMARY KEYIdentificador único (UUID)
user_idText-Autor del mensaje
channel_idTextnullableCanal asociado
parent_idTextnullableMensaje padre para hilos
contentText-Contenido del mensaje
dataJSONnullableDatos adicionales del mensaje
metaJSONnullableMetadatos del mensaje
created_atBigInteger-Marca de tiempo de creación (nanosegundos)
updated_atBigInteger-Marca de tiempo de la última actualización (nanosegundos)

Tabla de Reacciones a Mensajes

Nombre de la columnaTipo de datosRestriccionesDescripción
idTextPRIMARY KEYIdentificador único (UUID)
user_idText-Usuario que reaccionó
message_idText-Mensaje asociado
nameText-Nombre/reacción emoji
created_atBigInteger-Marca de tiempo de la reacción

Tabla de Modelos

Nombre de la columnaTipo de datosRestriccionesDescripción
idTextPRIMARY KEYIdentificador del modelo
user_idText-Propietario del modelo
base_model_idTextnullableReferencia al modelo padre
nameText-Nombre para mostrar
paramsJSON-Parámetros del modelo
metaJSON-Metadatos del modelo
access_controlJSONnullablePermisos de acceso
is_activeBooleandefault=TrueEstatus activo
created_atBigInteger-Marca de tiempo de creación
updated_atBigInteger-Marca de tiempo de la última actualización

Tabla de Prompts

Nombre de la columnaTipo de datosRestriccionesDescripción
commandStringPRIMARY KEYIdentificador único del comando
user_idString-Propietario del prompt
titleText-Título del prompt
contentText-Contenido/plantilla del prompt
timestampBigInteger-Marca de tiempo de la última actualización
access_controlJSONnullablePermisos de acceso

Tabla de Etiquetas

Nombre de columnaTipo de datoRestriccionesDescripción
idCadenaPK (compuesto)Identificador normalizado de etiqueta
nameCadena-Nombre para mostrar
user_idCadenaPK (compuesto)Propietario de la etiqueta
metaJSONnullableMetadatos de la etiqueta

Cosas a saber sobre la tabla de etiquetas:

  • La clave principal es compuesta (id, user_id)

Tabla de herramientas

Nombre de columnaTipo de datoRestriccionesDescripción
idCadenaCLAVE PRIMARIAIdentificador único
user_idCadena-Propietario de la herramienta
nameTexto-Nombre de la herramienta
contentTexto-Contenido/código de la herramienta
specsJSON-Especificaciones de la herramienta
metaJSON-Metadatos de la herramienta
valvesJSON-Configuraciones de control de la herramienta
access_controlJSONnullablePermisos de acceso
created_atEntero grande-Marca de tiempo de creación
updated_atEntero grande-Marca de tiempo de la última actualización

Tabla de usuarios

Nombre de columnaTipo de datoRestriccionesDescripción
idCadenaCLAVE PRIMARIAIdentificador único
nameCadena-Nombre del usuario
emailCadena-Correo electrónico del usuario
roleCadena-Rol del usuario
profile_image_urlTexto-Ruta de la imagen de perfil
last_active_atEntero grande-Marca de tiempo de la última actividad
updated_atEntero grande-Marca de tiempo de la última actualización
created_atEntero grande-Marca de tiempo de creación
api_keyCadenaÚNICO, nullableClave de autenticación API
settingsJSONnullablePreferencias del usuario
infoJSONnullableInformación adicional del usuario
oauth_subTextoÚNICOIdentificador de sujeto de OAuth

Diagrama de Entidad-Relación

Para ayudar a visualizar la relación entre las tablas, consulta el siguiente Diagrama de Entidad-Relación (ERD) generado con Mermaid.