IA locale
Campbooks demande un rôle d'IA, jamais un fournisseur. C'est vous qui choisissez ce qui sert chaque rôle. Les valeurs par défaut livrées n'utilisent que des modèles à poids ouverts, donc chaque modèle peut tourner sur votre propre matériel.
Les rôles
| Rôle | À quoi il sert |
|---|---|
decide | Décisions typées sur un élément : quelle option, quel score, est-ce vrai. Chaque réponse vient avec une probabilité. |
complete | Génération plus longue, comme les brouillons et les résumés. |
embed | Vecteurs de recherche. |
vision | Facultatif. Images et documents numérisés. |
Un rôle non défini est simplement indisponible. Les fonctionnalités qui en ont besoin ne s'exécutent pas.
Démarrer les services locaux
Le profil ai ajoute trois services, un par rôle servi.
docker compose --profile ai up -d
| Service | Rôle | Modèle | Remarques |
|---|---|---|---|
laya | decide | convaiinnovations/laya-multilingual (Apache-2.0, 322M) | Construit depuis deploy/laya. Environ 680 Mo à télécharger au premier démarrage. Environ 2 Go de RAM. |
ollama | complete (et vision) | qwen3:8b | Téléchargez les modèles avec docker compose exec ollama ollama pull … |
embeddings | embed | BAAI/bge-m3 | linux/amd64 uniquement. Sur arm64, utilisez bge-m3 d'Ollama. |
1. Définir la clé d'API de decide
Le service laya refuse de démarrer sans clé, car laya-serve répond à tout le monde quand il n'en a pas. Le serveur envoie la même valeur. Le service n'a aucun port publié : seuls les conteneurs du réseau compose peuvent l'atteindre.
openssl rand -hex 32
Placez le résultat dans .env :
CAMPBOOKS_AI__DECIDE__API_KEY=<the value you generated>
2. Télécharger le modèle complete une fois
Laya et le serveur d'embeddings téléchargent eux-mêmes leurs modèles. Ollama demande un téléchargement.
docker compose exec ollama ollama pull qwen3:8b
CPU ou GPU
decide(Laya) etembedtournent bien sur CPU. Laya prend quelques centaines de millisecondes par élément sur un ordinateur portable récent.completefonctionne sur CPU mais reste lent. Utilisez un hôte avec GPU, ou un fournisseur hébergé qui sert des modèles à poids ouverts, et indiquez son URL dans.env.- Pour utiliser un GPU NVIDIA avec Ollama, décommentez le bloc
deploysous le serviceollamadanscompose.yamlet installez le NVIDIA Container Toolkit. - Laya utilise tous les cœurs du CPU par défaut. Définissez
LAYA_THREADSsur le servicelayapour limiter cet usage.
Utiliser un autre point d'accès
Chaque rôle se configure avec trois réglages : CAMPBOOKS_AI__<ROLE>__BASE_URL, CAMPBOOKS_AI__<ROLE>__MODEL et CAMPBOOKS_AI__<ROLE>__API_KEY. Pointez un rôle vers n'importe quel point d'accès compatible OpenAI (Ollama, vLLM, un fournisseur hébergé qui sert des modèles à poids ouverts) :
CAMPBOOKS_AI__COMPLETE__BASE_URL=https://llm.example.com/v1
CAMPBOOKS_AI__COMPLETE__MODEL=your-model
CAMPBOOKS_AI__COMPLETE__API_KEY=...
Pour decide, définissez CAMPBOOKS_AI__DECIDE__PROTOCOL=openai afin d'utiliser un modèle d'instruction à la place de Laya. Il répond aux mêmes questions avec une sortie au format JSON Schema. Les probabilités viennent des log-probabilités des jetons quand le serveur les renvoie. Sans elles, les réponses n'ont aucune confiance associée, donc rien de ce qui en exige une n'agit seul. Définissez CAMPBOOKS_AI__DECIDE__LOGPROBS=false pour les serveurs qui rejettent le paramètre logprobs.
CAMPBOOKS_AI__DECIDE__PROTOCOL=openai
CAMPBOOKS_AI__DECIDE__BASE_URL=http://ollama:11434/v1
CAMPBOOKS_AI__DECIDE__MODEL=qwen3:8b
Sur arm64, retirez le service embeddings et pointez embed vers Ollama :
CAMPBOOKS_AI__EMBED__BASE_URL=http://ollama:11434/v1
CAMPBOOKS_AI__EMBED__MODEL=bge-m3
À propos de Laya
- Il n'existe pas d'image officielle, donc compose en construit une depuis
deploy/laya/Dockerfile. Après une mise à jour, reconstruisez-la avecdocker compose --profile ai build laya. - Au premier démarrage, elle télécharge le point de contrôle multilingue dans le volume
laya-models. Les démarrages suivants le chargent depuis là. CAMPBOOKS_AI__DECIDE__MODELaccepte aussiconvaiinnovations/laya(anglais uniquement, 512 jetons) etconvaiinnovations/laya-typed-decisions. L'image ne précharge que le multilingue, donc définissez aussiLAYA_MODELSsur le service.- Telles quelles, les modèles sont trop sûrs d'eux. Les réglages
CAMPBOOKS_AI__DECIDE__CALIBRATION__*adoucissent les probabilités. Ils valent 1.0 par défaut.
Modèles à poids ouverts uniquement
Seuls des modèles à poids ouverts figurent dans le catalogue livré. Ils peuvent être auto-hébergés (vLLM, llama.cpp, Ollama, Text Embeddings Inference) ou utilisés via n'importe quel point d'accès hébergé qui sert des poids ouverts. Tous les rôles parlent l'API HTTP compatible OpenAI, sauf le protocole typé propre à Laya pour decide.
Si vous changez de modèle d'embeddings, les vecteurs stockés restent liés à l'ancien modèle. Les embeddings enregistrent l'identifiant et les dimensions de leur modèle, et une tâche de ré-embedding fait partie de la conception.