Cours
Une question récurrente dans l’univers de l’IA auto-hébergée est la suivante : comment discuter avec des documents privés sans les envoyer à une API cloud ?
AnythingLLM est une réponse plébiscitée. Il gère tout (téléversement de documents, embeddings, recherche et chat) dans une seule interface et se connecte à un large écosystème de fournisseurs de LLM. Vous pouvez bâtir des workflows d’IA privés sans dépendre de services cloud.
Dans ce guide, j’explique ce qu’est AnythingLLM, j’en décris l’architecture, je vous montre comment l’installer avec Docker et Ollama, et je démontre un pipeline Retrieval-Augmented Generation (RAG) opérationnel. Je le comparerai également à Open WebUI et à ChatGPT.
Qu'est-ce qu'AnythingLLM ?
AnythingLLM est une application open source de Mintplex Labs sous licence MIT. Elle dispose d’une communauté GitHub active, de sorties fréquentes, et est largement adoptée dans l’écosystème de l’IA auto-hébergée.
Son rôle : transformer vos documents en contexte exploitable par un grand modèle de langage (LLM) pendant la conversation. Vous téléversez des fichiers, le système les traite et les stocke, puis le LLM peut répondre à des questions en s’appuyant sur vos données. Le projet a rapidement gagné en ampleur, avec une communauté Discord active et des mises à jour mensuelles ajoutant de nouveaux fournisseurs et fonctionnalités.
Deux points clés : premièrement, AnythingLLM n’est pas un modèle en soi. C’est un pont vers des fournisseurs de LLM externes, locaux (comme Ollama) ou cloud (OpenAI, Anthropic, etc.).
Deuxièmement, la plateforme s’organise en espaces de travail. Imaginez des salles distinctes pour chaque projet. Chaque espace dispose de ses propres documents et conversations, qui restent isolés sauf configuration explicite de partage.

Interface d’espace de travail AnythingLLM avec documents. Image par l’auteur.
AnythingLLM en application de bureau vs Docker
L’application de bureau (macOS, Windows, Linux) s’adresse à un utilisateur unique qui exécute tout en local. Elle inclut un moteur LLM intégré, un embedder sur CPU, et LanceDB embarqué. Installation en un clic, sans configuration.
La version Docker est conçue pour les équipes et les serveurs. Elle ajoute un contrôle d’accès (rôles Admin, Manager, Default), des widgets de chat embarquables pour sites web et le white-label. Si vous avez besoin d’accès équipe ou de widgets publics, Docker est votre seule option.
|
Fonctionnalité |
Bureau |
Docker |
|
Support multi-utilisateurs |
Non |
Oui (rôles Admin, Manager, Default) |
|
Moteur LLM intégré |
Oui |
Non (connexion à des fournisseurs externes) |
|
Widgets de chat embarquables |
Non |
Oui |
|
White-label |
Non |
Oui |
|
Complexité d'installation |
Installation en un clic |
Nécessite des compétences Docker |
Fonctionnalités clés d'AnythingLLM
Maintenant que vous savez ce qu’est AnythingLLM et comment choisir entre Bureau et Docker, passons en revue les atouts qui le rendent utile pour des workflows d’IA centrés documents.
Ingestion de documents
Compatible avec PDF, DOCX, TXT, Markdown, CSV, XLSX, PPTX, HTML, plus de 50 types de fichiers code, et fichiers audio (via la transcription Whisper). Vous pouvez aussi aspirer du contenu directement depuis des dépôts GitHub, des transcriptions YouTube, des pages Confluence et des sites web via le scraper intégré.
Base de données vectorielle
LanceDB est intégré et ne demande aucune configuration. Pour des besoins entreprise, vous pouvez passer à Chroma, Milvus, Pinecone, Qdrant, Weaviate, Zilliz, AstraDB ou PGVector.
Prise en charge de multiples LLM
Large choix de fournisseurs : Ollama, LM Studio, OpenAI, Anthropic, Azure OpenAI, Google Gemini, AWS Bedrock, Groq, DeepSeek. Vous choisissez les modèles par espace de travail : un espace peut utiliser un modèle Ollama local pour les sujets sensibles tandis qu’un autre exploite GPT-4o via OpenAI.
Agents IA
Tapez @agent dans n’importe quel chat pour activer le builder d’agents no-code. Compétences intégrées : recherche documentaire, synthèse, scraping web. Agent Flows propose un canvas visuel pour chaîner appels d’API, instructions LLM et opérations fichiers. Compatible Model Context Protocol (MCP) pour connecter des outils externes.
Accès API
L’API développeur est disponible sur /api/docs (docs Swagger). Vous pouvez gérer les espaces de travail, embarquer des documents et envoyer des messages de chat par programmation.
Comment fonctionne AnythingLLM (aperçu de l’architecture)
L’application comporte trois volets : le frontend (React/ViteJS) qui fournit l’interface, le serveur (backend Express) qui gère les interactions LLM, la base vectorielle et les requêtes API. Il utilise SQLite pour la configuration. Le collecteur est un service distinct qui parse et traite vos documents téléversés. Quand vous importez un PDF, le collecteur extrait le texte, puis le serveur segmente, embed et stocke.
Le pipeline RAG
Le pipeline fonctionne en deux phases.
Ingestion : vos documents arrivent au collecteur, qui extrait le texte. Le serveur découpe ensuite ce texte en segments (jusqu’à 1 000 caractères avec un petit chevauchement pour le contexte). Chaque segment est converti en vecteur par le modèle d’embedding, puis stocké dans la base vectorielle. Un dossier vector-cache/ réduit les re-embeddings inutiles dans de nombreux cas.
Requête : votre question est convertie en vecteur avec le même modèle d’embedding. Le système recherche ensuite les segments les plus similaires (généralement 4 à 6). Après filtrage par score de similarité, le texte correspondant est ajouté au prompt du LLM avec votre question et l’historique de chat. Le LLM lit l’ensemble (instructions système, contexte retrouvé, votre question, messages précédents) et génère sa réponse.

