Aller au contenu principal
attention

Ce tutoriel est une contribution communautaire et n'est pas soutenu par l'équipe Open WebUI. Il sert uniquement à démontrer comment personnaliser Open WebUI pour vos cas d'utilisation spécifiques. Vous souhaitez contribuer ? Consultez le tutoriel pour contribuer.

[!WARNING]
Cette documentation a été créée à partir de la version actuelle (0.5.11) et est continuellement mise à jour.

Base de données SQLite interne de Open-WebUI

Pour Open-WebUI, la base de données SQLite sert de colonne vertébrale pour la gestion des utilisateurs, l'historique de chat, le stockage de fichiers et diverses autres fonctionnalités de base. Comprendre cette structure est essentiel pour quiconque souhaite contribuer ou maintenir efficacement le projet.

Emplacement interne de SQLite

Vous pouvez trouver la base de données SQLite à root -> data -> webui.db

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

Copier la base de données localement

Si vous souhaitez copier la base de données SQLite Open-WebUI exécutée dans le conteneur sur votre machine locale, vous pouvez utiliser :

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

Alternativement, vous pouvez accéder à la base de données dans le conteneur en utilisant :

docker exec -it open-webui /bin/sh

Aperçu des tables

Voici une liste complète des tables de la base de données SQLite de Open-WebUI. Les tables sont listées par ordre alphabétique et numérotées pour plus de commodité.

Nom de la tableDescription
01authStocke les informations d'authentification et de connexion des utilisateurs
02channelGère les canaux de chat et leurs configurations
03channel_memberSuit l'appartenance des utilisateurs et les permissions dans les canaux
04chatStocke les sessions de chat et leurs métadonnées
05chatidtagAssocie les relations entre les chats et leurs tags associés
06configConserve les paramètres de configuration système
07documentStocke les documents et leurs métadonnées pour la gestion des connaissances
08feedbackCapture les retours et évaluations des utilisateurs
09fileGère les fichiers téléchargés et leurs métadonnées
10folderOrganise les fichiers et le contenu dans des structures hiérarchiques
11functionStocke des fonctions personnalisées et leurs configurations
12groupGère les groupes d'utilisateurs et leurs permissions
13knowledgeStocke les entrées de la base de connaissances et les informations associées
14memoryConserve l'historique des chats et la mémoire contextuelle
15messageStocke les messages de chat individuels et leur contenu
16message_reactionEnregistre les réactions des utilisateurs (émoticônes/réponses) aux messages
17migrate_historySuit la version du schéma de base de données et les enregistrements de migration
18modelGère les configurations et paramètres des modèles d'IA
19promptStocke les modèles et configurations pour les invites AI
20tagGère les tags/labels pour la catégorisation du contenu
21toolStocke les configurations des outils système et des intégrations
22userConserve les profils d'utilisateurs et les informations de compte

Remarque : Il existe deux tables supplémentaires dans la base de données SQLite de Open-WebUI qui ne sont pas liées aux fonctionnalités de base de Open-WebUI, et qui ont été exclues :

  • Table de version Alembic
  • Table d'historique de migration

Maintenant que nous avons toutes les tables, comprenons la structure de chaque table.

Table Auth

Nom de colonneType de donnéesContraintesDescription
idStringPRIMARY KEYIdentifiant unique
emailString-Email de l'utilisateur
passwordText-Mot de passe haché
activeBoolean-Statut du compte

Informations importantes sur la table auth :

  • Utilise UUID pour la clé primaire
  • Relation un-à-un avec la table users (id partagé)

Table Channel

Nom de colonneType de donnéesContraintesDescription
idTextPRIMARY KEYIdentifiant unique (UUID)
user_idText-Propriétaire/créateur du canal
typeTextnullableType de canal
nameText-Nom du canal
descriptionTextnullableDescription du canal
dataJSONnullableStockage flexible de données
metaJSONnullableMétadonnées du canal
access_controlJSONnullableParamètres des permissions
created_atBigInteger-Horodatage de création (nanosecondes)
updated_atBigInteger-Dernière mise à jour (nanosecondes)

Points importants concernant la table d'authentification :

  • Utilise UUID comme clé primaire
  • Noms de canaux insensibles à la casse (stockés en minuscules)

Table des membres du canal

Nom de colonneType de donnéesContraintesDescription
idTEXTNOT NULLIdentifiant unique de l'adhésion au canal
channel_idTEXTNOT NULLRéférence au canal
user_idTEXTNOT NULLRéférence à l'utilisateur
created_atBIGINT-Horodatage de la création de l'adhésion

Table de chat

