Retrieval-unterstützte Generierung (RAG) Systeme stellen die natürliche Weiterentwicklung eigenständiger großer Sprachmodelle (LLMs) dar. RAG adressiert mehrere wesentliche Einschränkungen klassischer LLMs, wie Modellhalluzinationen oder das Fehlen aktueller, relevanter Kenntnisse, die erforderlich sind, um fundierte, faktenbasierte Antworten auf Benutzeranfragen zu generieren.
In einer verwandten Artikelreihe haben wir einen umfassenden Überblick über RAG-Systeme, deren Merkmale, praktische Überlegungen und Herausforderungen gegeben. Nun fassen wir einige dieser Erkenntnisse zusammen und kombinieren sie mit den neuesten Trends und Techniken, um sieben wesentliche Schritte zu beschreiben, die für die erfolgreiche Entwicklung von RAG-Systemen als entscheidend erachtet werden.
Diese sieben Schritte beziehen sich auf verschiedene Phasen oder Komponenten einer RAG-Umgebung, wie im nachstehenden Diagramm dargestellt, das eine klassische RAG-Architektur veranschaulicht:
- Auswahl und Bereinigung von Datenquellen
- Chunking und Aufteilung
- Einbettung/Vektorisierung
- Bevölkerung von Vektordatenbanken
- Vektorisierung von Anfragen
- Relevanten Kontext abrufen
- Generierung einer fundierten Antwort
1. Auswahl und Bereinigung von Datenquellen
Das Prinzip „Garbage in, garbage out“ hat in RAG seine größte Bedeutung. Der Wert eines RAG-Systems ist direkt proportional zur Relevanz, Qualität und Sauberkeit der Quelltextdaten, die es abrufen kann. Um hochwertige Wissensdatenbanken sicherzustellen, sollten wertvolle Datensilos identifiziert und regelmäßig überprüft werden. Vor der Aufnahme von Rohdaten ist ein effektiver Reinigungsprozess durch robuste Pipelines erforderlich, die kritische Schritte wie das Entfernen personenbezogener Daten (PII), das Eliminieren von Duplikaten und das Beheben anderer störender Elemente umfassen. Dies ist ein kontinuierlicher Ingenieurprozess, der jedes Mal angewendet werden sollte, wenn neue Daten integriert werden.
2. Chunking und Aufteilung von Dokumenten
Viele Textdaten oder Dokumente, wie literarische Romane oder Dissertationen, sind zu groß, um als einzelne Dateninstanz oder -einheit eingebettet zu werden. Chunking besteht darin, lange Texte in kleinere Teile zu zerlegen, die semantische Bedeutung behalten und die kontextuelle Integrität wahren. Es erfordert einen sorgfältigen Ansatz: nicht zu viele Chunks (was zu einem möglichen Verlust des Kontexts führen kann), aber auch nicht zu wenige – übergroße Chunks beeinträchtigen später die semantische Suche!
Es gibt verschiedene Ansätze für das Chunking: von solchen, die auf der Zeichenanzahl basieren, bis hin zu solchen, die durch logische Grenzen wie Absätze oder Abschnitte gesteuert werden. LlamaIndex und LangChain, mit ihren zugehörigen Python-Bibliotheken, können bei dieser Aufgabe helfen, indem sie fortschrittlichere Aufteilungsmechanismen implementieren.
3. Einbettung und Vektorisierung von Dokumenten
Sobald Dokumente gechunked sind, besteht der nächste Schritt, bevor sie sicher in der Wissensdatenbank gespeichert werden, darin, sie in „die Sprache der Maschinen“ zu übersetzen: Zahlen. Dies geschieht typischerweise durch die Umwandlung jedes Textes in eine Vektor-Einbettung – eine dichte, hochdimensionale numerische Darstellung, die die semantischen Merkmale des Textes erfasst. In den letzten Jahren wurden spezialisierte LLMs entwickelt, um diese Aufgabe zu erfüllen: Sie werden als Einbettungsmodelle bezeichnet und umfassen bekannte Open-Source-Optionen wie Hugging Face’s all-MiniLM-L6-v2.
4. Bevölkerung der Vektordatenbank
Im Gegensatz zu traditionellen relationalen Datenbanken sind Vektordatenbanken darauf ausgelegt, den Suchprozess durch hochdimensionale Arrays (Einbettungen), die Textdokumente repräsentieren, effektiv zu ermöglichen – eine kritische Phase von RAG-Systemen, um relevante Dokumente für die Benutzeranfrage abzurufen. Sowohl Open-Source-Vektor-Speicher wie FAISS als auch Freemium-Alternativen wie Pinecone existieren und können hervorragende Lösungen bieten, die die Kluft zwischen menschenlesbarem Text und mathematischen Vektorrepräsentationen überbrücken.
5. Vektorisierung von Anfragen
Benutzeranfragen, die in natürlicher Sprache formuliert sind, werden nicht direkt mit gespeicherten Dokumentenvektoren abgeglichen: Sie müssen ebenfalls übersetzt werden, wobei dasselbe Einbettungsverfahren oder Modell verwendet wird. Mit anderen Worten, ein einzelner Anfragevektor wird erstellt und mit den in der Wissensdatenbank gespeicherten Vektoren verglichen, um basierend auf Ähnlichkeitsmetriken die relevantesten oder ähnlichsten Dokumente abzurufen.
6. Abrufen relevanter Kontexte
Sobald Ihre Anfrage vektorisiert ist, führt der Retriever des RAG-Systems eine Ähnlichkeitssuche durch, um die am nächsten passenden Vektoren (Dokumentchunks) zu finden. Während traditionelle Top-k-Ansätze oft funktionieren, können fortschrittliche Methoden wie Fusion Retrieval und Reranking verwendet werden, um zu optimieren, wie abgerufene Ergebnisse verarbeitet und als Teil des endgültigen, angereicherten Prompts für das LLM integriert werden.
7. Generierung fundierter Antworten
Schließlich kommt das LLM ins Spiel, nimmt die augmentierte Benutzeranfrage mit dem abgerufenen Kontext und wird angewiesen, die Frage des Benutzers unter Verwendung dieses Kontexts zu beantworten. In einer ordnungsgemäß gestalteten RAG-Architektur führt die Befolgung der vorherigen sechs Schritte in der Regel zu genaueren, nachvollziehbaren Antworten, die sogar Zitationen zu den verwendeten Daten enthalten können, um die Wissensdatenbank aufzubauen.
In diesem Stadium ist die Bewertung der Qualität der Antwort entscheidend, um zu messen, wie das gesamte RAG-System funktioniert und um anzuzeigen, wann das Modell möglicherweise eine Feinabstimmung benötigt. Bewertungsrahmen wurden zu diesem Zweck etabliert.
Fazit
RAG-Systeme oder -Architekturen sind zu einem nahezu unverzichtbaren Bestandteil von LLM-basierten Anwendungen geworden, und kommerzielle, groß angelegte Systeme verzichten heutzutage selten darauf. RAG macht LLM-Anwendungen zuverlässiger und wissensintensiver und hilft diesen Modellen, fundierte Antworten basierend auf Beweisen zu generieren, die manchmal auf privat gehaltenen Daten in Organisationen basieren.
Dieser Artikel fasst sieben wesentliche Schritte zusammen, um den Prozess des Aufbaus von RAG-Systemen zu beherrschen. Sobald Sie dieses grundlegende Wissen und die erforderlichen Fähigkeiten erlangt haben, sind Sie gut positioniert, um verbesserte LLM-Anwendungen zu entwickeln, die eine Unternehmensleistung, Genauigkeit und Transparenz freischalten – etwas, das mit den bekannten Modellen, die im Internet verwendet werden, nicht möglich ist.
Bildquelle: ai-generated