Héberger AnythingLLM : discuter avec vos documents (RAG clé en main)
Un ChatGPT privé qui répond à partir de vos propres documents, et cite ses sources. AnythingLLM est le RAG clé en main, plus simple à démarrer. Voici comment l'héberger.
Imaginez un ChatGPT privé capable de répondre à partir de vos procédures, contrats, comptes rendus, documentations techniques ou bases de connaissances internes. Au lieu de rechercher manuellement une information dans plusieurs dossiers, vos équipes posent une question en langage naturel et obtiennent une réponse contextualisée, accompagnée des sources utilisées.
AnythingLLM transforme ce scénario en solution prête à l’emploi. L’application regroupe l’import des documents, leur indexation, la recherche vectorielle et le chat dans une interface unique. Elle est plus simple à démarrer qu’un assemblage construit avec Flowise ou Dify, car elle demande moins de configuration et se présente davantage comme un produit fini.
En auto-hébergeant AnythingLLM avec un modèle local, les documents et les requêtes restent sur votre infrastructure. Cette approche convient aux professionnels qui veulent déployer rapidement un assistant RAG privé, sans développer leur propre chaîne IA.
Comment fonctionne le RAG dans AnythingLLM ?
RAG signifie Retrieval-Augmented Generation, ou génération augmentée par la recherche. Avant de demander au modèle de produire une réponse, AnythingLLM recherche les passages les plus pertinents dans vos documents. Ces extraits servent ensuite de contexte au LLM.
Le fonctionnement repose sur plusieurs composants :
- Les workspaces isolent les documents et les conversations par équipe, client, projet ou domaine métier.
- Les documents sont importés depuis l’interface puis découpés en fragments exploitables.
- Un modèle d’embeddings transforme chaque fragment en représentation numérique.
- Une base vectorielle conserve ces représentations et retrouve les passages proches de la question.
- Un LLM rédige la réponse à partir du contexte sélectionné.
- Les citations permettent de vérifier les documents et passages ayant servi à produire la réponse.
AnythingLLM intègre LanceDB par défaut. Cette base vectorielle suffit pour la majorité des premiers déploiements et évite d’administrer un service supplémentaire. Il reste possible de connecter une base externe lorsque l’architecture ou le volume documentaire l’exige.
Le LLM est indépendant de la base vectorielle. Vous pouvez utiliser Ollama sur le même serveur pour privilégier la souveraineté, ou connecter une API externe. Ce choix détermine notamment si les questions et les extraits documentaires quittent votre infrastructure.
Prérequis pour héberger AnythingLLM
Un déploiement professionnel nécessite les éléments suivants :
- Un serveur Linux disposant de suffisamment de mémoire et de stockage NVMe.
- Docker et le module Docker Compose (voir installer Docker sur un VPS).
- Un nom de domaine ou un sous-domaine, par exemple
assistant.example.fr. - Un reverse proxy pour publier l’application en HTTPS.
- Une stratégie de sauvegarde du stockage persistant.
AnythingLLM n’exige pas de GPU. Le traitement local avec Ollama peut fonctionner sur CPU, mais les réponses seront plus lentes avec les modèles volumineux. Pour commencer, choisissez un modèle compact adapté à la mémoire disponible et au nombre d’utilisateurs simultanés.
Les futurs VPS TalCloud pourront accueillir ce type de service sur des serveurs situés en France, avec stockage NVMe, protection Anti-DDoS Netrix et support humain. Cette localisation facilite une démarche RGPD, sans dispenser de définir les droits d’accès, la durée de conservation et les procédures internes.
Déployer AnythingLLM avec Docker Compose
Créez un répertoire de travail, puis ajoutez un fichier compose.yaml contenant la configuration suivante :
services:
anythingllm:
image: mintplexlabs/anythingllm:latest
container_name: anythingllm
restart: unless-stopped
ports:
- "127.0.0.1:3001:3001"
environment:
STORAGE_DIR: /app/server/storage
volumes:
- anythingllm_storage:/app/server/storage
volumes:
anythingllm_storage:
Le port 3001 écoute uniquement sur 127.0.0.1. AnythingLLM n’est donc pas directement exposé sur Internet : les connexions publiques passeront par le reverse proxy HTTPS.
Démarrez le service :
docker compose up -d
Vérifiez ensuite son état et consultez les journaux si nécessaire :
docker compose ps
docker compose logs -f anythingllm
Le volume anythingllm_storage est monté dans /app/server/storage, chemin indiqué par STORAGE_DIR. Il assure la persistance des documents, des index vectoriels et de la configuration applicative lors du remplacement du conteneur.
Certaines options peuvent être préconfigurées avec des variables d’environnement. Pour un premier déploiement, il est généralement plus simple de conserver une configuration minimale et d’utiliser l’interface lors du premier lancement. Vous réduisez ainsi le risque d’ajouter des variables devenues obsolètes après une mise à jour.
Configurer le premier lancement
Avant d’installer le reverse proxy, vous pouvez accéder temporairement à l’application avec un tunnel SSH :
ssh -L 3001:127.0.0.1:3001 utilisateur@serveur
Ouvrez ensuite http://127.0.0.1:3001 dans votre navigateur. L’assistant de configuration vous guide dans le choix des composants.
Pour une architecture souveraine, sélectionnez :
- Ollama comme fournisseur de LLM local.
- Un modèle d’embeddings exécuté localement.
- LanceDB comme base vectorielle intégrée.
Si Ollama s’exécute dans un autre conteneur, utilisez une adresse accessible depuis le réseau Docker. Dans un conteneur, localhost désigne le conteneur lui-même et non le serveur hôte.
Créez également le compte administrateur et définissez un mot de passe long et unique. N’ouvrez pas l’application à d’autres utilisateurs avant d’avoir activé HTTPS et vérifié les paramètres d’accès.
Créer un workspace et importer les documents
Créez un workspace correspondant à un périmètre documentaire précis, par exemple « Support interne », « Procédures RH » ou « Documentation produit ». Importez ensuite quelques documents représentatifs depuis l’interface.
AnythingLLM analyse les fichiers, produit les embeddings et enregistre les vecteurs dans LanceDB. Une fois l’indexation terminée, posez des questions dont vous connaissez déjà la réponse. Commencez par des formulations factuelles et précises.
Contrôlez systématiquement les citations. Une réponse convaincante peut être inexacte si le passage récupéré est incomplet, ancien ou ambigu. Ouvrez les sources citées et vérifiez que le contenu justifie réellement la réponse.
Si les résultats sont insuffisants, améliorez d’abord la qualité documentaire : supprimez les doublons, archivez les anciennes versions, clarifiez les titres et séparez les sujets. Le RAG ne corrige pas une base de connaissances contradictoire.
Garder les données sur le VPS
La configuration la plus souveraine associe Ollama, des embeddings locaux et LanceDB. Dans ce cas, les fichiers, les vecteurs, les questions et les extraits transmis au modèle restent sur le VPS.
Avec une API externe, une partie du contexte documentaire est envoyée au fournisseur afin de générer la réponse. Avant d’utiliser cette option, examinez les conditions de traitement, la localisation des données, la conservation des requêtes et les engagements contractuels du prestataire.
Pour installer le moteur de génération local, consultez également notre guide pour héberger un LLM avec Ollama. Le choix du modèle doit tenir compte de la mémoire du serveur, du niveau de qualité recherché et du temps de réponse acceptable sans GPU.
Organiser les utilisateurs et les permissions
AnythingLLM propose un mode multi-utilisateur avec des rôles et des accès par workspace. Utilisez un workspace distinct pour chaque équipe, projet ou niveau de confidentialité.
Ne mélangez jamais dans un même workspace des documents soumis à des droits différents. Si un utilisateur peut interroger un workspace, il peut potentiellement obtenir une réponse fondée sur n’importe quel document indexé dans ce périmètre.
Appliquez le principe du moindre privilège, limitez les comptes administrateurs et retirez rapidement les accès des collaborateurs sortants. Pour les contenus sensibles, complétez ces contrôles par une politique documentaire et une revue régulière des membres.
Publier AnythingLLM en HTTPS
Placez Nginx, Caddy ou Traefik devant l’application. Le reverse proxy doit terminer TLS pour le domaine public puis transmettre les requêtes à 127.0.0.1:3001.
N’exposez pas directement le port 3001 sur toutes les interfaces réseau. Activez un certificat TLS valide, imposez HTTPS et conservez uniquement les ports nécessaires dans le pare-feu. Si l’assistant doit rester strictement interne, ajoutez un VPN ou une restriction d’accès réseau.
Sécuriser, mettre à jour et sauvegarder
Surveillez les mises à jour d’AnythingLLM et testez-les avant un déploiement en production. Pour récupérer une nouvelle image et recréer le conteneur :
docker compose pull
docker compose up -d
docker image prune
Sauvegardez le volume associé à STORAGE_DIR avant chaque mise à jour importante. Il contient les documents, les vecteurs et les données indispensables au fonctionnement de l’application. Une sauvegarde utile doit être chiffrée, stockée sur un emplacement distinct et régulièrement testée par une restauration, comme le détaille notre guide sur les sauvegardes chiffrées avec restic.
Enfin, protégez aussi le serveur : mises à jour du système, pare-feu restrictif, accès SSH par clé, comptes nominatifs, journalisation et surveillance de l’espace disque. Avec ces bases, AnythingLLM fournit un assistant documentaire privé, rapidement exploitable et suffisamment simple pour être administré sans construire toute une plateforme RAG sur mesure.