Nom de colonneType de donnéesContraintesDescription
idStringPRIMARY KEYIdentifiant unique (UUID)
user_idString-Propriétaire du chat
titleText-Titre du chat
chatJSON-Contenu et historique du chat
created_atBigInteger-Horodatage de création
updated_atBigInteger-Dernière mise à jour
share_idTextUNIQUE, nullableIdentifiant unique de partage
archivedBooleandefault=FalseStatut d'archivage
pinnedBooleandefault=False, nullableStatut d'épinglage
metaJSONserver_default=""Métadonnées incluant des tags
folder_idTextnullableIdentifiant du dossier parent

Table d'identification des tags de chat

Nom de colonneType de donnéesContraintesDescription
idVARCHAR(255)NOT NULLIdentifiant unique
tag_nameVARCHAR(255)NOT NULLNom du tag
chat_idVARCHAR(255)NOT NULLRéférence au chat
user_idVARCHAR(255)NOT NULLRéférence à l'utilisateur
timestampINTEGERNOT NULLHorodatage de création

Configuration

Nom de colonneType de donnéesContraintesValeur par défautDescription
idINTEGERNOT NULL-Identifiant de clé primaire
dataJSONNOT NULL-Données de configuration
versionINTEGERNOT NULL-Numéro de version de la configuration
created_atDATETIMENOT NULLCURRENT_TIMESTAMPHorodatage de création
updated_atDATETIME-CURRENT_TIMESTAMPDernière mise à jour

Table de feedback

Nom de colonneType de donnéesContraintesDescription
idTextPRIMARY KEYIdentifiant unique (UUID)
user_idText-Utilisateur ayant donné le feedback
versionBigIntegerdefault=0Numéro de version du feedback
typeText-Type de feedback
dataJSONnullableDonnées du feedback incluant des évaluations
metaJSONnullableMétadonnées (arène, chat_id, etc.)
snapshotJSONnullableCapture d'écran associée au chat
created_atBigInteger-Horodatage de création
updated_atBigInteger-Horodatage de la dernière mise à jour

Table des fichiers

Nom de colonneType de donnéesContraintesDescription
idStringPRIMARY KEYIdentifiant unique
user_idString-Propriétaire du fichier
hashTextnullableHachage/somme de contrôle du fichier
filenameText-Nom du fichier
pathTextnullableChemin dans le système de fichiers
dataJSONnullableDonnées associées au fichier
metaJSONnullableMétadonnées du fichier
access_controlJSONnullableParamètres de permissions
created_atBigInteger-Horodatage de création
updated_atBigInteger-Horodatage de la dernière mise à jour

Structure attendue pour le champ meta:

{
"name": string, # Nom d'affichage facultatif
"content_type": string, # Type MIME
"size": integer, # Taille du fichier en octets
# Métadonnées supplémentaires prises en charge via ConfigDict(extra="allow")
}

Table des dossiers

Nom de colonneType de donnéesContraintesDescription
idTextPRIMARY KEYIdentifiant unique (UUID)
parent_idTextnullableID du dossier parent pour la hiérarchie
user_idText-Propriétaire du dossier
nameText-Nom du dossier
itemsJSONnullableContenu du dossier
metaJSONnullableMétadonnées du dossier
is_expandedBooleandefault=FalseÉtat d'expansion de l'interface utilisateur
created_atBigInteger-Horodatage de création
updated_atBigInteger-Horodatage de la dernière mise à jour

Points importants à savoir sur la table des dossiers:

  • Les dossiers peuvent être imbriqués (référence parent_id)
  • Les dossiers racine ont un parent_id nul
  • Les noms de dossiers doivent être uniques dans le même parent

Table des fonctions

Nom de colonneType de donnéesContraintesDescription
idStringPRIMARY KEYIdentifiant unique
user_idString-Propriétaire de la fonction
nameText-Nom de la fonction
typeText-Type de fonction
contentText-Contenu/code de la fonction
metaJSON-Métadonnées de la fonction
valvesJSON-Paramètres de contrôle de la fonction
is_activeBoolean-État actif de la fonction
is_globalBoolean-Indicateur de disponibilité globale
created_atBigInteger-Horodatage de création
updated_atBigInteger-Horodatage de la dernière mise à jour

Points importants à savoir sur la table des dossiers:

  • type ne peut être que: ["filter", "action"]

Table des groupes

Nom de colonneType de donnéesContraintesDescription
idTextPRIMARY KEY, UNIQUEIdentifiant unique (UUID)
user_idText-Propriétaire/créateur du groupe
nameText-Nom du groupe
descriptionText-Description du groupe
dataJSONnullableDonnées supplémentaires du groupe
metaJSONnullableMétadonnées du groupe
permissionsJSONnullableConfiguration des permissions
user_idsJSONnullableListe des ID des utilisateurs membres
created_atBigInteger-Horodatage de création
updated_atBigInteger-Horodatage de la dernière mise à jour

