Das Muster der Retrieval-Augmented Generation (RAG) ist ein Branchenstandardansatz zum Erstellen von Anwendungen, die Sprachmodelle verwenden, um spezifische oder proprietäre Daten zu verarbeiten, die das Modell noch nicht kennt. Die Architektur ist einfach, aber das Entwerfen, Experimentieren und Auswerten von RAG-Lösungen, die in diese Architektur passen, umfassen viele komplexe Aspekte, die von einem strengen, wissenschaftlichen Ansatz profitieren.
Dieser Artikel ist die Einführung einer Reihe. Jeder Artikel in der Reihe befasst sich mit einer bestimmten Phase des RAG-Lösungsdesigns.
Die anderen Artikel dieser Reihe umfassen die folgenden Überlegungen:
- Ermitteln, welche Testdokumente und Abfragen während der Auswertung verwendet werden sollen
- Auswählen einer Blockierungsstrategie
- So bestimmen Sie, welche Blöcke Sie bereichern sollten und wie Sie sie anreichern
- Auswählen des richtigen Einbettungsmodells
- So konfigurieren Sie den Suchindex
- Ermitteln der Suchvorgänge, z. B. Vektor, Volltext, Hybrid und manuelle Mehrfachsuchen, sollten Sie ausführen
- So bewerten Sie jeden Schritt
RAG-Architektur
RAG-Anwendungsfluss
Der folgende Workflow beschreibt einen allgemeinen Fluss für eine RAG-Anwendung.
- Der Benutzer schreibt eine Abfrage in einer intelligenten Anwendungs-Benutzeroberfläche.
- Die intelligente Anwendung führt einen API-Aufruf an einen Orchestrator durch. Sie können den Orchestrator mit Tools oder Plattformen wie Semantic Kernel, Azure Machine Learning Prompt Flow oder LangChain implementieren.
- Der Orchestrator bestimmt, welche Suche bei Azure AI Search ausgeführt werden soll, und gibt die Abfrage aus.
- Der Orchestrator packt die wichtigsten N- Ergebnisse aus der Abfrage. Sie verpackt die wichtigsten Ergebnisse und die Abfrage als Kontext in einer Eingabeaufforderung und sendet die Eingabeaufforderung an das Sprachmodell. Der Orchestrator gibt die Antwort auf die intelligente Anwendung zurück, sodass der Benutzer sie lesen kann.
Ablauf der RAG-Datenpipeline
Der folgende Workflow beschreibt einen allgemeinen Fluss für eine Datenpipeline, die Erdungsdaten für eine RAG-Anwendung bereitstellt.
- Dokumente werden entweder per Push verschoben oder in eine Datenpipeline übertragen.
- Die Datenpipeline verarbeitet jedes Dokument einzeln, indem die folgenden Schritte ausgeführt werden:
- Blockdokument: Unterteilt das Dokument in semantisch relevante Teile, die idealerweise eine einzelne Idee oder ein Konzept aufweisen.
- Anreichern von Blöcken: Fügt Metadatenfelder hinzu, die die Pipeline basierend auf dem Inhalt in den Blöcken erstellt. Die Datenpipeline kategorisiert die Metadaten in diskrete Felder, z. B. Titel, Zusammenfassung und Schlüsselwörter.
- Einbettungsblöcke: Verwendet ein Einbettungsmodell, um den Block und alle anderen Metadatenfelder zu vektorisieren, die für Vektorsuchen verwendet werden.
- Blöcke beibehalten: Speichert die Blöcke im Suchindex.
Überlegungen zum Design und zur Bewertung von RAG
Sie müssen verschiedene Implementierungsentscheidungen treffen, während Sie Ihre RAG-Lösung entwerfen. Das folgende Diagramm veranschaulicht einige der Fragen, die Sie beim Treffen dieser Entscheidungen stellen sollten.
Die folgende Liste enthält eine kurze Beschreibung, was Sie während jeder Phase der RAG-Lösungsentwicklung tun sollten.
Während der Vorbereitungsphasesollten Sie:
- Ermitteln Sie die Lösungsdomäne. Definieren Sie klar die Geschäftsanforderungen für die RAG-Lösung.
- Sammeln Sie repräsentative Testdokumente. Sammeln Sie Testdokumente für Ihre RAG-Lösung, die für Ihre Dokumentsammlung repräsentativ sind.
- Sammeln von Testabfragen. Sammeln Sie Informationen und Testabfragen, und generieren Sie synthetische Abfragen und Abfragen, die Ihre Dokumente nicht abdecken.
Während der Abschnittsphasesollten Sie:
- Verstehen der Blöcke Ökonomie. Verstehen Sie, welche Faktoren sie berücksichtigen sollten, wenn Sie die Gesamtkosten Ihrer Blocklösung für Ihre Textsammlung bewerten.
- Führen Sie eine Dokumentanalyse durch. Stellen Sie die folgenden Fragen, um Entscheidungen zu treffen, wenn Sie einen Dokumenttyp analysieren:
- Welchen Inhalt im Dokument möchten Sie ignorieren oder ausschließen?
- Welche Inhalte möchten Sie in Blöcken erfassen?
- Wie möchten Sie diesen Inhalt blöcken?
- Grundlegendes zu Blöcken. Verstehen Sie die verschiedenen Ansätze für Blöcke, einschließlich satzbasierter, fester und benutzerdefinierter Ansätze oder mithilfe von Sprachmodellerweiterung, Dokumentlayoutanalyse und Machine Learning-Modellen.
- Verstehen, wie sich die Dokumentstruktur auf Blöcke auswirkt. Wählen Sie einen Blockierungsansatz basierend auf dem Grad der Struktur aus, über den das Dokument verfügt.
Während der Phase der Blockanreicherungsollten Sie:
- Bereinigen von Blöcken. Implementieren Sie Reinigungsansätze, um Unterschiede zu beseitigen, die sich nicht auf die Bedeutung des Texts auswirken. Diese Methode unterstützt Übereinstimmungen mit der Nähe.
- Erweitern von Blöcken. Erwägen Sie, Ihre Datenabschnitte mit allgemeinen Metadatenfeldern zu erweitern und deren potenzielle Verwendungsmöglichkeiten bei der Suche zu verstehen. Erfahren Sie mehr über häufig verwendete Tools oder Techniken zum Generieren von Metadateninhalten.
Während der Einbettungsphasesollten Sie:
- Verstehen sie die Bedeutung des Einbettungsmodells. Ein Einbettungsmodell kann sich erheblich auf die Relevanz Ihrer Vektorsuchergebnisse auswirken.
- Wählen Sie das richtige Einbettungsmodell für Ihren Anwendungsfall aus.
- Auswerten von Einbettungsmodellen. Bewerten Sie Einbettungsmodelle, indem Sie Einbettungen visualisieren und Einbettungsabstände berechnen.
Während der Informationsabrufphasesollten Sie:
- Erstellen Sie einen Suchindex. Wenden Sie die entsprechenden Vektorsuchkonfigurationen auf Ihre Vektorfelder an.
- Grundlegendes zu Suchoptionen. Berücksichtigen Sie die verschiedenen Suchtypen, einschließlich Vektor, Volltext, Hybrid und manueller Suchvorgänge. Erfahren Sie, wie Sie eine Abfrage in Unterabfragen aufteilen und Abfragen filtern.
- Suchen auswerten. Verwenden Sie Abrufauswertungsmethoden, um Ihre Suchlösung auszuwerten.
Während der End-to-End-Evaluierungsphasesollten Sie:
- Grundlegendes zu Sprachmodellauswertungsmetriken. Es gibt mehrere Metriken, einschließlich Grundkenntnisse, Vollständigkeit, Auslastung und Relevanz, die Sie zum Auswerten der Antwort des Sprachmodells verwenden können.
- Verstehen von Ähnlichkeits- und Auswertungsmetriken. Sie können Ähnlichkeits- und Auswertungsmetriken verwenden, um Ihre RAG-Lösung auszuwerten.
- Verstehen sie die Bedeutung von Dokumentation, Berichterstellung und Aggregation. Dokumentieren Sie die Hyperparameter und die Auswertungsergebnisse. Aggregieren Sie die Ergebnisse aus mehreren Abfragen, und visualisieren Sie die Ergebnisse.
- Verwenden Sie den RAG Experiment Accelerator. Sie können das RAG Experiment Accelerator GitHub-Repository verwenden, um Ihrem Team zu helfen, die besten Strategien für die RAG-Implementierung zu finden, indem Sie mehrere Experimente ausführen, beibehalten und die Ergebnisse auswerten.
Strukturierter Ansatz
Aufgrund der Anzahl der Schritte und Variablen ist es wichtig, dass Sie einen strukturierten Auswertungsprozess für Ihre RAG-Lösung befolgen. Bewerten Sie die Ergebnisse der einzelnen Schritte, und nehmen Sie Änderungen basierend auf Ihren Anforderungen vor. Sie sollten jeden Schritt unabhängig für die Optimierung auswerten, aber denken Sie daran, dass das Endergebnis das Ergebnis ist, das Ihre Kunden erleben. Stellen Sie sicher, dass Sie alle Schritte in diesem Prozess verstehen, bevor Sie Ihre eigenen Akzeptanzkriterien für jeden Schritt ermitteln.
Beitragende
Dieser Artikel wird von Microsoft verwaltet. Sie wurde ursprünglich von den folgenden Mitwirkenden verfasst.
Hauptautoren:
- Raouf Aliouat | Softwaretechniker II
- Rob Bagby | Principal Architecture Center Content Lead
- Prabal Deb | Principal Software Engineer
- Chad Kittel | Principal Software Engineer
- Ritesh Modi | Principal Engineer
- Ryan Pfalz | Senior Technical Program Manager
- Randy Thurman | Principal AI Cloud Solution Architect
Um nicht öffentliche LinkedIn-Profile anzuzeigen, melden Sie sich bei LinkedIn an.