Déploiement¶
TIE est livré en images Docker, installées sur vos serveurs et lancées avec Docker Compose. Le code source n'est pas livré.
Composants¶
| Service | Rôle | Exposé |
|---|---|---|
engine |
Moteur : indexation, recherche, génération | Réseau Docker interne seulement |
postgres |
Extraits, embeddings (pgvector), index plein texte | Non |
neo4j |
Graphe des thèmes et des documents | Non |
embed-solon |
Embeddings en français (facultatif, profil solon) |
Non |
Le moteur n'a aucun port publié en production : il est joint par le wrapper sous http://engine:8001, sur le réseau Docker tie. Ne jamais publier son port sur une interface publique : il n'a pas d'authentification.
Prérequis¶
- Linux avec Docker Engine et Docker Compose 2.17 ou plus récent.
- Espace disque pour les images : environ 0,9 Go pour le moteur, 2 Go pour
embed-solon, plus les bases de données selon le volume de documents. - Un accès au modèle de langage choisi : clé d'API d'un service en ligne, ou adresse d'un modèle installé chez vous.
Le dimensionnement (processeur, mémoire) dépend du volume de documents et du nombre d'utilisateurs : nous l'établissons avec vous.
Configuration¶
La configuration de production tient dans un fichier .env.prod, livré sous forme de modèle (.env.prod.example).
| Variable | Rôle |
|---|---|
POSTGRES_PASSWORD, NEO4J_PASSWORD |
Mots de passe des bases, obligatoires |
LLM__PROVIDER, LLM__MODEL, LLM__URL, LLM__API_KEY |
Modèle de langage : claude pour Anthropic, toute autre valeur pour un service compatible OpenAI (Mistral, modèle local, proxy) |
EMBEDDING__PROVIDER, EMBEDDING__MODEL, EMBEDDING__DIM, EMBEDDING__URL |
Embeddings : par défaut le modèle embarqué (384 dimensions) ; Solon (1024 dimensions) avec le profil solon |
PIPELINE__MAX_UPLOAD_BYTES |
Taille maximale d'un fichier (50 Mio par défaut), à poser aussi au reverse proxy |
PIPELINE__INDEXING_CONCURRENCY |
Documents indexés en parallèle (4 par défaut) |
LOG_FORMAT |
text (défaut) ou json, voir Supervision |
Dimension des embeddings
La dimension des embeddings est fixée à la création des bases. Changer de modèle d'embedding impose de vider les bases et de réindexer tous les documents ; le moteur refuse de démarrer si la dimension configurée ne correspond pas aux données existantes.
Lancement¶
docker compose -f docker-compose.prod.yml --env-file .env.prod up -d
# avec les embeddings en français :
docker compose -f docker-compose.prod.yml --env-file .env.prod --profile solon up -d
Le moteur est prêt quand GET /ready répond 200 (voir Supervision) ; le healthcheck Docker s'appuie dessus.
Sauvegarde¶
Les données sont dans les volumes postgres_data et neo4j_data. Sauvegarder les deux, au même moment, moteur arrêté ou sans indexation en cours : un document est écrit dans les deux bases.
docker compose -f docker-compose.prod.yml --env-file .env.prod exec postgres \
pg_dump -U tie -d tie_engine -Fc > tie_engine.dump
Pour Neo4j (édition Community), arrêter le service puis utiliser neo4j-admin database dump. Les documents d'origine sont conservés par le wrapper : à défaut de sauvegarde des bases du moteur, tout peut être réindexé depuis eux.