Übersicht
Fess unterstützt eine KI-Suchmodus-Funktion (RAG: Retrieval-Augmented Generation), die große Sprachmodelle (LLM) nutzt. Mit dieser Funktion können Benutzer Informationen in einem dialogorientierten Format mit einem KI-Assistenten abrufen, der auf Suchergebnissen basiert.
Die LLM-Integrationsfunktion wird als fess-llm-*-Plugin bereitgestellt. Installieren Sie das Plugin, das dem LLM-Anbieter entspricht, den Sie verwenden möchten.
Unterstützte Anbieter
Fess unterstützt die folgenden LLM-Anbieter.
| Anbieter | Einstellungswert | Plugin | Beschreibung |
|---|---|---|---|
| Ollama | ollama | fess-llm-ollama | Open-Source-LLM-Server, der in lokalen Umgebungen läuft. Kann Modelle wie Llama, Mistral und Gemma ausführen. Standardeinstellung. |
| OpenAI | openai | fess-llm-openai | Cloud-API von OpenAI. Ermöglicht die Nutzung von Modellen wie GPT-4. |
| Google Gemini | gemini | fess-llm-gemini | Cloud-API von Google. Ermöglicht die Nutzung von Gemini-Modellen. |
Plugin-Installation
Die LLM-Funktion wird als Plugin bereitgestellt. Die JAR-Datei des fess-llm-{provider}-Plugins für den gewünschten Anbieter muss im Plugin-Verzeichnis abgelegt werden.
Als Beispiel: Wenn Sie den OpenAI-Anbieter verwenden möchten, laden Sie fess-llm-openai-15.7.0.jar herunter und legen Sie es im folgenden Verzeichnis ab.
Nach der Ablage wird das Plugin beim nächsten Neustart von Fess geladen.
Architektur
Die KI-Suchmodus-Funktion arbeitet mit dem folgenden Ablauf.
Benutzereingabe: Der Benutzer gibt eine Frage in der Chat-Oberfläche ein
Absichtsanalyse (intent): Das LLM analysiert die Benutzerfrage und extrahiert Suchbegriffe
Suchausführung (search): Die Fess-Suchmaschine sucht nach relevanten Dokumenten
Ergebnisbewertung (evaluate): Das LLM bewertet die Relevanz der Suchergebnisse und wählt die optimalen Dokumente aus
Query-Regenerierung (bei Bedarf): Werden keine Suchergebnisse gefunden oder keine relevanten Dokumente in der Bewertung ermittelt, regeneriert das LLM die Abfrage und führt eine erneute Suche durch
Inhaltsabruf (fetch): Der Volltext der ausgewählten Dokumente wird abgerufen
Antwortgenerierung (answer): Das LLM generiert eine Antwort auf Basis der abgerufenen Dokumente (mit Markdown-Rendering)
Quellenangabe: Die Antwort enthält Links zu den referenzierten Quelldokumenten
Bemerkung
Die interne Verarbeitung besteht aus fünf Phasen: intent, search, evaluate, fetch und answer. Der Fortschritt jeder Phase wird dem Client per Streaming (SSE) mitgeteilt.
Grundeinstellungen
Die LLM-Funktion wird an den folgenden zwei Stellen konfiguriert.
Allgemeine Einstellungen in der Administrationsoberfläche / system.properties
Konfiguration über die allgemeinen Einstellungen der Administrationsoberfläche oder in system.properties. Wird zur Auswahl des LLM-Anbieters verwendet.
fess_config.properties
Konfiguration in app/WEB-INF/conf/fess_config.properties. Diese Datei dient der Aktivierung des KI-Suchmodus, der Sitzungs- und Verlaufskonfiguration sowie anbieterspezifischer Einstellungen (Verbindungs-URLs, API-Schlüssel, Generierungsparameter usw.).
Detaillierte Einstellungen für jeden Anbieter finden Sie in den folgenden Dokumenten.
Ollama-Konfiguration - Ollama-Konfiguration
OpenAI-Konfiguration - OpenAI-Konfiguration
Google Gemini-Konfiguration - Google Gemini-Konfiguration
Gemeinsame Einstellungen
Einstellungselemente, die für alle LLM-Anbieter gemeinsam gelten. Diese werden in fess_config.properties konfiguriert.
Kontexteinstellungen
| Eigenschaft | Beschreibung | Standard |
|---|---|---|
rag.chat.context.max.documents | Maximale Anzahl der Dokumente im Kontext | 5 |
rag.chat.content.fields | Aus Dokumenten abzurufende Felder | title,url,content,doc_id,content_title,content_description |
Bemerkung
Die maximale Zeichenzahl des Kontexts (context.max.chars) wurde auf eine anbieter- und prompttypspezifische Einstellung umgestellt. Konfigurieren Sie diese in fess_config.properties als rag.llm.{provider}.{promptType}.context.max.chars.
Systemprompt
Systemprompts werden nicht in Property-Dateien, sondern in den DI-XML-Dateien der jeweiligen Plugins verwaltet.
Der Systemprompt wird in der Datei fess_llm++.xml definiert, die in der JAR-Datei jedes fess-llm-*-Plugins enthalten ist. Da diese Datei eine im Plugin-JAR gebündelte Classpath-Ressource ist, muss die DI-XML-Datei innerhalb des JARs bearbeitet werden, um den Prompt anzupassen.
Verfügbarkeitsprüfung
| Eigenschaft | Beschreibung | Standard |
|---|---|---|
rag.llm.{provider}.availability.check.interval | Intervall zur Prüfung der LLM-Verfügbarkeit (Sekunden). 0 zum Deaktivieren | 60 |
Diese Einstellung wird in fess_config.properties vorgenommen. Fess überprüft regelmäßig den Verbindungsstatus zum LLM-Anbieter.
Sitzungsverwaltung
Einstellungen zu Chat-Sitzungen. Diese werden in fess_config.properties konfiguriert.
| Eigenschaft | Beschreibung | Standard |
|---|---|---|
rag.chat.session.timeout.minutes | Sitzungs-Timeout (Minuten) | 30 |
rag.chat.session.max.size | Maximale Anzahl der Sitzungen | 10000 |
rag.chat.history.max.messages | Maximale Anzahl der Nachrichten im Gesprächsverlauf | 30 |
Gleichzeitigkeitssteuerung
Einstellungen zur Steuerung der gleichzeitigen Anfragen an das LLM. Konfiguration in fess_config.properties.
| Eigenschaft | Beschreibung | Standard |
|---|---|---|
rag.llm.{provider}.max.concurrent.requests | Maximale Anzahl gleichzeitiger Anfragen an den Anbieter | 5 |
rag.llm.{provider}.concurrency.wait.timeout | Maximale Wartezeit (Millisekunden) bis eine freie Kapazität verfügbar ist, wenn die Gleichzeitigkeitsgrenze erreicht wurde. Wird innerhalb dieser Zeit keine Kapazität frei, wird ein Ratenlimitierungsfehler zurückgegeben | 30000 |
Um beispielsweise die Gleichzeitigkeitssteuerung für den OpenAI-Anbieter zu konfigurieren:
Bewertungseinstellungen
Einstellungen zur Bewertung der Suchergebnisse. Konfiguration in fess_config.properties.
| Eigenschaft | Beschreibung | Standard |
|---|---|---|
rag.llm.{provider}.chat.evaluation.max.relevant.docs | Maximale Anzahl der in der Bewertungsphase ausgewählten relevanten Dokumente | 3 |
Prompttypspezifische Einstellungen
Generierungsparameter können für jeden Prompttyp einzeln konfiguriert werden. Dies ermöglicht eine feinere Abstimmung je nach Verwendungszweck. Die Konfiguration erfolgt in fess_config.properties.
Prompttypen-Übersicht
| Prompttyp | Einstellungswert | Beschreibung |
|---|---|---|
| Absichtsanalyse | intent | Analysiert die Benutzerfrage und extrahiert Suchbegriffe |
| Bewertung | evaluation | Bewertet die Relevanz der Suchergebnisse |
| Unklare Anfrage | unclear | Generiert eine Antwort, wenn die Frage unklar ist |
| Keine Ergebnisse | noresults | Generiert eine Antwort, wenn keine Suchergebnisse gefunden werden |
| Dokument nicht vorhanden | docnotfound | Generiert eine Antwort, wenn kein passendes Dokument existiert |
| Antwortgenerierung | answer | Generiert eine Antwort auf Basis der Suchergebnisse |
| Zusammenfassung | summary | Generiert eine Zusammenfassung des Dokuments |
| FAQ | faq | Generiert eine Antwort im FAQ-Format |
| Direkte Antwort | direct | Generiert eine Antwort ohne Suchumweg |
| Query-Regenerierung | queryregeneration | Regeneriert die Abfrage, wenn keine Suchergebnisse gefunden werden |
Konfigurationsmuster
Prompttypspezifische Einstellungen werden nach folgendem Muster angegeben.
Konfigurationsbeispiel (OpenAI-Anbieter):
Bemerkung
temperature, max.tokens und context.max.chars sind bei allen Anbietern gemeinsam verfügbar. Darüber hinaus unterstützt jeder Anbieter eigene Parameter wie thinking.budget, top.p oder reasoning.effort. Details entnehmen Sie bitte der jeweiligen Anbieterdokumentation.
Nächste Schritte
Ollama-Konfiguration - Detaillierte Ollama-Konfiguration
OpenAI-Konfiguration - Detaillierte OpenAI-Konfiguration
Google Gemini-Konfiguration - Detaillierte Google Gemini-Konfiguration
AI-Suchmodus-Funktion konfigurieren - Detaillierte Konfiguration der KI-Suchmodus-Funktion
Rank Fusion Konfiguration - Rank Fusion Konfiguration (Zusammenführung hybrider Suchergebnisse)