Vue d’ensemble de l’architecture du pipeline RAG AnythingLLM. Image par l’auteur.
Installer AnythingLLM avec Docker
Comme indiqué dans la FAQ, AnythingLLM est léger : environ 2 Go de RAM, un CPU 2 cœurs et 5 Go de stockage. Faire tourner un LLM local en parallèle demande plus (un modèle 7B requiert typiquement 8 Go+ de RAM/VRAM). Pour ce tutoriel, j’utilise un modèle 3B adapté au matériel limité. Assurez-vous que Docker est installé et actif avant de commencer. Sous Windows, WSL est nécessaire.
Étape 1 : installer Ollama et télécharger des modèles
Téléchargez Ollama depuis ollama.com/download, puis téléchargez un modèle de chat et un modèle d’embedding :
ollama pull llama3.2:3b
ollama pull nomic-embed-text
ollama serve
J’emploie llama3.2:3b car il fonctionne bien sur des machines à VRAM limitée (ex. RTX 3050 avec 6 Go). Pour une meilleure qualité, essayez llama3.2:8b ou deepseek-r1:7b si votre matériel le permet. Consultez notre guide sur l’exécution de LLMs en local pour d’autres options.
Étape 2 : créer le fichier Docker Compose
mkdir anythingllm-setup && cd anythingllm-setup
touch .env
Créez docker-compose.yml :
services:
anythingllm:
image: mintplexlabs/anythingllm:latest
container_name: anythingllm
ports:
- "3001:3001"
cap_add:
- SYS_ADMIN
volumes:
- anythingllm_storage:/app/server/storage
- ./.env:/app/server/.env
environment:
- STORAGE_DIR=/app/server/storage
extra_hosts:
- "host.docker.internal:host-gateway"
restart: unless-stopped
volumes:
anythingllm_storage:
Quelques remarques : le flag cap_add: SYS_ADMIN est requis pour le scraper web PuppeteerJS intégré, qui utilise un navigateur Chromium sandboxé.
La ligne extra_hosts résout le problème de réseau Docker le plus courant : elle permet au conteneur d’atteindre Ollama qui tourne sur votre machine hôte. Sans cela, toute tentative de connexion à localhost:11434 depuis le conteneur échouera, car les conteneurs disposent de leur propre espace de noms réseau.
J’utilise un volume Docker nommé (anythingllm_storage) plutôt qu’un bind mount pour une meilleure compatibilité multi-plateformes, notamment sous Windows et macOS où les permissions des bind mounts peuvent poser problème.
Étape 3 : lancer et configurer
Patientez environ 30 secondes le temps que le conteneur s’initialise, puis ouvrez http://localhost:3001. L’assistant de première configuration s’affiche. Mais d’abord, exécutez cette commande :
docker compose up -d

