Zum Hauptinhalt springen
Retrieval-Augmented Generation, oder RAG, ist eine Technik, die die Antworten eines LLM durch die Einbeziehung externer Informationen verbessert. RAG nutzt eine Datenbank, um die kontextuell relevantesten Ergebnisse basierend auf semantischer Suche zum Zeitpunkt der Generierung abzurufen. Diese Technik ist besonders nützlich für das Prompting von Standard-LLMs, die für allgemeinen Chat fine-getuned wurden, und ermöglicht es ihnen, Anfragen zu bearbeiten, die über ihre ursprünglichen Trainingsdaten hinausgehen. Sie ermöglicht es LLMs auch, auf aktualisierte Informationen zuzugreifen, ohne neu trainiert zu werden, und reduziert Halluzinationen.

Workflow-Schritte

Ein typischer RAG-Workflow besteht aus zwei Hauptphasen: Ingestion und Online-Verarbeitung. Die Ingestion, oder Vorverarbeitung, (Schritte 1-4) umfasst die Vorbereitung der Daten für das RAG-System und erfolgt in der Regel offline. Die Online-Verarbeitung (Schritte 5-7) behandelt die Echtzeitaspekte des RAG-Systems und konzentriert sich auf Datenabruf und Antwortgenerierung.
1

Document Parsing

Daten werden geladen und mit Dokumenten-Loadern, die auf bestimmte Dateitypen wie CSV, Markdown und PDF zugeschnitten sind, in digitalen Text formatiert. Dieser Schritt umfasst die Extraktion von Inhalten und zugehörigen Metadaten wie Quelle und Seitenzahlen. Abhängig von der Qualität und dem Format der Dateien können Datenbereinigung und Anpassung erforderlich sein, um verschiedenen Anwendungsfallanforderungen gerecht zu werden.
2

Splitting

Dokumente werden in kleinere Chunks unterteilt, um den Kontextfenster-Limitierungen des Modells gerecht zu werden. Es gibt verschiedene Strategien für das Daten-Chunking, wobei Chunk-Größe, Überlappungsgröße und Sliding Window wichtige Hyperparameter sind, die optimiert werden können.
3

Vector Embeddings

Jeder Text-Chunk wird mithilfe eines Embedding-Modells in eine Vektordarstellung umgewandelt. Diese Embeddings erleichtern den Inhaltsabruf basierend auf semantischer Ähnlichkeit.
4

Vector Store

Die Embeddings mit ihren entsprechenden Inhalten und Metadaten werden in einer Vektordatenbank gespeichert, wobei das Embedding als Index verwendet wird. Es sind mehrere Vektordatenbank-Optionen verfügbar, darunter beispielsweise FAISS, ChromaDB, Qdrant und Milvus.
5

Retrieval

Die Anfrage wird ebenfalls eingebettet, und eine Retriever-Funktion wird verwendet, um die nächstgelegenen Chunk-Vektoren in der Vektordatenbank zum Anfragevektor zu identifizieren, basierend auf einer bestimmten Ähnlichkeitsmetrik. Dieser Schritt nutzt die während des Ingestion-Workflows gespeicherten Embeddings.
6

Reranking

Dies ist ein optionaler Schritt in der Online-Verarbeitungsphase. Ein Reranker-Modell kann auch verwendet werden, um die abgerufenen Chunks nach Relevanz zu sortieren und unnötige Chunks zu entfernen.
7

Q&A-Generierung

Das LLM erhält die Benutzeranfrage und die finalen abgerufenen Chunks, um eine fundierte Antwort zu generieren.
Probieren Sie die End-to-End-Implementierung einer RAG-Anwendung mit LangChain und Infercom aus, indem Sie sich das Enterprise Knowledge Retriever (EKR) Kit ansehen.