Aller au contenu

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.