Assistant de configuration initiale AnythingLLM sur Docker. Image par l’auteur.
Pendant l’assistant, sélectionnez Ollama comme fournisseur LLM et embedder, définissez l’URL de base sur http://host.docker.internal:11434, choisissez llama3.2:3b comme modèle de chat et nomic-embed-text comme embedder. Conservez LanceDB comme base vectorielle par défaut.
Pour l’alternative Bureau, téléchargez l’application depuis anythingllm.com. Tout est packagé et opérationnel immédiatement, sans configuration. Idéal pour un usage personnel, mais comme indiqué plus haut, il manque les fonctions multi-utilisateurs et entreprise disponibles avec Docker.
Connecter des fournisseurs de LLM
Au-delà d’Ollama, vous pouvez connecter des fournisseurs cloud via les Paramètres (comme mentionné dans la FAQ 1, utile si votre matériel est limité).
OpenAI
Choisissez OpenAI comme fournisseur LLM, saisissez votre clé API depuis platform.openai.com, et choisissez un modèle (GPT-4o, GPT-4o-mini, etc.). Votre compte doit avoir un moyen de paiement configuré, sinon cela ne fonctionnera pas (et le message d’erreur peut être ambigu).
Anthropic
Saisissez votre clé depuis console.anthropic.com. Tous les modèles Claude fonctionnent pour le chat, mais Anthropic ne propose pas de modèles d’embedding ; vous aurez donc besoin d’un embedder séparé comme nomic-embed-text d’Ollama.
Configuration d’Ollama
Si vous avez configuré Ollama lors de l’installation comme ci-dessus, tout est prêt. Sinon, utilisez http://host.docker.internal:11434 sur Windows/macOS, ou http://172.17.0.1:11434 sur Linux. Si Ollama est injoignable, définissez OLLAMA_HOST=0.0.0.0:11434 avant de le lancer.
Utiliser AnythingLLM pour le chat documentaire
Cliquez sur "New Workspace" dans la barre latérale et nommez-le. Importez des fichiers via le bouton de téléversement de la barre latérale ou par glisser-déposer.
AnythingLLM propose deux modes documentaires. Pièce jointe (glisser dans le chat) : le texte complet est ajouté à la conversation, mais uniquement pour ce fil. Le modèle voit tout, mais vous êtes limité par la capacité en tokens. Embedding (approche RAG standard) : le document est découpé en segments, converti en vecteurs et stocké dans l’espace. Une fois embarqués, les documents fonctionnent dans tous vos chats de l’espace. Dans la majorité des cas, l’embedding est à privilégier. Cliquez sur "Move to Workspace" pour lancer l’embedding.
Ajuster la qualité de la recherche
Saisissez votre question ; le système trouve automatiquement les segments pertinents et les envoie au LLM. Si les réponses ne sont pas satisfaisantes, réglez ces paramètres :
Seuil de similarité
Comme indiqué dans la FAQ 5, commencez par "No Restriction" si vous rencontrez des problèmes, puis augmentez progressivement pour filtrer le bruit.
Nombre max de snippets de contexte
Par défaut 4 à 6 segments. Montez à 10 ou 12 pour des modèles à grande fenêtre de contexte comme Claude.
Préférence de recherche
"Accuracy Optimized" sur LanceDB active le reranking, ce qui améliore les résultats mais peut ajouter de la latence selon le modèle et le matériel.
Épinglage de documents
Épinglez les documents critiques pour éviter tout découpage. Leur texte complet est ajouté à chaque requête (dans la limite des tokens).
AnythingLLM vs Open WebUI
Les deux outils sont solides, mais ils ciblent des utilisateurs différents.
|
Dimension |
AnythingLLM |
Open WebUI |
|
Public principal |
Utilisateurs métier, petites équipes |
Développeurs, profils techniques |
|
Application de bureau |
Oui (macOS, Windows, Linux) |
Non (web uniquement) |
|
Complexité d'installation |
Bureau : un clic ; Docker : simple |
Nécessite Docker ou un serveur |
|
Mise en œuvre RAG |
Intégrée avec support multi-BD vectorielles, reranking |
RAG étendu, extensibilité par plugins |
|
Multi-utilisateurs |
Docker uniquement ; trois rôles RBAC |
Fonctionnalités de collaboration limitées |
|
Écosystème de plugins |
En croissance ; compétences sur mesure via Node.js |
Plus mature et plus vaste |
|
Licence |
MIT |
BSD-3-Clause modifiée avec protection de marque depuis v0.6.6 |
AnythingLLM a tendance à convenir aux équipes qui privilégient la gestion des espaces de travail et les widgets embarquables, tandis qu’Open WebUI convient davantage à ceux qui veulent un écosystème de plugins plus large et une extensibilité orientée développeurs. Certaines équipes utilisent les deux : Open WebUI pour les devs en quête de contrôle fin, et AnythingLLM pour les utilisateurs métier qui ont besoin d’espaces documentaires rapides.
AnythingLLM vs ChatGPT
La comparaison porte sur les priorités, pas sur lequell outil est "meilleur".
|
Dimension |
AnythingLLM |
ChatGPT |
|
Confidentialité des données |
Contrôle total avec des modèles locaux |
Données envoyées aux serveurs OpenAI |
|
Coût |
Gratuit (auto-hébergé) ; cloud à partir de 50 $/mois |
Offre gratuite ; Plus 20 $/mois ; Pro 200 $/mois |
|
Personnalisation |
N’importe quel LLM, embedder, BD vectorielle, agents |
Limité aux modèles OpenAI |
|
Fonctionnement hors ligne |
Oui (avec modèles locaux) |
Non |
|
Effort de mise en route |
Nécessite une installation |
Aucune installation, via navigateur |
|
Chat documentaire |
Contrôle RAG complet (seuils, découpage, reranking) |
Import de fichiers avec limites d’usage |
ChatGPT met l’accent sur une expérience entièrement hébergée et une excellente qualité par défaut, tandis qu’AnythingLLM privilégie la confidentialité, la flexibilité et le contrôle des réglages RAG. Vous pouvez aussi connecter GPT-4o à AnythingLLM via l’API OpenAI pour bénéficier des modèles de qualité ChatGPT avec les espaces de travail et fonctionnalités RAG d’AnythingLLM.
Cas d’usage d'AnythingLLM
Voici où AnythingLLM excelle :
Bases de connaissances internes
Les employés posent des questions sur les documents de l’entreprise au lieu de fouiller des dossiers. Importez politiques, procédures et documentations, puis laissez-les chercher en langage naturel.
Workflows de recherche
Les académiques interrogent instantanément des centaines d’articles. Embarquez votre bibliothèque et faites remonter les résultats pertinents sans recherche par mots-clés.
Déploiements privés en entreprise
Santé, finance, juridique : utilisez l’IA en gardant toutes les données sur vos serveurs. Fréquent dans les secteurs réglementés où les données doivent rester on-premise.
Tests développeurs
Essayez différents LLM (Ollama, OpenAI, Claude) sur les mêmes documents en changeant de modèle par espace de travail. Aucune modification d’infrastructure nécessaire.
Widgets de chat clients
Intégrez une interface de chat sur votre site avec Docker. Configurez des allowlists de domaines et des limites par session pour un usage public.
Transcription de réunions
La fonctionnalité Meeting Assistant fonctionne comme des outils de prise de notes cloud mais en local. Comptez environ 16 Go de RAM pour une expérience fluide.
Limites
Comme vu plus haut, Bureau et Docker n’offrent pas les mêmes fonctions, ce qui peut dérouter les nouveaux utilisateurs.
La qualité RAG demande des ajustements (j’ai détaillé les principaux réglages) car la recherche par similarité repose sur des calculs et ne "comprend" pas réellement le sens.
L’écosystème de plugins est plus restreint que celui d’Open WebUI, et créer des compétences d’agent sur mesure nécessite des compétences en Node.js.
Enfin, pas de fine-tuning intégré. La personnalisation se fait via prompts système, température et limites de tokens.
Sécurité et confidentialité avec AnythingLLM
Un déploiement local conserve toutes les données sur votre machine. (Plus de détails dans la troisième FAQ ci-dessous.) Avec des fournisseurs cloud, seuls les prompts et le contexte retrouvé sont envoyés pendant l’inférence. Les vecteurs et embeddings restent sur votre serveur. Soyez délibéré dans le choix des espaces qui utilisent des modèles cloud vs locaux.
La version Docker inclut un SSO simple via SIMPLE_SSO_ENABLED, qui crée des jetons d’accès temporaires. Les clés API donnent un accès complet sans permissions granulaires : traitez-les comme des mots de passe admin et renouvelez-les régulièrement. Si vous exposez AnythingLLM sur Internet, placez un reverse proxy Nginx avec SSL en frontal (l’app ne gère pas HTTPS nativement). Vous pouvez désactiver la télémétrie avec DISABLE_TELEMETRY=true dans votre fichier .env.
Conclusion
AnythingLLM répond à un vrai besoin de l’IA auto-hébergée : une interface pour dialoguer avec vos documents, des connexions à presque tous les fournisseurs de LLM, et la maîtrise de vos données. Comme vu plus haut, choisissez Bureau pour un usage personnel ou Docker pour des déploiements équipe.
Comme tout outil, il implique des arbitrages. La qualité RAG dépend de votre configuration, et les différences Bureau/Docker peuvent perturber les débutants.
Pour aller plus loin, consultez notre parcours AI Fundamentals ou notre tutoriel sur la création d’IA locale avec Docker et n8n.
Je suis ingénieur de données et créateur de communautés. Je travaille sur les pipelines de données, le cloud et les outils d'IA, tout en rédigeant des tutoriels pratiques et percutants pour DataCamp et les développeurs émergents.
FAQs
Puis-je faire tourner cela sur mon ancien ordinateur portable sans GPU ?
Oui ! AnythingLLM en lui-même est léger : environ 2 Go de RAM, un CPU 2 cœurs et 5 Go de stockage. La partie lourde, c’est l’exécution locale du LLM via Ollama. Si votre matériel est limité, connectez-vous plutôt à un fournisseur cloud comme OpenAI ou Groq. Vous conservez les mêmes espaces de travail et fonctions RAG, mais l’inférence se fait dans le cloud. En clair, AnythingLLM orchestre le workflow et vous choisissez si le modèle tourne en local ou dans le cloud.
Que se passe-t-il si je change plus tard de base vectorielle ?
Anticipez : il n’y a pas de migration automatique entre bases vectorielles. Passer de LanceDB à Pinecone implique de ré-embedder tous les documents. Vos fichiers d’origine restent intacts, mais les vecteurs doivent être regénérés. Conseil pratique : restez sur LanceDB sauf besoin entreprise spécifique. C’est généralement peu contraignant et adapté à de nombreux déploiements en petites équipes.
Mes données sont-elles vraiment privées si j’utilise OpenAI pour le LLM ?
Point essentiel : vos documents et embeddings ne quittent jamais votre serveur. En revanche, lors des questions, les segments de texte retrouvés et votre prompt sont envoyés à l’API d’OpenAI pour l’inférence. Pour des données vraiment sensibles, utilisez Ollama : tout reste local. Pour des documents de travail généraux, AnythingLLM avec OpenAI reste plus privé que de téléverser des fichiers directement dans ChatGPT.
Mon équipe peut-elle partager une instance AnythingLLM ?
Oui, mais uniquement avec la version Docker. Elle gère le multi-utilisateurs avec trois rôles : Admin, Manager et Default. L’application de bureau est mono-utilisateur. Important : le mode multi-utilisateurs est pensé comme un changement de configuration à sens unique. Décidez en amont si vous avez besoin d’un accès équipe avant de l’activer.
Pourquoi ignore-t-il parfois mes documents dans ses réponses ?
Trois raisons habituelles : seuil de similarité trop élevé, requêtes trop vagues, ou documents non anglais avec l’embedder anglais par défaut. Correctif rapide : testez d’abord "No Restriction" pour le seuil. Si vos documents ne sont pas en anglais, optez pour un modèle d’embedding multilingue disponible dans Ollama (par exemple une variante e5) pour de bien meilleurs résultats.
