Apercu
Ollama est une plateforme open source permettant d’executer des grands modeles de langage (LLM) en local. La fonctionnalite d’integration Ollama de Fess est fournie sous forme de plugin fess-llm-ollama, et convient a une utilisation en environnement prive.
L’utilisation d’Ollama permet d’utiliser la fonctionnalite du mode de recherche IA sans envoyer de donnees a l’exterieur.
Caracteristiques principales
Execution locale : Les donnees ne sont pas envoyees a l’exterieur, garantissant la confidentialite
Modeles varies : Prise en charge de nombreux modeles dont Llama, Mistral, Gemma, CodeLlama
Efficacite des couts : Pas de cout API (seulement les couts materiels)
Personnalisation : Possibilite d’utiliser des modeles affines independamment
Modeles pris en charge
Principaux modeles disponibles avec Ollama :
llama3.3:70b- Llama 3.3 de Meta (70B parametres)gemma4:e4b- Gemma 4 de Google (E4B parametres, par defaut)mistral:7b- Mistral de Mistral AI (7B parametres)codellama:13b- Code Llama de Meta (13B parametres)phi3:3.8b- Phi-3 de Microsoft (3.8B parametres)
Note
Pour la derniere liste des modeles disponibles, consultez Ollama Library.
Prerequis
Avant d’utiliser Ollama, verifiez les points suivants.
Installation d’Ollama : Telechargez et installez depuis https://ollama.com/
Telechargement du modele : Telechargez le modele a utiliser dans Ollama
Demarrage du serveur Ollama : Verifiez qu’Ollama fonctionne
Installation d’Ollama
Linux/macOS
Windows
Telechargez et executez l’installateur depuis le site officiel.
Docker
Telechargement du modele
Installation du plugin
La fonctionnalite d’integration Ollama est fournie sous forme de plugin. Pour utiliser Ollama, l’installation du plugin fess-llm-ollama est necessaire.
Telechargez fess-llm-ollama-15.7.0.jar.
Placez-le dans le repertoire
app/WEB-INF/plugin/du repertoire d’installation de Fess.
Redemarrez Fess.
Note
La version du plugin doit correspondre a la version de Fess.
Configuration de base
Les configurations LLM sont reparties dans plusieurs fichiers de configuration.
Configuration minimale
system.properties (configurable egalement via Administration > Systeme > General) :
app/WEB-INF/conf/fess_config.properties :
Note
La configuration du fournisseur LLM peut egalement etre effectuee via l’administration (Administration > Systeme > General) en configurant rag.llm.name.
Configuration recommandee (environnement de production)
system.properties (configurable egalement via Administration > Systeme > General) :
app/WEB-INF/conf/fess_config.properties :
Elements de configuration
Tous les elements de configuration disponibles pour le client Ollama. Tous sauf rag.llm.name se configurent dans fess_config.properties.
| Propriete | Description | Valeur par defaut |
|---|---|---|
rag.llm.ollama.api.url | URL de base du serveur Ollama | http://localhost:11434 |
rag.llm.ollama.model | Nom du modele a utiliser (modele telecharge dans Ollama) | gemma4:e4b |
rag.llm.ollama.timeout | Timeout de la requete (millisecondes) | 60000 |
rag.llm.ollama.availability.check.interval | Intervalle de verification de disponibilite (secondes). Une valeur inferieure ou egale a 0 desactive la verification periodique de disponibilite | 60 |
rag.llm.ollama.max.concurrent.requests | Nombre maximum de requetes simultanees | 5 |
rag.llm.ollama.chat.evaluation.max.relevant.docs | Nombre maximum de documents pertinents lors de l’evaluation | 3 |
rag.llm.ollama.concurrency.wait.timeout | Delai d’attente de l’acquisition d’un permis de controle de concurrence (millisecondes) | 30000 |
rag.llm.ollama.connect.timeout | Timeout de connexion TCP (millisecondes). Peut etre specifie separement de rag.llm.ollama.timeout | 5000 |
rag.llm.ollama.retry.max | Nombre maximum de tentatives HTTP (lors d’erreurs 429 et 5xx) | 3 |
rag.llm.ollama.retry.base.delay.ms | Delai de base du backoff exponentiel (millisecondes) | 2000 |
Configuration avancee
Elements de configuration avances relatifs a l’historique et a la taille du contexte.
| Propriete | Description | Valeur par defaut |
|---|---|---|
rag.llm.ollama.chat.evaluation.description.max.chars | Nombre maximum de caracteres de la description lors de l’evaluation | 500 |
rag.llm.ollama.history.max.chars | Nombre maximum de caracteres de l’historique de conversation | 4000 |
rag.llm.ollama.intent.history.max.messages | Nombre maximum de messages dans l’historique lors de la determination d’intention | 6 |
rag.llm.ollama.intent.history.max.chars | Nombre maximum de caracteres dans l’historique lors de la determination d’intention | 3000 |
rag.llm.ollama.history.assistant.max.chars | Nombre maximum de caracteres de l’historique des reponses de l’assistant | 500 |
rag.llm.ollama.history.assistant.summary.max.chars | Nombre maximum de caracteres de l’historique des resumes de l’assistant | 500 |
Controle de la concurrence
rag.llm.ollama.max.concurrent.requests permet de controler le nombre de requetes simultanees vers Ollama. La valeur par defaut est 5. Ajustez-la en fonction des ressources du serveur Ollama. Un nombre trop eleve de requetes simultanees peut surcharger le serveur Ollama et reduire la vitesse de reponse.
Configuration par type de prompt
Dans Fess, les parametres du LLM peuvent etre personnalises par type de prompt. La configuration s’ecrit dans fess_config.properties.
Les parametres suivants peuvent etre configures par type de prompt :
rag.llm.ollama.{promptType}.temperature- Temperature lors de la generationrag.llm.ollama.{promptType}.max.tokens- Nombre maximum de tokens (mappe surnum_predictdans l’API Ollama)rag.llm.ollama.{promptType}.context.max.chars- Nombre maximum de caracteres du contexterag.llm.ollama.{promptType}.thinking.budget- Budget de reflexion (controle de la reflexion en forme booleenne ; voir « Prise en charge des modeles de reflexion »)rag.llm.ollama.{promptType}.thinking.level- Niveau de reflexion (chaine de caractereshigh/medium/low; voir « Prise en charge des modeles de reflexion »)rag.llm.ollama.{promptType}.top.p- Valeur d’echantillonnage Top-Prag.llm.ollama.{promptType}.top.k- Valeur d’echantillonnage Top-Krag.llm.ollama.{promptType}.num.ctx- Taille de la fenetre de contexte
Chaque parametre est resolu dans l’ordre suivant : rag.llm.ollama.{promptType}.<param> (configuration specifique au type de prompt) → rag.llm.ollama.default.<param> (repli commun a tous les types de prompt) → valeur par defaut codee en dur pour chaque type de prompt. Les valeurs explicitement specifiees dans la requete sont toujours prioritaires.
Types de prompt disponibles :
| Type de prompt | Description |
|---|---|
intent | Prompt pour determiner l’intention de l’utilisateur |
evaluation | Prompt d’evaluation des resultats de recherche |
unclear | Prompt de reponse pour les requetes peu claires |
noresults | Prompt pour le cas ou il n’y a pas de resultats de recherche |
docnotfound | Prompt pour le cas ou le document n’est pas trouve |
answer | Prompt de generation de reponse |
summary | Prompt de generation de resume |
faq | Prompt de generation de FAQ |
direct | Prompt de reponse directe |
queryregeneration | Prompt de regeneration de requete |
Chaque type de prompt dispose de valeurs par defaut codees en dur qui s’appliquent si aucune configuration n’est fournie.
| Type de prompt | temperature | max.tokens | thinking.budget | context.max.chars |
|---|---|---|---|---|
intent | 0.1 | 256 | 0 | 6000 |
evaluation | 0.1 | 512 | 0 | 6000 |
unclear | 0.7 | 512 | 0 | 6000 |
noresults | 0.7 | 512 | 0 | 6000 |
docnotfound | 0.7 | 512 | 0 | 6000 |
answer | 0.5 | 8192 | (non defini) | 10000 |
summary | 0.3 | 8192 | (non defini) | 10000 |
faq | 0.7 | 4096 | (non defini) | 6000 |
direct | 0.7 | 4096 | (non defini) | 6000 |
queryregeneration | 0.3 | 256 | 0 | 6000 |
Exemple de configuration
Options du modele Ollama
Les parametres du modele Ollama peuvent etre configures dans fess_config.properties. En utilisant le format rag.llm.ollama.default.<param>, la valeur est utilisee comme repli commun a tous les types de prompt. Le repli via default s’applique non seulement a top.p / top.k / num.ctx, mais aussi a temperature / max.tokens / thinking.budget / thinking.level.
| Propriete | Description | Valeur par defaut |
|---|---|---|
rag.llm.ollama.default.top.p | Valeur d’echantillonnage Top-P (0.0 a 1.0). Peut etre remplacee par type de prompt avec rag.llm.ollama.{promptType}.top.p | (non defini) |
rag.llm.ollama.default.top.k | Valeur d’echantillonnage Top-K. Peut etre remplacee par type de prompt avec rag.llm.ollama.{promptType}.top.k | (non defini) |
rag.llm.ollama.default.num.ctx | Taille de la fenetre de contexte. Peut etre remplacee par type de prompt avec rag.llm.ollama.{promptType}.num.ctx | (non defini) |
rag.llm.ollama.default.temperature | Valeur de repli de la temperature de generation. Peut etre remplacee par type de prompt avec rag.llm.ollama.{promptType}.temperature | (non defini) |
rag.llm.ollama.default.max.tokens | Valeur de repli du nombre maximum de tokens. Peut etre remplacee par type de prompt avec rag.llm.ollama.{promptType}.max.tokens | (non defini) |
rag.llm.ollama.default.thinking.budget | Valeur de repli du budget de reflexion. Peut etre remplacee par type de prompt avec rag.llm.ollama.{promptType}.thinking.budget | (non defini) |
rag.llm.ollama.default.thinking.level | Valeur de repli du niveau de reflexion (high / medium / low). Peut etre remplacee par type de prompt avec rag.llm.ollama.{promptType}.thinking.level | (non defini) |
rag.llm.ollama.options.* | Options globales transmises directement a l’API Ollama. Le suffixe est utilise comme nom d’option (ex. : rag.llm.ollama.options.repeat_penalty=1.1). Les valeurs sont automatiquement converties en Integer, Double, Boolean ou String | (non defini) |
Exemple de configuration
Prise en charge des modeles de reflexion
Lors de l’utilisation de modeles de reflexion (thinking model) tels que gemma4 ou qwen3, Fess prend en charge la configuration du budget de reflexion (thinking budget).
Le budget de reflexion se configure par type de prompt dans fess_config.properties :
La configuration du budget de reflexion permet de controler le nombre de tokens alloues a l’etape de « reflexion » du modele avant la generation de la reponse.
Note
Avec Ollama, le budget de reflexion est converti en indicateur booleen (think: true si la valeur est superieure a 0, think: false si la valeur est 0). Le controle fin par nombre de tokens n’est pas disponible en raison des contraintes de l’API Ollama.
Niveau de reflexion (thinking level)
Certains modeles comme gpt-oss ignorent l’indicateur think booleen et requierent la specification du niveau de reflexion sous forme de chaine de caracteres high / medium / low. Pour ces modeles, utilisez rag.llm.ollama.{promptType}.thinking.level.
Les valeurs acceptees pour thinking.level sont high / medium / low (insensible a la casse). Une valeur non valide est ignoree et un avertissement est emis dans les journaux.
Note
Si thinking.level (forme chaine) et thinking.budget (forme booleenne) sont tous les deux configures, thinking.level est prioritaire. Utilisez thinking.level pour les modeles de la famille GPT-OSS, et thinking.budget pour les autres modeles de reflexion.
Configuration reseau
Configuration Docker
Le depot officiel docker-fess de Fess inclut un overlay Ollama compose-ollama.yaml. Les etapes minimales sont les suivantes.
compose-ollama.yaml est configure pour utiliser un GPU NVIDIA (NVIDIA Container Toolkit requis). Son contenu est le suivant.
Points importants :
FESS_PLUGINS=fess-llm-ollama:15.7.0fait que le script de demarrage recupere automatiquement le JAR du plugin et le place dansapp/WEB-INF/plugin/(adaptez la version a votre installation Fess)-Dfess.config.rag.chat.enabled=trueactive le mode de recherche IA-Dfess.config.rag.llm.ollama.api.url=...specifie l’URL du serveur Ollama (dans le reseau Docker Compose, le nom de service tel queollama01est utilise pour la resolution)Le fournisseur LLM par defaut (
rag.llm.name) etantollama, aucune specification explicite n’est necessaire si Ollama est le seul fournisseur utilise. En cas de basculement depuis un autre fournisseur, ajoutez-Dfess.system.rag.llm.name=ollamadansFESS_JAVA_OPTS, ou configurez-le apres le demarrage dans l’administration sous « Systeme > General », section RAGLe bloc
deploy.resources.reservations.devicesconfigure l’utilisation du GPU. Si vous n’utilisez pas de GPU (execution CPU uniquement), supprimez ce bloc
Note
Les variables d’environnement en majuscules de type RAG_CHAT_ENABLED ou RAG_LLM_NAME ne sont pas reconnues directement par Fess. Les valeurs de configuration doivent imperativement etre transmises dans FESS_JAVA_OPTS sous la forme -Dfess.config.<key> (famille fess_config.properties) ou -Dfess.system.<key> (famille system.properties).
Serveur Ollama distant
Lorsqu’Ollama s’execute sur un serveur different de Fess :
Avertissement
Ollama n’a pas de fonctionnalite d’authentification par defaut. Si vous le rendez accessible de l’exterieur, envisagez des mesures de securite au niveau reseau (pare-feu, VPN, etc.).
Utilisation via un proxy HTTP
Le client Ollama partage la configuration de proxy HTTP commune a Fess. Si une connexion au serveur Ollama doit passer par un proxy (par exemple lors de l’utilisation d’un serveur Ollama distant), specifiez les proprietes suivantes dans fess_config.properties.
| Propriete | Description | Valeur par defaut |
|---|---|---|
http.proxy.host | Nom d’hote du proxy (chaine vide pour ne pas utiliser de proxy) | "" |
http.proxy.port | Numero de port du proxy | 8080 |
http.proxy.username | Nom d’utilisateur pour l’authentification du proxy (facultatif ; lorsqu’il est renseigne, l’authentification Basic est activee) | "" |
http.proxy.password | Mot de passe pour l’authentification du proxy | "" |
Note
Comme Ollama s’execute generalement en local ou sur un reseau interne, la configuration d’un proxy n’est necessaire que dans des cas limites (par exemple, lors de l’utilisation d’un serveur Ollama distant uniquement accessible via un proxy d’entreprise). Cette configuration s’applique egalement a tous les acces HTTP de Fess, notamment ceux du crawler.
Guide de selection des modeles
Guide pour la selection du modele selon l’usage.
| Modele | Taille | VRAM requise | Usage |
|---|---|---|---|
phi3:3.8b | Petit | 4GB+ | Environnement leger, questions-reponses simples |
gemma4:e4b | Petit-Moyen | 8GB+ | Usage general equilibre, support du mode reflexion (par defaut) |
mistral:7b | Moyen | 8GB+ | Reponses de haute qualite requises |
llama3.3:70b | Grand | 48GB+ | Reponses de meilleure qualite, raisonnement complexe |
Prise en charge GPU
Ollama prend en charge l’acceleration GPU. L’utilisation d’un GPU NVIDIA ameliore considerablement la vitesse d’inference.
Depannage
Erreur de connexion
Symptome : Erreur dans la fonctionnalite de chat, LLM affiche comme indisponible
Points a verifier :
Verifier si Ollama fonctionne
Verifier si le modele est telecharge
Verifier les parametres du pare-feu
Verifier si le plugin
fess-llm-ollamaest bien place dansapp/WEB-INF/plugin/
Modele introuvable
Symptome : Le journal affiche « Configured model not found »
Solution :
Verifier si le nom du modele est exact (peut necessiter le tag
:latest)Telecharger le modele necessaire
Timeout
Symptome : La requete expire
Solution :
Augmenter le temps de timeout
Envisager un modele plus petit ou un environnement GPU
Configuration de debogage
Pour investiguer les problemes, ajustez le niveau de log de Fess pour afficher des logs detailles lies a Ollama.
app/WEB-INF/classes/log4j2.xml :
Informations de reference
Vue d’ensemble de l’intégration LLM - Apercu de l’integration LLM
Configuration du mode de recherche IA - Details de la fonctionnalite de mode de recherche IA