Retrieval-Augmented Generation

No-Answer-Gate im RAG: Sicheres Abfangen ausserhalb des Dokumentenraums

Ein No-Answer-Gate (NAG) ist ein Sicherheitsmechanismus in einer Retrieval-Augmented Generation (RAG) Architektur. Seine Aufgabe besteht darin, systematisch zu erkennen, wenn die Frage eines Benutzers auf Basis der in der Datenbank vorhandenen Dokumente nicht beantwortet werden kann. Anstatt das Sprachmodell raten oder halluzinieren zu lassen, sorgt das No-Answer-Gate für ein sicheres und kontrolliertes Abbrechen der Antwortgenerierung.

Das No-Answer-Gate ist damit ein zentraler Baustein jeder belastbaren RAG-Architektur und das wirksamste Mittel gegen Halluzinationen. Es arbeitet eng mit den Ergebnissen der Vektorsuche und der RAG-Evaluation zusammen, um zu entscheiden, ob überhaupt geantwortet werden darf.

Die Herausforderung: Das Vermeiden von Spekulationen

Sprachmodelle wurden im Training darauf getrimmt, kooperativ zu antworten. Erhält ein Modell einen Dokumenten-Kontext, der die Antwort auf eine Frage nicht enthält, neigt es unter dem Einfluss statistischer Wahrscheinlichkeiten dazu, weit hergeholte Analogien zu ziehen.

  • Beispiel: Der Nutzer fragt: „Bieten wir für unsere Mitarbeiter Zahnzusatzversicherungen an?“
  • Der gefundene Kontext enthält nur Dokumente über allgemeine Krankentagegeld-Versicherungen.
  • Ohne ein No-Answer-Gate antwortet das LLM eventuell: „Ja, wir haben Krankentagegeld-Versicherungen. Zahnzusatzversicherungen werden zwar nicht explizit erwähnt, gehören aber vermutlich dazu.“ Diese Spekulation ist im geschäftlichen Kontext gefährlich.

Die drei Implementierungsmethoden für No-Answer-Gates

Entwickler können ein No-Answer-Gate auf verschiedenen Ebenen der RAG-Pipeline realisieren:

1. Prompt-basiertes NAG (Auf Modellebene)

Dem Sprachmodell wird im System-Prompt die strikte Anweisung erteilt, bei fehlenden Informationen eine standardisierte Triggerphrase auszugeben.

  • Instruktion: „Wenn die Antwort nicht im Kontext steht, antworte ausschliesslich mit dem Token [CODE_NO_INFO]. Schreibe keinen anderen Text.“
  • Vorteil: Einfach umzusetzen. Das Backend kann nach dem Token suchen und dem Benutzer eine vorgefertigte, freundliche Standard-Fehlermeldung anzeigen.

2. Ähnlichkeits-Schwellenwert (Pre-Gate auf Retrieval-Ebene)

Bevor das Sprachmodell überhaupt aufgerufen wird, analysiert das Backend die Ergebnisse der Vektorsuche.

  • Das Verfahren: Liegen die Ähnlichkeits-Scores (z. B. Kosinus-Ähnlichkeit) aller gefundenen Text-Chunks unter einem festgelegten Grenzwert (z. B. < 0.70), bricht das System sofort ab. Das Sprachmodell wird gar nicht erst kontaktiert.
  • Vorteil: Spart API-Kosten und minimiert Latenzen.

3. Klassifizierungs-Schritt (Zweistufiges RAG)

Ein vorgeschaltetes, schnelles Sprachmodell erhält die Frage und den Kontext und muss lediglich eine Ja/Nein-Entscheidung treffen: „Reichen diese Dokumente aus, um die Frage X sachlich korrekt zu beantworten?“

  • Lautet die Antwort Nein, wird der Prozess gestoppt.
  • Lautet die Antwort Ja, generiert das primäre Sprachmodell die ausführliche Antwort.

Die drei Methoden im Vergleich

Die Verfahren unterscheiden sich deutlich in Kosten, Latenz und Zuverlässigkeit:

