Das Problem: Wissens-Grenze und Halluzinationen

Große Sprachmodelle werden auf Daten bis zu einem bestimmten Datum trainiert. Sie können nicht automatisch Zugang zu neuesten Informationen, firmeneigenen Dokumenten oder spezialisierten Datenbanken haben.

Wenn sie Fragen zu Informationen außerhalb ihres Trainingsdatensatzes beantworten müssen, neigen sie zu Halluzinationen – plausibel klingende, aber falsche Antworten.

Lösung: Retrieval-Augmented Generation (RAG) kombiniert die Kraft von Sprachmodellen mit externen Wissensbäsen. Das Modell kann relevante Dokumente abrufen und seine Antwort darauf basieren.

Embedding-Raum & Retrieval
Dokumente
Top-k
1

Input: Benutzer-Frage

Der Prozess beginnt mit einer Benutzer-Frage. Diese Frage wird in die gleiche Vektordarstellung transformiert wie die Dokumente in der Datenbank.

Input: "Was ist Grouped Query Attention?"

Hinweis: Die Frage ist zu diesem Zeitpunkt noch nur Text – kein numerischer Vektor.

2

Embedding: Frage → Vektor

Ein Embedding-Modell konvertiert die Frage in einen hochdimensionalen Vektor. Dieser Vektor kappt die semantische Bedeutung der Frage in einem Vektor-Raum.

Embedding Model: sentence-transformers/multilingual-e5-large Output Shape: (1, 1024) Query Vector: [-0.23, 0.45, ..., 0.12]

Beliebte Embedding-Modelle

• Sentence-BERT (384-768 dims)
• Multilingual E5 (1024 dims)
• nomic-embed-text (768 dims)

Wichtig

Query und Dokumente müssen mit dem gleichen Modell eingebettet werden, um vergleichbar zu sein.

3

Retrieval: Ähnliche Dokumente finden

Die Vektor-Datenbank berechnet die Ähnlichkeit zwischen dem Query-Vektor und allen gespeicherten Dokument-Vektoren. Dies geschieht durch Distanzmetriken wie Cosine Similarity.

Cosine Similarity(query, doc) = (query · doc) / (||query|| × ||doc||) Wertebereich: -1 (entgegengesetzt) bis +1 (identisch) Schwellwert: > 0.5 meist relevant

Komplexität: O(n) mit Linearsuche oder O(log n) mit indexierten Strukturen (z.B. FAISS, Annoy).

4

Ranking: Top-k Dokumente

Nach dem Retrieval werden die Top-k Dokumente (meist k=3-5) nach Ähnlichkeit sortiert. Optional folgt ein zweites Ranking mit einem Cross-Encoder für genauere Ordnung.

Stage 1 (Bi-Encoder): Schnell, Top-100 Stage 2 (Cross-Encoder): Präzise, Top-10 Stage 3 (Reranker): Optional, Final ranking

Dense Retrieval

Semantische Ähnlichkeit. Erfasst Synonyme, aber verpasst exakte Matches ("Error TS-999").

Sparse Retrieval (BM25)

Keyword-basiert. Erfasst exakte Matches, aber verpasst Synonyme.

5

Augmentation: Prompt erweitern

Der ursprüngliche Prompt wird mit den abgerufenen Dokumenten erweitert. Das Modell erhält jetzt Kontext, um eine informierte Antwort zu geben.

System: Du bist ein Assistent... Context: [Doc 1] Grouped Query Attention (GQA) ist... [Doc 2] GQA reduziert den KV-Cache um... [Doc 3] Modelle mit GQA: Llama 3... Question: Was ist Grouped Query Attention?

Token-Overhead: 3-5 Dokumente à 256-512 Tokens = 800-2560 zusätzliche Tokens pro Query.

6

Generation: Antwort mit Kontext

Das Sprachmodell generiert eine Antwort basierend auf dem augmentierten Prompt. Die Antwort sollte präziser und aktueller sein, da sie auf externen Quellen basiert.

Output: "Grouped Query Attention ist eine Variante der Multi-Head Attention, bei der mehrere Query-Heads einen Key-Value-Head teilen. Dies reduziert den KV-Cache um bis zu 8x, während die Qualität nahezu erhalten bleibt..."

Vorteile

✓ Aktuelle Infos
✓ Quellenangaben
✓ Weniger Halluzinationen

Herausforderungen

✗ Latenz (Retrieval)
✗ Fehlerhafte Chunks
Lost-in-the-Middle

7

Zusätze: Reranking & Hybrid Search

Moderne RAG-Systeme kombinieren mehrere Techniken für bessere Ergebnisse:

Technik Ansatz Vorteile Nachteile
Dense Semantische Vektoren Synonyme erfasst Exakte Matches verpasst
Sparse (BM25) Keyword-Matching Exakte Matches Synonyme verpasst
Hybrid Dense + Sparse kombiniert (RRF) Beide Vorteile Komplexere Implementierung
Reranker Cross-Encoder auf Top-k Präziseres Ranking Zusätzliche Latenz
8

Lost-in-the-Middle Problem

Faszinierend: Sprachmodelle attendieren oft nicht zur Mitte der Kontexte. Relevante Informationen in der Mitte können ignoriert werden.

Experiment: [Irrelevant Docs] + [Target Doc] + [Irrelevant Docs] Result: Accuracy bei Position: Anfang: 85% Mitte: 45% ⚠️ Ende: 80%

Lösung: Kritische Dokumente am Anfang oder Ende platzieren. Alternativ: "Found-in-the-Middle" Techniken wie Dokument-Reorderung.

Praktische RAG-Pipeline

Hier ist ein vereinfachtes Beispiel einer RAG-Implementierung:

# 1. Dokumente einbetten (einmalig) documents = [ "Grouped Query Attention (GQA) ist...", "Der KV-Cache wird als O(n) gespeichert...", "Llama 3 verwendet Multi-Head Attention..." ] doc_embeddings = embedding_model.encode(documents) vector_db.index(doc_embeddings) # 2. Query verarbeiten (pro Request) query = "Was ist Grouped Query Attention?" query_embedding = embedding_model.encode(query) # 3. Retrieval top_k_docs = vector_db.search(query_embedding, k=3) # 4. Augmentation augmented_prompt = f""" Context: {chr(10).join(top_k_docs)} Question: {query} """ # 5. Generation response = llm.generate(augmented_prompt)

Zusammenfassung: Wann RAG nutzen?

RAG ist ideal für:

RAG ist nicht ideal für: