Übersicht
Ollama ist eine Open-Source-Plattform zur Ausführung großer Sprachmodelle (LLM) in lokalen Umgebungen. Die Ollama-Integrationsfunktion von Fess wird als Plugin fess-llm-ollama bereitgestellt und eignet sich für den Einsatz in privaten Umgebungen.
Durch die Verwendung von Ollama können Sie die KI-Suchmodus-Funktion nutzen, ohne Daten extern zu senden.
Hauptmerkmale
Lokale Ausführung: Daten werden nicht extern gesendet, Datenschutz ist gewährleistet
Vielfältige Modelle: Unterstützt viele Modelle wie Llama, Mistral, Gemma, CodeLlama
Kosteneffizienz: Keine API-Kosten (nur Hardware-Kosten)
Anpassbar: Auch selbst feinabgestimmte Modelle können verwendet werden
Unterstützte Modelle
Hauptsächlich verfügbare Modelle bei Ollama:
llama3.3:70b- Llama 3.3 von Meta (70B Parameter)gemma4:e4b- Gemma 4 von Google (E4B Parameter, Standard)mistral:7b- Mistral von Mistral AI (7B Parameter)codellama:13b- Code Llama von Meta (13B Parameter)phi3:3.8b- Phi-3 von Microsoft (3.8B Parameter)
Bemerkung
Die aktuelle Liste verfügbarer Modelle finden Sie unter Ollama Library.
Voraussetzungen
Bevor Sie Ollama verwenden, überprüfen Sie Folgendes.
Ollama-Installation: Laden Sie von https://ollama.com/ herunter und installieren Sie es
Modell-Download: Laden Sie das zu verwendende Modell in Ollama herunter
Ollama-Server starten: Stellen Sie sicher, dass Ollama läuft
Ollama-Installation
Linux/macOS
Windows
Laden Sie den Installer von der offiziellen Website herunter und führen Sie ihn aus.
Docker
Modell-Download
Plugin-Installation
Die Ollama-Integrationsfunktion wird als Plugin bereitgestellt. Zur Verwendung von Ollama ist die Installation des fess-llm-ollama-Plugins erforderlich.
Laden Sie fess-llm-ollama-15.7.0.jar herunter.
Legen Sie die Datei im Verzeichnis
app/WEB-INF/plugin/im Fess-Installationsverzeichnis ab.
Starten Sie Fess neu.
Bemerkung
Die Plugin-Version muss mit der Version von Fess übereinstimmen.
Grundeinstellungen
Die LLM-bezogenen Einstellungen sind auf mehrere Konfigurationsdateien aufgeteilt.
Minimalkonfiguration
system.properties (auch über Administration > System > Allgemein konfigurierbar):
app/WEB-INF/conf/fess_config.properties:
Bemerkung
Die LLM-Anbietereinstellung kann auch über die Administrationsoberfläche (Administration > System > Allgemein) durch Setzen von rag.llm.name konfiguriert werden.
Empfohlene Konfiguration (Produktionsumgebung)
system.properties (auch über Administration > System > Allgemein konfigurierbar):
app/WEB-INF/conf/fess_config.properties:
Einstellungselemente
Alle verfügbaren Einstellungselemente für den Ollama-Client. Alle Einstellungen außer rag.llm.name werden in fess_config.properties vorgenommen.
| Eigenschaft | Beschreibung | Standard |
|---|---|---|
rag.llm.ollama.api.url | Basis-URL des Ollama-Servers | http://localhost:11434 |
rag.llm.ollama.model | Zu verwendendes Modell (muss in Ollama heruntergeladen sein) | gemma4:e4b |
rag.llm.ollama.timeout | Anfrage-Timeout (Millisekunden) | 60000 |
rag.llm.ollama.availability.check.interval | Intervall der Verfügbarkeitsprüfung (Sekunden). Bei einem Wert von 0 oder kleiner wird die regelmäßige Verfügbarkeitsprüfung deaktiviert | 60 |
rag.llm.ollama.max.concurrent.requests | Maximale Anzahl gleichzeitiger Anfragen | 5 |
rag.llm.ollama.chat.evaluation.max.relevant.docs | Maximale Anzahl relevanter Dokumente bei der Bewertung | 3 |
rag.llm.ollama.concurrency.wait.timeout | Timeout beim Warten auf eine Semaphore für die Gleichzeitigkeitssteuerung (Millisekunden) | 30000 |
rag.llm.ollama.connect.timeout | TCP-Verbindungs-Timeout (Millisekunden). Kann unabhängig von rag.llm.ollama.timeout angegeben werden | 5000 |
rag.llm.ollama.retry.max | Maximale Anzahl von HTTP-Wiederholungsversuchen (bei 429- und 5xx-Fehlern) | 3 |
rag.llm.ollama.retry.base.delay.ms | Basisverzögerung des exponentiellen Backoffs (Millisekunden) | 2000 |
Detaileinstellungen
Detaillierte Einstellungselemente zu Verlauf und Kontextgröße.
| Eigenschaft | Beschreibung | Standard |
|---|---|---|
rag.llm.ollama.chat.evaluation.description.max.chars | Maximale Zeichenzahl der Beschreibung bei der Bewertung | 500 |
rag.llm.ollama.history.max.chars | Maximale Zeichenzahl des Gesprächsverlaufs | 4000 |
rag.llm.ollama.intent.history.max.messages | Maximale Nachrichtenanzahl im Verlauf bei der Absichtserkennung | 6 |
rag.llm.ollama.intent.history.max.chars | Maximale Zeichenzahl im Verlauf bei der Absichtserkennung | 3000 |
rag.llm.ollama.history.assistant.max.chars | Maximale Zeichenzahl der Assistentenantwort im Verlauf | 500 |
rag.llm.ollama.history.assistant.summary.max.chars | Maximale Zeichenzahl der Assistentenzusammenfassung im Verlauf | 500 |
Gleichzeitigkeitssteuerung
Mit rag.llm.ollama.max.concurrent.requests kann die Anzahl gleichzeitiger Anfragen an Ollama gesteuert werden. Der Standardwert ist 5. Passen Sie diesen Wert entsprechend den Ressourcen des Ollama-Servers an. Bei zu vielen gleichzeitigen Anfragen kann der Ollama-Server überlastet werden und die Antwortgeschwindigkeit sinken.
Prompttypspezifische Einstellungen
In Fess können LLM-Parameter für jeden Prompttyp angepasst werden. Die Konfiguration erfolgt in fess_config.properties.
Für jeden Prompttyp können folgende Parameter konfiguriert werden:
rag.llm.ollama.{promptType}.temperature- Temperature bei der Generierungrag.llm.ollama.{promptType}.max.tokens- Maximale Token-Anzahl (wird aufnum_predictder Ollama-API abgebildet)rag.llm.ollama.{promptType}.context.max.chars- Maximale Zeichenzahl des Kontextsrag.llm.ollama.{promptType}.thinking.budget- Thinking-Budget (boolesche Steuerung des Denkens; Details siehe „Unterstützung für Thinking-Modelle“)rag.llm.ollama.{promptType}.thinking.level- Thinking-Level (Zeichenfolgenformathigh/medium/low; Details siehe „Unterstützung für Thinking-Modelle“)rag.llm.ollama.{promptType}.top.p- Wert für Top-P-Samplingrag.llm.ollama.{promptType}.top.k- Wert für Top-K-Samplingrag.llm.ollama.{promptType}.num.ctx- Kontextfenstergröße
Die Parameter werden in folgender Reihenfolge aufgelöst: rag.llm.ollama.{promptType}.<param> (prompttypspezifische Einstellung) → rag.llm.ollama.default.<param> (gemeinsamer Fallback für alle Prompttypen) → hartcodierter Standardwert je Prompttyp. Explizit in der Anfrage angegebene Werte haben stets Vorrang.
Verfügbare Prompttypen:
| Prompttyp | Beschreibung |
|---|---|
intent | Prompt zur Bestimmung der Benutzerabsicht |
evaluation | Prompt zur Bewertung der Suchergebnisse |
unclear | Antwort-Prompt für unklare Anfragen |
noresults | Prompt bei fehlenden Suchergebnissen |
docnotfound | Prompt, wenn kein Dokument gefunden wurde |
answer | Prompt zur Antwortgenerierung |
summary | Prompt zur Zusammenfassungsgenerierung |
faq | Prompt zur FAQ-Generierung |
direct | Prompt für direkte Antworten |
queryregeneration | Prompt zur Abfrage-Neugenerierung |
Für jeden Prompttyp gelten hartcodierte Standardwerte, die angewendet werden, wenn keine Einstellung vorgenommen wurde.
| Prompttyp | 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 | (nicht gesetzt) | 10000 |
summary | 0.3 | 8192 | (nicht gesetzt) | 10000 |
faq | 0.7 | 4096 | (nicht gesetzt) | 6000 |
direct | 0.7 | 4096 | (nicht gesetzt) | 6000 |
queryregeneration | 0.3 | 256 | 0 | 6000 |
Konfigurationsbeispiel:
Ollama-Modelloptionen
Modellparameter für Ollama können in fess_config.properties konfiguriert werden. Durch Angabe im Format rag.llm.ollama.default.<param> wird der Wert als gemeinsamer Fallback für alle Prompttypen verwendet. Der Fallback über default gilt nicht nur für top.p / top.k / num.ctx, sondern auch für temperature / max.tokens / thinking.budget / thinking.level.
| Eigenschaft | Beschreibung | Standard |
|---|---|---|
rag.llm.ollama.default.top.p | Wert für Top-P-Sampling (0,0–1,0). Kann je Prompttyp mit rag.llm.ollama.{promptType}.top.p überschrieben werden | (nicht gesetzt) |
rag.llm.ollama.default.top.k | Wert für Top-K-Sampling. Kann je Prompttyp mit rag.llm.ollama.{promptType}.top.k überschrieben werden | (nicht gesetzt) |
rag.llm.ollama.default.num.ctx | Kontextfenstergröße. Kann je Prompttyp mit rag.llm.ollama.{promptType}.num.ctx überschrieben werden | (nicht gesetzt) |
rag.llm.ollama.default.temperature | Fallback-Wert für die Temperature bei der Generierung. Kann je Prompttyp mit rag.llm.ollama.{promptType}.temperature überschrieben werden | (nicht gesetzt) |
rag.llm.ollama.default.max.tokens | Fallback-Wert für die maximale Token-Anzahl. Kann je Prompttyp mit rag.llm.ollama.{promptType}.max.tokens überschrieben werden | (nicht gesetzt) |
rag.llm.ollama.default.thinking.budget | Fallback-Wert für das Thinking-Budget. Kann je Prompttyp mit rag.llm.ollama.{promptType}.thinking.budget überschrieben werden | (nicht gesetzt) |
rag.llm.ollama.default.thinking.level | Fallback-Wert für den Thinking-Level (high / medium / low). Kann je Prompttyp mit rag.llm.ollama.{promptType}.thinking.level überschrieben werden | (nicht gesetzt) |
rag.llm.ollama.options.* | Globale Optionen, die direkt an die Ollama-API weitergegeben werden. Das Suffix wird als Optionsname verwendet (Beispiel: rag.llm.ollama.options.repeat_penalty=1.1). Werte werden automatisch in Integer, Double, Boolean oder String konvertiert | (nicht gesetzt) |
Konfigurationsbeispiel:
Unterstützung für Thinking-Modelle
Bei Verwendung von Thinking-Modellen wie gemma4 oder qwen3 unterstützt Fess die Konfiguration des Thinking-Budgets.
Das Thinking-Budget wird je Prompttyp in fess_config.properties konfiguriert:
Durch Konfiguration des Thinking-Budgets kann die Anzahl der Token gesteuert werden, die dem Modell für den „Denkschritt“ vor der Antwortgenerierung zur Verfügung stehen.
Bemerkung
Bei Ollama wird das Thinking-Budget in ein boolesches Flag umgewandelt (bei einem Wert größer als 0: think: true, bei 0: think: false). Eine feingranulare Steuerung über die Token-Anzahl ist aufgrund von Einschränkungen der Ollama-API nicht verfügbar.
Thinking-Level
Einige Modelle wie gpt-oss ignorieren das boolesche think-Flag und erfordern stattdessen die Angabe des Thinking-Levels im Zeichenfolgenformat high / medium / low. Für solche Modelle wird rag.llm.ollama.{promptType}.thinking.level verwendet.
Gültige Werte für thinking.level sind high / medium / low (Groß-/Kleinschreibung wird nicht beachtet). Ungültige Werte werden ignoriert und eine Warnung wird protokolliert.
Bemerkung
Wenn sowohl thinking.level (Zeichenfolgenformat) als auch thinking.budget (boolesches Format) konfiguriert sind, hat thinking.level Vorrang. Verwenden Sie thinking.level für GPT-OSS-Modelle und thinking.budget für andere Thinking-Modelle.
Netzwerkkonfiguration
Docker-Konfiguration
Das offizielle docker-fess von Fess enthält das Ollama-Overlay compose-ollama.yaml. Die minimalen Schritte sind:
compose-ollama.yaml ist für den Einsatz mit NVIDIA-GPUs konfiguriert (NVIDIA Container Toolkit erforderlich). Der Inhalt lautet wie folgt:
Hinweise:
FESS_PLUGINS=fess-llm-ollama:15.7.0bewirkt, dass das Startskript die Plugin-JAR automatisch herunterlädt und inapp/WEB-INF/plugin/ablegt (passen Sie die Version an Ihre Fess-Version an)-Dfess.config.rag.chat.enabled=trueaktiviert den KI-Suchmodus-Dfess.config.rag.llm.ollama.api.url=...legt die URL des Ollama-Servers fest (innerhalb des Docker-Compose-Netzwerks wird der Servicename wieollama01aufgelöst)Da der Standard-LLM-Anbieter (
rag.llm.name) bereitsollamaist, ist bei ausschließlicher Verwendung von Ollama keine explizite Angabe erforderlich. Beim Wechsel von einem anderen Anbieter fügen Sie-Dfess.system.rag.llm.name=ollamazuFESS_JAVA_OPTShinzu oder konfigurieren Sie den Wert nach dem Start unter Administration > System > Allgemein im RAG-AbschnittDer Block
deploy.resources.reservations.devicesdient der GPU-Nutzung. Wenn Sie keine GPU verwenden (nur CPU), entfernen Sie diesen Block
Bemerkung
Großgeschriebene Snake-Case-Umgebungsvariablen wie RAG_CHAT_ENABLED oder RAG_LLM_NAME werden von Fess nicht direkt erkannt. Konfigurationswerte müssen stets innerhalb von FESS_JAVA_OPTS als -Dfess.config.<key> (für fess_config.properties) oder -Dfess.system.<key> (für system.properties) übergeben werden.
Remote-Ollama-Server
Wenn Ollama auf einem separaten Server als Fess läuft:
Warnung
Ollama hat standardmäßig keine Authentifizierungsfunktion. Bei externem Zugriff sollten Sie Sicherheitsmaßnahmen auf Netzwerkebene (Firewall, VPN usw.) in Betracht ziehen.
HTTP-Proxy verwenden
Der Ollama-Client nutzt die globale HTTP-Proxy-Konfiguration von Fess. Wenn die Verbindung zum Ollama-Server über einen Proxy erfolgen muss (z. B. bei Verwendung eines Remote-Ollama-Servers), geben Sie die folgenden Eigenschaften in fess_config.properties an.
| Eigenschaft | Beschreibung | Standard |
|---|---|---|
http.proxy.host | Proxy-Hostname (bei leerer Zeichenkette wird kein Proxy verwendet) | "" |
http.proxy.port | Proxy-Portnummer | 8080 |
http.proxy.username | Benutzername für die Proxy-Authentifizierung (optional; wenn angegeben, wird Basic-Authentifizierung aktiviert) | "" |
http.proxy.password | Passwort für die Proxy-Authentifizierung | "" |
Bemerkung
Da Ollama in der Regel lokal oder in einem internen Netzwerk betrieben wird, ist eine Proxy-Konfiguration nur in begrenzten Fällen notwendig (z. B. bei Verwendung eines Remote-Ollama-Servers, der nur über einen Unternehmens-Proxy erreichbar ist). Diese Einstellung wirkt sich auch auf den HTTP-Zugriff von Fess insgesamt (z. B. Crawler) aus.
Modellauswahl-Leitfaden
Richtlinien zur Modellauswahl je nach Verwendungszweck.
| Modell | Größe | Erforderlicher VRAM | Anwendungsfall |
|---|---|---|---|
phi3:3.8b | Klein | 4GB+ | Leichte Umgebung, einfache Frage-Antwort |
gemma4:e4b | Klein-Mittel | 8GB+ | Ausgewogener Allzweck, Thinking-Unterstützung (Standard) |
mistral:7b | Mittel | 8GB+ | Wenn hochwertige Antworten erforderlich sind |
llama3.3:70b | Groß | 48GB+ | Höchste Qualität, komplexe Schlussfolgerungen |
GPU-Unterstützung
Ollama unterstützt GPU-Beschleunigung. Mit NVIDIA-GPUs wird die Inferenzgeschwindigkeit erheblich verbessert.
Fehlerbehebung
Verbindungsfehler
Symptom: Fehler in der Chat-Funktion, LLM als nicht verfügbar angezeigt
Zu überprüfen:
Überprüfen Sie, ob Ollama läuft:
Überprüfen Sie, ob das Modell heruntergeladen ist:
Überprüfen Sie die Firewall-Einstellungen
Überprüfen Sie, ob das Plugin
fess-llm-ollamainapp/WEB-INF/plugin/vorhanden ist
Modell nicht gefunden
Symptom: Log gibt „Configured model not found“ aus
Lösung:
Überprüfen Sie, ob der Modellname korrekt ist (kann
:latest-Tag enthalten):Laden Sie das benötigte Modell herunter:
Timeout
Symptom: Anfragen laufen in Timeout
Lösung:
Verlängern Sie die Timeout-Zeit:
Erwägen Sie ein kleineres Modell oder eine GPU-Umgebung
Debug-Einstellungen
Zur Untersuchung von Problemen können Sie den Log-Level von Fess anpassen, um detaillierte Logs zu Ollama auszugeben.
app/WEB-INF/classes/log4j2.xml:
Weiterführende Informationen
Übersicht der LLM-Integration - Übersicht LLM-Integration
AI-Suchmodus-Funktion konfigurieren - Details zur KI-Suchmodus-Funktion