Open WebUI fonctionne out-of-the-box pour les conversations IA basiques, mais ses fonctionnalités les plus puissantes nécessitent des composants externes. Voici un guide complet.
Le RAG permet à l'IA de référencer des documents externes. Il combine trois composants indépendants :
| Modèle | Dimensions | Langues | Qualité |
|---|---|---|---|
| BGE-M3 (BAAI) | 1024 | 100+ langues | ⭐⭐⭐⭐⭐ |
| GTE-large (Alibaba) | 1024 | Multilingue | ⭐⭐⭐⭐⭐ |
| E5-Mistral-7B (NVIDIA) | 4096 | Anglais | ⭐⭐⭐⭐⭐ |
| nomic-embed-text | 768 | Anglais | ⭐⭐⭐⭐ |
| all-MiniLM-L6-v2 | 384 | Anglais | ⭐⭐⭐ |
Configuration : RAG_EMBEDDING_MODEL (nom HuggingFace ou chemin local) + RAG_EMBEDDING_ENGINE (valeur : ollama, openai, azure, ou vide pour local).
⚠️ Pitfalls : Le modèle Ollama doit être pullé avant usage. Le batch size par défaut est 32. L'asynchrone est désactivé par défaut.
Le reranking est inactive par défaut. Il ré-ordonne les résultats de recherche pour plus de pertinence.
| Modèle | Moteur | Taille |
|---|---|---|
| BGE-Reranker-V2-M3 | Local (CrossEncoder) | ~250 MB |
| jina-reranker-v2-base | API externe | N/A |
| jinaai/jina-colbert-v2 | Local (ColBERT) | ~1.5 GB |
| ms-marco-MiniLM-L-6-v2 | Local (CrossEncoder) | ~80 MB |
# Reranker local
RAG_RERANKING_MODEL=cross-encoder/ms-marco-MiniLM-L-6-v2
RAG_RERANKING_ENGINE=
# Reranker externe (API Jina, Cohere...)
RAG_RERANKING_MODEL=jina-reranker-v2-base
RAG_RERANKING_ENGINE=external
RAG_EXTERNAL_RERANKER_URL=http://service:8080/v1/rerank
RAG_EXTERNAL_RERANKER_API_KEY=votre-cle
⚠️ ColBERT ne fonctionne qu'avec jinaai/jina-colbert-v2 (sous-chaîne fixe dans le code). L'engine externe exige engine=external.
| Moteur | Format | Remarques |
|---|---|---|
| Docling ✅ recommandé | PDF, DOCX, PPTX | Haute précision |
| Tika | PDF, HTML, Word | Classique, robuste |
| Mistral OCR | Images, PDF scannés | OCR basique |
| PaddleOCR-vl | Images | Dernière gén (2025) |
Aucun moteur n'est activé par défaut.
ENABLE_RAG_HYBRID_SEARCH=true
HYBRID_BM25_WEIGHT=0.5
Permet à l'IA d'exécuter des commandes, lire/écrire des fichiers depuis le chat. Nécessite un service externe :
# Install via uvx
uvx open-terminal run --host 0.0.0.0 --port 8000 --api-key votre-cle
# Ou via Docker
docker run -d --name open-terminal -p 8000:8000 \
-e OPEN_TERMINAL_API_KEY=votre-cle \
ghcr.io/open-webui/open-terminal
Connexion : Admin Panel → Settings → Integrations → "Open Terminal" (URL, clé API, type Bearer).
Critique : Activez "Native Function Calling" sur le modèle (Workspace → Models → Capabilities → Native Function Calling).
| Solution | Nécessite | Capacité |
|---|---|---|
| ChromaDB (défaut) | Aucune | ~100K docs |
| PGVector | PostgreSQL + CREATE EXTENSION vector; | Millions |
| Qdrant | Service externe | Haute perf |
| Milvus | Cluster Milvus | Enterprise |
⚠️ PGVector nécessite l'extension pgvector activée : CREATE EXTENSION vector;
CLI + daemon pour synchroniser 45+ sources externes (GitHub, S3, Confluence, Notion, Slack, Gmail...) vers les KB OpenWebUI.
pip install oikb
export OPEN_WEBUI_URL=http://votre-ow-url
export OPEN_WEBUI_API_KEY=sk-votre-cle
oikb sync ./local-dir --kb-id <uuid>
oikb daemon --port 8080 # mode production
Modèle Context Protocol pour connecter OpenWebUI à des outils externes (bases de données, API, services internes). Configuration via Admin Panel → MCP Servers : URL du serveur, credentials, schémas JSON.
Modules externes à installer via le gestionnaire de plugins. Aucun plugin n'est installé par défaut. La liste dépend de la version et des dépôts configurés.
| Protection | Variable | Nécessite |
|---|---|---|
| Anti-SSRF | AIOHTTP_CLIENT_ALLOW_REDIRECTS=false | Rien |
| CSP Iframe | IFRAME_CSP header | Rien |
| Rate limiting | Redis (15 tent/3min) | Redis |
Variables de template dans les System Prompts :
| Variable | Exemple |
|---|---|
{{CURRENT_DATE}} | 2026-07-16 |
{{CURRENT_TIME}} | 14:30:00 |
{{USER_NAME}} | Nom utilisateur |
⚠️ L'IA hallucine les dates sans variable de date dans le prompt système.