Table des connaissances

Nom de colonneType de donnéesContraintesDescription
idTextePRIMARY KEY, UNIQUEIdentifiant unique (UUID)
user_idTexte-Propriétaire de la base de connaissances
nameTexte-Nom de la base de connaissances
descriptionTexte-Description de la base de connaissances
dataJSONnullableContenu de la base de connaissances
metaJSONnullableMétadonnées supplémentaires
access_controlJSONnullableRègles de contrôle d'accès
created_atBigInteger-Timestamp de création
updated_atBigInteger-Timestamp de la dernière mise à jour

La structure attendue des champs 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"]
}
}

Table Mémoire

Nom de ColonneType de DonnéeContraintesDescription
idStringPRIMARY KEYIdentifiant unique (UUID)
user_idString-Propriétaire de la mémoire
contentTexte-Contenu de la mémoire
created_atBigInteger-Timestamp de création
updated_atBigInteger-Timestamp de la dernière mise à jour

Table Messages

Nom de ColonneType de DonnéeContraintesDescription
idTextePRIMARY KEYIdentifiant unique (UUID)
user_idTexte-Auteur du message
channel_idTextenullableCanal associé
parent_idTextenullableMessage parent pour les threads
contentTexte-Contenu du message
dataJSONnullableDonnées supplémentaires du message
metaJSONnullableMétadonnées du message
created_atBigInteger-Timestamp de création (nanosecondes)
updated_atBigInteger-Timestamp de la dernière mise à jour (nanosecondes)

Table Réactions Messages

Nom de ColonneType de DonnéeContraintesDescription
idTextePRIMARY KEYIdentifiant unique (UUID)
user_idTexte-Utilisateur ayant réagi
message_idTexte-Message associé
nameTexte-Nom/réaction émoji
created_atBigInteger-Timestamp de la réaction

Table Modèles

Nom de ColonneType de DonnéeContraintesDescription
idTextePRIMARY KEYIdentifiant du modèle
user_idTexte-Propriétaire du modèle
base_model_idTextenullableRéférence du modèle parent
nameTexte-Nom d'affichage
paramsJSON-Paramètres du modèle
metaJSON-Métadonnées du modèle
access_controlJSONnullablePermissions d'accès
is_activeBooleandefault=TrueStatut actif
created_atBigInteger-Timestamp de création
updated_atBigInteger-Timestamp de la dernière mise à jour

Table Requêtes

Nom de ColonneType de DonnéeContraintesDescription
commandStringPRIMARY KEYIdentifiant unique de commande
user_idString-Propriétaire de la requête
titleTexte-Titre de la requête
contentTexte-Contenu/modèle de la requête
timestampBigInteger-Timestamp de la dernière mise à jour
access_controlJSONnullablePermissions d'accès

Table Tags

Nom de la ColonneType de DonnéeContraintesDescription
idStringPK (composite)Identifiant normalisé de tag
nameString-Nom affiché
user_idStringPK (composite)Propriétaire du tag
metaJSONnullableMétadonnées du tag

Informations importantes sur la table des tags :

  • La clé primaire est composite (id, user_id)

Table des Outils

Nom de la ColonneType de DonnéeContraintesDescription
idStringPRIMARY KEYIdentifiant unique
user_idString-Propriétaire de l'outil
nameText-Nom de l'outil
contentText-Contenu/code de l'outil
specsJSON-Spécifications de l'outil
metaJSON-Métadonnées de l'outil
valvesJSON-Paramètres de contrôle
access_controlJSONnullablePermissions d'accès
created_atBigInteger-Date de création
updated_atBigInteger-Date de dernière mise à jour

Table des Utilisateurs

Nom de la ColonneType de DonnéeContraintesDescription
idStringPRIMARY KEYIdentifiant unique
nameString-Nom de l'utilisateur
emailString-Email de l'utilisateur
roleString-Rôle de l'utilisateur
profile_image_urlText-Chemin de l'image de profil
last_active_atBigInteger-Dernière activité
updated_atBigInteger-Date de dernière mise à jour
created_atBigInteger-Date de création
api_keyStringUNIQUE, nullableClé d'authentification API
settingsJSONnullablePréférences de l'utilisateur
infoJSONnullableInformations supplémentaires
oauth_subTextUNIQUEIdentifiant sujet OAuth

Diagramme de Relation d'Entités

Pour visualiser les relations entre les tables, référez-vous au diagramme de relation d'entités (ERD) ci-dessous généré avec Mermaid.