-
Notifications
You must be signed in to change notification settings - Fork 0
1.7 Embedded LLM Guide
Version: 1.0.0-rc.3 Dernière mise à jour: 2026-07-20
ClioDeck peut fonctionner avec des modèles de langage (LLM) embarqués, permettant une utilisation hors-ligne complète pour la génération de texte. Cette fonctionnalité utilise node-llama-cpp pour exécuter des modèles au format GGUF directement dans l'application.
┌─────────────────────────────────────────────────────────────┐
│ Mode de fonctionnement │
├─────────────────────────────────────────────────────────────┤
│ │
│ Provider: AUTO (par défaut) │
│ │
│ 1. Ollama disponible ? │
│ └── OUI → Utiliser Ollama │
│ └── NON → 2. Modèle embarqué disponible ? │
│ └── OUI → Utiliser modèle embarqué │
│ └── NON → Échec du provider (aucun message │
│ littéral de ce type n'existe │
│ dans le code) │
│ │
└─────────────────────────────────────────────────────────────┘
| Fonctionnalité | Ollama | Modèle embarqué |
|---|---|---|
| Génération de texte | Oui | Oui |
| Embeddings (RAG) | Oui | Oui |
| Streaming | Oui | Oui |
| Performance | Meilleure | Correcte |
Le modèle embarqué peut désormais servir les deux rôles — au niveau du
code. generationProvider et embeddingProvider se choisissent
indépendamment dans la configuration, et embedded est une valeur valide
pour les deux : un RAG complet sans Ollama et sans clé cloud est possible en
théorie, avec Nomic Embed Text v2 MoE (344 Mo, 768 dimensions,
multilingue) comme modèle d'embeddings.
Mais pas encore depuis l'interface. À ce jour, les paramètres LLM ne permettent de choisir que
generationProvider(le tableau ci-dessous) — il n'existe aucun contrôle pourembeddingProvider, et le modèle d'embeddings embarqué n'a pas de bouton de téléchargement dans l'UI. Pour l'utiliser aujourd'hui, il faut éditer directement le fichier de configuration (cliodeck-config.json, dans le dossieruserDatade l'application). C'est un vrai manque, pas une limite du moteur — voir issue #18.
En mode Auto (le réglage par défaut du provider de génération), ClioDeck préfère Ollama quand il est joignable et ne bascule sur l'embarqué qu'en repli — voir le diagramme ci-dessus.
| Caractéristique | Valeur |
|---|---|
| Taille | ~469 Mo |
| Contexte | 32 768 tokens |
| Langues | 29+ (dont FR, EN, DE) |
| Performance | Rapide sur CPU |
| Cas d'usage | Usage général, machines modestes |
| Caractéristique | Valeur |
|---|---|
| Taille | ~1.04 Go (1066 Mo) |
| Contexte | 32 768 tokens |
| Langues | 29+ (dont FR, EN, DE) |
| Performance | Correcte sur CPU |
| Cas d'usage | Meilleure qualité, machines plus puissantes |
- Ouvrez ClioDeck
- Cliquez sur Paramètres (icône engrenage)
- Accédez à la section LLM embarqué
- Sélectionnez le modèle souhaité dans la liste
- Cliquez sur Télécharger
- Attendez la fin du téléchargement (barre de progression)
Le modèle est téléchargé depuis Hugging Face et stocké dans :
-
macOS :
~/Library/Application Support/cliodeck/models/ -
Linux :
~/.config/cliodeck/models/
Dans les paramètres LLM, choisissez la stratégie — ce réglage ne concerne que la génération de texte ; il n'existe pas d'équivalent pour les embeddings dans l'interface (voir l'encart plus haut) :
| Option | Comportement |
|---|---|
| Auto (défaut) | Ollama si disponible, sinon embarqué |
| Ollama | Force l'utilisation d'Ollama uniquement |
| Embarqué | Force l'utilisation du modèle embarqué |
En mode Auto, ClioDeck choisit automatiquement :
- Ollama démarré → Chat utilise Ollama
- Ollama arrêté, modèle téléchargé → Chat utilise le modèle embarqué
- Rien de disponible → Message d'erreur explicatif
Quand vous posez une question avec RAG activé :
| Étape | Provider |
|---|---|
| Génération de l'embedding de la question | Celui configuré dans embeddingProvider (config uniquement, pas encore réglable depuis l'UI) — Ollama, embarqué, ou cloud |
| Recherche dans le vector store | - |
| Génération de la réponse | Celui configuré dans generationProvider (réglable dans Paramètres → LLM) — Ollama, embarqué, ou cloud |
Si aucun provider d'embeddings n'est disponible (ni Ollama joignable, ni modèle embarqué téléchargé, ni clé cloud), le RAG ne peut pas fonctionner. Le chat bascule alors en mode "conversation simple" sans contexte documentaire.
Le modèle embarqué utilise des paramètres optimisés pour les réponses académiques :
{
maxTokens: 2048, // Longueur max de la réponse
temperature: 0.1, // Faible pour des réponses précises
topP: 0.85, // Nucleus sampling
contextSize: 4096 // Fenêtre de contexte effective (modèle supporte 32768 max)
}Note : Le modèle Qwen2.5 supporte jusqu'à 32 768 tokens, mais ClioDeck utilise une fenêtre de 4096 tokens pour optimiser la mémoire et la vitesse.
Le modèle Qwen utilise le format ChatML :
<|im_start|>system
Tu es un assistant académique spécialisé...
<|im_end|>
<|im_start|>user
Ma question...
<|im_end|>
<|im_start|>assistant
| Modèle | Premier chargement | Chargement suivant |
|---|---|---|
| Qwen2.5-0.5B | 5-10 secondes | 2-3 secondes |
| Qwen2.5-1.5B | 10-20 secondes | 5-8 secondes |
Sur un CPU moderne (Apple M1/M2, Intel i5+) :
| Modèle | Tokens/seconde |
|---|---|
| Qwen2.5-0.5B | 15-25 t/s |
| Qwen2.5-1.5B | 8-15 t/s |
| Modèle | RAM approximative |
|---|---|
| Qwen2.5-0.5B | 1-1.5 Go |
| Qwen2.5-1.5B | 2-3 Go |
Symptôme : Message "Embedded LLM not initialized"
Causes possibles :
- Modèle non téléchargé
- Fichier GGUF corrompu
-
node-llama-cppnon installé
Solutions :
- Re-téléchargez le modèle depuis les paramètres
- Vérifiez que le fichier existe dans le dossier
models/ - Consultez les logs de l'application
Causes possibles :
- Modèle trop gros pour la machine
- Autre application utilisant le CPU intensivement
Solutions :
- Passez au modèle Qwen2.5-0.5B (plus léger)
- Fermez les applications gourmandes en ressources
Le chat échoue quand :
- Ollama n'est pas démarré
- ET aucun modèle embarqué n'est téléchargé
(Le libellé exact de l'erreur affichée n'a pas été vérifié comme une chaîne littérale du code — le mécanisme ci-dessus est confirmé, pas le texte exact.)
Solutions :
- Démarrez Ollama :
ollama serve - OU téléchargez un modèle embarqué dans les paramètres
En pratique aujourd'hui, sans édition manuelle de cliodeck-config.json,
les embeddings passent par Ollama — c'est le seul provider que
l'interface expose pour ce rôle :
- Installez Ollama, téléchargez un modèle d'embeddings
(
ollama pull nomic-embed-text), puis démarrez le service (ollama serve).
Si vous avez réglé embeddingProvider: "embedded" à la main dans le
fichier de configuration, vérifiez que Nomic Embed Text v2 MoE est bien
téléchargé (son fichier GGUF doit exister sur disque — il n'y a pas
d'indicateur dans l'UI pour le confirmer autrement).
| Critère | Ollama | Embarqué |
|---|---|---|
| Installation | Séparée | Intégrée |
| Modèles disponibles | Nombreux | 2 génération (Qwen) + 1 embeddings (Nomic v2) |
| Embeddings | Oui — mais l'UI ne permet de choisir que quel modèle Ollama utiliser (ollamaEmbeddingModel), pas de choisir Ollama comme provider explicitement |
Oui côté moteur, mais aucun réglage dans l'UI, ni pour choisir le provider ni le modèle (voir plus haut) |
| Qualité génération | Excellente | Bonne |
| Mode hors-ligne | Oui, une fois les modèles téléchargés | Oui |
| Mémoire | Séparée | Partagée avec l'app |
| Configuration | Flexible | Simple |
Utilisez Ollama quand :
- Vous voulez choisir parmi de nombreux modèles de génération
- Vous avez suffisamment de RAM (16+ Go)
- Vous voulez la meilleure qualité de génération disponible localement
Utilisez le modèle embarqué quand :
- Vous voulez un RAG complet et hors ligne sans rien installer d'autre — possible aujourd'hui uniquement via édition manuelle du fichier de configuration, en attendant que l'UI expose
embeddingProvider - Ollama n'est pas installé/disponible
- Vos machines sont modestes (le RAG fonctionne quand même)
- node-llama-cpp - Bibliothèque d'exécution
- Qwen2.5 - Famille de modèles
- GGUF Format - Format de modèle
- Hugging Face - Source des modèles