KI-Serie Interviewfragen 11: Wie optimiert man RAG?
Die Optimierung von RAG ist keine Anpassung einer einzelnen Komponente, sondern ein prozessübergreifender Optimierungsprozess. Im Folgenden gebe ich systematische Optimierungsstrategien aus den vier Dimensionen Datenindexierungsseite, Retrieval-Seite, Generierungsseite und Evaluierungsseite sowie praktische Erfahrungen, die im Vorstellungsgespräch erwähnt werden können.
1. Optimierung auf der Datenindexierungsseite (Verbesserung der "Wissensdatenbank"-Qualität)
Dies ist der am meisten übersehene, aber am schnellsten wirkende Bereich.
| Optimierungspunkt | Problemerscheinung | Konkrete Maßnahme | Wirkungsindikator |
|---|---|---|---|
| Dokumentenanalyse | Tabellen und Flussdiagramme in PDFs werden ignoriert, oder Text ist verstümmelt oder in falscher Reihenfolge. | Verwenden Sie bessere Analysebibliotheken (z.B. unstructured, pypdf mit Layout-Erhaltungsmodus); extrahieren Sie Tabellen mit pandas und konvertieren Sie sie in Markdown. |
Recall +5~15% |
| Chunk-Größe | Zu kleiner Chunk verliert Kontext (z.B. Referenz in "Sein Umsatzwachstum in diesem Jahr"); zu großer Chunk führt zu viel Rauschen beim Retrieval. | Experimentieren Sie mit verschiedenen Chunk-Größen (256/512/768 Token), Overlap von 10~20%; für lange Dokumente semantisch (Absätze/Überschriften) statt fester Länge segmentieren. | Hit-Rate / Faithfulness |
| Metadaten-Anhängung | Relevante Passagen werden gefunden, aber Quelle oder Zeitpunkt sind nicht zurückverfolgbar, oder domänenspezifische Filterung erforderlich. | Fügen Sie Metadaten zu jedem Chunk hinzu: source (Dateiname/URL), timestamp, page_num, doc_type. Verwenden Sie Filter beim Retrieval (z.B. doc_type == 'legal'). |
Filtergenauigkeit |
| Embedding-Modellauswahl | Allgemeines Embedding schneidet in vertikalen Domänen (Medizin, Code, Recht) schlecht ab. | Verwenden Sie domänenfeinabgestimmte Modelle (BGE-large-zh, GTE-Qwen2-7B-instruct) oder feinabstimmen Sie Ihr eigenes Embedding-Modell (mit Triplet Loss). | Retrieval MRR@10 +10~20% |
2. Optimierung auf der Retrieval-Seite (Präziseres "Nachschlagen")
Das Retrieval bestimmt die Qualität der "Referenzmaterialien", die dem LLM zugeführt werden.
| Optimierungspunkt | Problemerscheinung | Konkrete Maßnahme | Wirkung |
|---|---|---|---|
| Hybrides Retrieval | Vektor-Retrieval kann exakte Begriffe (wie Produktmodell ABC-123) nicht abgleichen, Keyword-Retrieval versteht keine Synonyme. |
Verwenden Sie gleichzeitig Vektor-Retrieval (semantisch) und BM25 (Keywords) und kombinieren Sie sie durch Gewichtung (z.B. 0.7Vektor + 0.3BM25) oder Reranking. | Recall +10~25% |
| Reranking | Die ersten Ergebnisse des Vektor-Retrievals sind nicht unbedingt am relevantesten; das 10. könnte das beste sein. | Verwenden Sie ein Cross-Encoder-Modell (z.B. BGE-reranker-v2, Cohere Rerank), um die Kandidaten (z.B. Top-20) neu zu bewerten und Top-K auszuwählen. |
Deutliche Verbesserung der Trefferquote (insbesondere Top-1) |
| Query-Umschreibung | Benutzerfrage ist vage oder Mehrfachdialog mit undeutlichen Referenzen ("Was kostet es?"). | Lassen Sie das LLM die ursprüngliche Frage in eine für das Retrieval geeignetere Form umschreiben (z.B. "Wie viel kostet das iPhone 15?") oder ergänzen Sie sie mit Dialoghistorie. | Recall +5~15% |
| HyDE | Benutzerfrage ist zu kurz oder zu abstrakt (z.B. "Erklären Sie Photosynthese"), direktes Retrieval ist schlecht. | Lassen Sie das LLM zunächst eine hypothetische Antwort generieren und verwenden Sie diese zum Retrieval. | Geeignet für offene Domänen, nicht für faktenbasierte präzise Fragen |
| Anpassung der Retrieval-Anzahl Top-K | Zu kleines K kann wichtige Informationen verpassen; zu großes K erhöht Tokenverbrauch und Rauschen. | Experimentieren Sie mit K=3/5/10 und beobachten Sie das Gleichgewicht zwischen Recall und Antwortgenauigkeit. | Effizienz vs. Effekt |
3. Optimierung auf der Generierungsseite (LLM die Referenzen gut nutzen lassen)
Selbst bei perfektem Retrieval nützt es nichts, wenn das Prompt oder das Modell nicht stimmt.
| Optimierungspunkt | Problemerscheinung | Konkrete Maßnahme | Wirkung |
|---|---|---|---|
| Prompt Engineering | LLM ignoriert Retrieval-Inhalte oder erfindet Dinge. | Klare Anweisung: "Beantworten Sie die Frage nur anhand der folgenden Referenzen. Wenn die Informationen unzureichend oder nicht relevant sind, antworten Sie 'Nicht genügend Informationen'." Fügen Sie few-shot examples hinzu, die zeigen, wie Quellen zitiert werden. | Faithfulness +20~40% |
| Kontextkompression | Abgerufene Inhalte sind zu lang (über Kontextfenster) oder größtenteils Rauschen. | Verwenden Sie LLMLingua oder Selective Context zur Komprimierung und behalten Sie nur die relevantesten Sätze. |
Reduziert Risiko von Informationsverlust |
| LLM-Modell-Upgrade | Kleines Modell (7B) kann keine komplexen Schlussfolgerungen ziehen oder sich lange Kontexte nicht merken. | Wechseln Sie zu stärkeren Modellen (GPT-4o, Claude 3.5 Sonnet, Qwen2.5-72B). | Deutliche Verbesserung der Schlussfolgerungsgenauigkeit |
| Streaming und Zitate | Benutzer können die Glaubwürdigkeit der Antwort nicht überprüfen. | Lassen Sie das LLM während der Generierung [citation:1] ausgeben, das auf die Nummer des abgerufenen Dokuments verweist. Auf der Backend-Seite fügen Sie den Original-Link hinzu. |
Benutzervertrauen + Debugging-Fähigkeit |
| Kalibrierung der Antwortverweigerung | Das Modell erfindet Dinge, wenn es nicht antworten sollte, oder sagt "weiß nicht", wenn es antworten sollte. | Setzen Sie einen Ähnlichkeitsschwellenwert: Wenn die Kosinus-Ähnlichkeit des Top-1-Chunks mit der Frage unter 0,7 liegt, weisen Sie das LLM an, "Die Informationen sind nicht relevant" zu antworten. | Reduziert Halluzinationsrate |
4. Evaluierungs- und Iterationsseite (Wissen, wohin optimiert werden muss)
Ohne Metriken keine Optimierung.
| Optimierungspunkt | Maßnahme | Metrik |
|---|---|---|
| Erstellung eines Evaluierungssets | Bereiten Sie 100-300 echte Benutzerfragen + Standardantworten + korrekte Retrieval-Dokument-IDs vor. | Abdeckung verschiedener Schwierigkeitsgrade und Intentionen. |
| Automatisierte Evaluierung | Verwenden Sie RAGAS (Faithfulness, Answer Relevance, Context Recall) oder TruLens. | Drei Kernmetriken: Faithfulness, Answer Relevance, Context Recall. |
| Manuelle Evaluierung | Testen Sie wöchentlich 20 Bad Cases und analysieren Sie die Fehlertypen (Retrieval-Fehler / Generierungsfehler / fehlende Wissensbasis). | Priorisierung der Verbesserungen. |
| A/B-Testing | Testen Sie in der Produktionsumgebung verschiedene Retrieval-Strategien (z.B. BM25 vs. hybrides Retrieval) in getrennten Gruppen. | Online-Metriken: Benutzerzufriedenheit, Rate fehlender Antworten. |
5. Im Vorstellungsgespräch erwähnbare "praktische Erfahrungen" (Bonus)
"In meinem RAG-Projekt lag die Basis-Trefferquote zunächst bei nur 67%. Ich habe drei Dinge getan:
1. Umstellung von fester Chunk-Größe 1024 auf dynamische semantische Segmentierung (nach Überschrift + Absatz), Trefferquote auf 74%.
2. Hinzufügen von hybridem Retrieval (Vektor + BM25) und einem kleinen Rerank-Modell, Trefferquote auf 83%.
3. Optimierung des Prompts und erzwungene Angabe von[Keine relevanten Informationen gefunden], Halluzinationsrate von 22% auf unter 5% gesenkt.Außerdem haben wir eine kontinuierliche Evaluierungspipeline aufgebaut. Vor jeder Änderung werden die RAGAS-Scores für 200 Fragen gemessen, um sicherzustellen, dass es keine Regression gibt."
Abschließende Zusammenfassung: Eine vollständige Roadmap zur RAG-Optimierung
Datenebene ─→ Dokumentenbereinigung, Chunk-Optimierung, Metadatenanreicherung, domänenspezifisches Embedding
Retrieval-Ebene ─→ Hybrides Retrieval, Reranking, Query-Umschreibung, HyDE, Top-K-Optimierung
Generierungsebene ─→ Prompt-Verstärkung, Anweisungsanforderungen, Komprimierung, Zitierung, Ablehnungsschwellenwert
Evaluierungsebene ─→ Evaluierungsset, RAGAS, manuelle Analyse, A/B-Experimente
评论
暂无已展示的评论。
发表评论(匿名)