MethodeEbeneLatenzAPI-KostenStärke
Prompt-basiertModellkeine zusätzlichekeine zusätzlicheneinfachste Umsetzung
Ähnlichkeits-SchwelleRetrievalminimalspart Kostenbricht vor dem LLM ab
Klassifizierungvorgeschaltet+1 LLM-Aufrufhöherhöchste Treffsicherheit

In der Praxis bewährt sich eine Kombination: ein günstiges Pre-Gate auf Retrieval-Ebene fängt offensichtliche Fehltreffer ab, das prompt-basierte Gate sichert den Rest.

Pseudocode: Pre-Gate auf Retrieval-Ebene

treffer = vektorsuche(frage, top_k=5)
bester_score = max(t.score for t in treffer)

if bester_score < 0.70:
    return "Dazu liegen mir keine Informationen vor."
else:
    return llm_antwort(frage, kontext=treffer)

Der Schwellenwert 0.70 ist ein Startwert und muss über ein Golden Dataset kalibriert werden – zu hoch eingestellt weist das Gate legitime Fragen ab, zu niedrig lässt es Halluzinationen durch. Der Entscheidungsfluss lässt sich so darstellen:

graph TD
    Q["Benutzerfrage"] --> R["Vektorsuche: top_k Chunks"]
    R --> D{"Bester Score ≥ 0.70?"}
    D -->|Nein| N["Abbruch: 'Dazu liegen mir<br/>keine Informationen vor.'"]
    D -->|Ja| L["LLM generiert Antwort<br/>aus Kontext"]

Best Practices für die Umsetzung

  • Deterministische Temperatur: Setzen Sie die Temperatur des Sprachmodells bei sachlichen Suchen auf 0.0. Dies erhöht die Wahrscheinlichkeit, dass sich das Modell an die Instruktionen zur Antwortverweigerung hält.
  • Klare Fallbacks definieren: Das NAG sollte dem Benutzer nicht nur mitteilen, dass keine Information vorhanden ist, sondern auch konstruktive nächste Schritte anbieten (z. B. einen Link zum Support-Formular oder alternative Suchbegriffe).

[!TIP] Ein robustes No-Answer-Gate verhindert Falschaussagen und baut Vertrauen bei den Nutzern auf. Sehen Sie in der RAG-Demo auf allerate.dev, wie unsere Systeme Anfragen ausserhalb des Wissensraums abfangen.

Häufig gestellte Fragen (FAQ)

Warum halluzinieren Modelle trotz der Anweisung „Ich weiss es nicht“?

Sprachmodelle sind probabilistische Textgeneratoren. Wenn der übergebene Kontext Worte enthält, die lose zur Frage passen, versucht das Modell oft, einen logischen Zusammenhang zu konstruieren, anstatt die Antwort zu verweigern.

Ab welchem Ähnlichkeitswert sollte ein Pre-Gate die Suche blockieren?

Das hängt vom Embedding-Modell ab. Bei Kosinus-Ähnlichkeiten liegt die Schwelle (Threshold) oft bei 0.7 bis 0.8. Dieser Wert muss empirisch über Testdaten-Auswertungen (Golden Datasets) ermittelt werden.

Verschlechtert ein No-Answer-Gate die Nutzererfahrung?

Im Gegenteil – sofern es konstruktiv gestaltet ist. Eine ehrliche „Dazu liegen mir keine Informationen vor“-Antwort mit einem Verweis auf den Support schafft mehr Vertrauen als eine selbstsicher klingende Falschauskunft. Entscheidend ist, dass das Gate nicht zu aggressiv eingestellt ist und legitime Treffer nicht fälschlich abweist.

Wie testet man die Treffsicherheit eines No-Answer-Gates?

Mit einem ausgewogenen Testdatensatz, der bewusst auch unbeantwortbare Fragen enthält. Gemessen werden False Positives (legitime Fragen fälschlich abgewiesen) und False Negatives (unbeantwortbare Fragen dennoch beantwortet). Die Schwellenwerte werden so lange justiert, bis beide Fehlerraten ein akzeptables Niveau erreichen – das ist Teil der RAG-Evaluation.