0 / 0
Zurück zur englischen Version der Dokumentation
Abruf-Augmented Generation (RAG)
Letzte Aktualisierung: 16. Jan. 2025
Abruf-Augmented Generation (RAG)

Sie können Basismodelle in IBM watsonx.ai verwenden, um durch Anwenden des abruferweiterten Generierungsmusters sachlich genaue Ausgaben zu generieren, die auf Informationen aus einer Wissensdatenbank basieren.

 

Dieses Video bietet eine visuelle Methode zum Erlernen der Konzepte und Tasks in dieser Dokumentation.

Video-Kapitel

[ 0:08 ] Szenariobeschreibung
[ 0:27 ] Überblick über das Muster
[ 1:03 ] Wissensdatenbank
[ 1:22 ] Suchkomponente
[ 1:41 ] Eingabeaufforderung mit Kontext
[ 2:13 ] Generierung der Ausgabe
[ 2:31 ] Vollständige Lösung
[ 2:55 ] Überlegungen zur Suche
[ 3:58 ] Überlegungen zum Aufforderungstext
[ 5:01 ] Überlegungen zur Erklärbarkeit

 

Bereitstellung von Kontext in Ihrer Eingabeaufforderung verbessert die Genauigkeit

Basismodelle können Ausgaben generieren, die aus verschiedenen Gründen faktisch ungenau sind. Eine Möglichkeit zur Verbesserung der Genauigkeit der generierten Ausgabe besteht darin, die erforderlichen Fakten als Kontext in Ihrem Eingabeaufforderungstext bereitzustellen.

Beispiel

Die folgende Eingabeaufforderung enthält Kontext zum Erstellen einiger Fakten:

Aisha recently painted the kitchen yellow, which is her favorite color.

Aisha's favorite color is 

Sofern es sich bei Aisha nicht um eine berühmte Person handelt, deren Lieblingsfarbe in vielen Online-Artikeln erwähnt wurde, die in den gängigen Pretraining-Datensätzen enthalten sind, kann kein foundation model ohne den Kontext am Anfang der Aufforderung zuverlässig die korrekte Vervollständigung des Satzes am Ende der Aufforderung generieren.

Wenn Sie ein Modell mit Text anfordern, der einen mit Fakten gefüllten Kontext enthält, ist die vom Modell generierte Ausgabe wahrscheinlich genauer. Weitere Informationen finden Sie unter Faktisch genaue Ausgabe generieren.

 

Muster für die abruferweiterte Generierung

Sie können das Verfahren zum Einbeziehen von Kontext in Ihre Eingabeaufforderungen mithilfe von Informationen in einer Wissensbasis skalieren.

Das folgende Diagramm veranschaulicht das Muster für die abruferweiterte Generierung. Obwohl das Diagramm ein Beispiel für die Beantwortung von Fragen zeigt, unterstützt derselbe Workflow andere Anwendungsfälle.

Diagramm, das das Hinzufügen von Suchergebnissen zur Eingabe für die abruferweiterte Generierung zeigt

Das Muster für die abruferweiterte Generierung umfasst die folgenden Schritte:

  1. Durchsuchen Sie Ihre Wissensbasis nach Inhalten, die sich auf die Frage eines Benutzers beziehen.
  2. Extrahieren Sie die relevantesten Suchergebnisse als Kontext in Ihre Eingabeaufforderung und fügen Sie eine Anweisung hinzu, z. B. "Beantworten Sie die folgende Frage, indem Sie nur Informationen aus den folgenden Passagen verwenden."
  3. Nur wenn das von Ihnen verwendete foundation model nicht auf Anweisungen abgestimmt ist: Fügen Sie ein paar Beispiele hinzu, die das erwartete Eingabe- und Ausgabeformat veranschaulichen.
  4. Senden Sie den kombinierten Aufforderungstext (Anweisung + Suchergebnisse + Frage) an das foundation model.
  5. Das foundation model verwendet kontextbezogene Informationen aus der Aufforderung, um eine sachliche Antwort zu generieren.

Der Ursprung der abruferweiterten Generierung.

Der Begriff Retrieval-augmented Generation (RAG) wurde in dieser Arbeit eingeführt: Retrieval-augmentierte Generierung für wissensintensive NLP-Aufgaben.

"Wir erstellen RAG-Modelle, bei denen der parametrische Speicher ein vortrainierter seq2seq -Transformator ist und der nicht parametrische Speicher ein dichter Vektorindex von Wikipedia ist, auf den mit einem vortrainierten neuronalen Retriever zugegriffen wird."

In diesem Dokument bezieht sich der Begriff RAG-Modelle auf eine bestimmte Implementierung einer Abruffunktion (ein bestimmter Abfrageencoder und vektorbasierter Dokumentsuchindex) und einen Generator (ein bestimmtes vortrainiertes generatives Sprachmodell). Der einfache Such-und Generierungsansatz kann jedoch generalisiert werden, um verschiedene Abruffunkomponenten und Basismodelle zu verwenden.

Wissensdatenbank

Die Wissensbasis kann eine beliebige Sammlung von Artefakten sein, die Informationen enthalten, wie z. B.:

  • Prozessinformationen auf Wiki-Seiten des internen Unternehmens
  • Dateien in GitHub (in beliebigem Format: Markdown, einfacher Text, JSON, Code)
  • Nachrichten in einem Tool für Onlinezusammenarbeit
  • Abschnitte in der Produktdokumentation, die lange Textblöcke enthalten können
  • Textpassagen in einer Datenbank, die SQL-Abfragen (Structured Query Language) unterstützt, wie z. B. Db2
  • Ein Dokumentspeicher mit einer Sammlung von Dateien, z. B. rechtsgültige Verträge, die als PDF-Dateien gespeichert werden
  • Kundensupport-Tickets in einem Content-Management-System

Abruffunktion

Die Abruffunktion kann eine beliebige Kombination aus Such-und Inhaltstools sein, die zuverlässig relevante Inhalte aus der Knowledge Base zurückgibt, einschließlich Suchtools wie IBM Watson Discovery oder Such-und Inhalts-APIs, wie sie von GitHubbereitgestellt werden.

Vektordatenbanken sind ebenfalls effektive Retrievalmethoden. Eine Vektordatenbank speichert nicht nur die Daten, sondern auch einen Vektor, der die Daten einbettet. Dies ist eine numerische Darstellung der Daten, die ihre semantische Bedeutung erfasst. Zur Abfragezeit wird ein Vektor-Einbetten des Abfragetexts verwendet, um relevante Übereinstimmungen zu finden.

IBM watsonx.ai enthält keine Vektordatenbank, aber Sie können die Basismodelle in watsonx.ai mit jeder Vektordatenbank auf dem Markt. Der Beispiel-Notebooks veranschaulichen die Schritte zum Verbinden mit gängigen Vektordatenbanken wie Chroma und Elasticsearch.

Um Ihnen bei der Implementierung eines RAG-Musters zu helfen, bei dem der Retriever vektorisierten Text verwendet, watsonx.ai bietet eine Einbettungs-API und Einbettungsmodelle, mit denen Sie Sätze und Passagen in Vektoren umwandeln können. Weitere Informationen zu diesem Typ von RAG-Implementierung finden Sie unter Vektorisierten Text mit Tasks zur erweiterten Generierung von Abrufe verwenden.

Generator

Die Generatorkomponente kann jedes Modell in watsonx.aiverwenden, je nachdem, welches Modell für Ihren Anwendungsfall, das Eingabeaufforderungsformat und Inhalte, die Sie für den Kontext extrahieren, geeignet ist.

Beispielprojekt

Importieren Sie ein Beispielprojekt mit Notebooks und anderen Assets, die eine Frage-und Antwortlösung implementieren, indem Sie die erweiterte Generierung für den Abruf verwenden. Das Projekt zeigt Ihnen, wie Sie die folgenden Dinge tun können:

  • Verwenden Sie HTML-, PDF-, DOC- oder PPT-Dateien als Wissensbasis und einen Elasticsearch Vektorindex als Retriever. (Sie müssen die Elasticsearch-Dienstinstanz separat erstellen)
  • Schreiben Sie eine Python, die den Vektorindex abfragt, um nach Informationen zu einer Frage zu suchen, und dann ein foundation model ableitet und die generierte Antwort auf halluzinierte Inhalte überprüft.
  • Verwenden Sie Vorlagen für Aufforderungen, die Ihnen dabei helfen, effektive Aufforderungen für Stiftungsmodelle zu formatieren.
  • Folgen Sie dem Muster effizient mit RAG-Dienstprogrammen aus der watsonx.ai Python-Bibliothek.
  • Implementieren Sie die nächste Phase einer RAG-Implementierung, indem Sie Funktionen zum Sammeln und Analysieren von Benutzerfeedback zu generierten Antworten einfügen.

Probieren Sie das Beispielprojekt Q&A mit RAG Accelerator aus.

Hinweis: Wenn Sie das Beispielprojekt nicht erstellen können, versuchen Sie, den Text im Beschreibungsfeld zu ersetzen.

Beispiele

In den folgenden Beispielen wird gezeigt, wie das Muster für die abruferweiterte Generierung angewendet wird.

Beispiele für die abruferweiterte Generierung
Beispiel Beschreibung Verknüpfung
Einfache Einführung Verwendet eine kleine Wissensbasis und eine einfache Suchkomponente, um das grundlegende Muster zu veranschaulichen Einführung in die abrufunterstützte Generierung
Einfache Einführung mit Discovery Dieses Beispielnotebook verwendet kurze Artikel in IBM Watson Discovery als Knowledge Base und die Discovery-API zum Ausführen von Suchabfragen. Einfache Einführung in die Retrieval-unterstützte Generierung mit watsonx.ai und Discovery
Beispiel aus der Praxis Die Dokumentation zu watsonx.ai verfügt über eine Such-und Antwortfunktion, die grundlegende Was-ist-Fragen beantworten kann, indem die Themen in der Dokumentation als Knowledge Base verwendet werden. Beantwortung von watsonx.ai mit Hilfe eines foundation model
Beispiel mit LangChain Enthält die Schritte und den Code zur Veranschaulichung der Unterstützung für die abruferweiterte Generierung mit LangChain in watsonx.ai. Es werden Befehle für den Datenabruf, die Erstellung und Abfrage von Wissensbasen und Modelltests eingeführt. Verwenden Sie watsonx und LangChain, um Fragen mit Hilfe von RAG zu beantworten
Beispiel mit LangChain und einer Elasticsearch -Vektordatenbank Veranschaulicht die Verwendung von LangChain zum Anwenden eines Einbettungsmodells auf Dokumente in einer Elasticsearch -Vektordatenbank. Anschließend indexiert und verwendet das Notebook den Datenspeicher zum Generieren von Antworten auf eingehende Fragen. Verwendung von watsonx, Elasticsearch und LangChain zur Beantwortung von Fragen (RAG)
Beispiel mit der Bibliothek Elasticsearch Python Veranschaulicht, wie die Python -Bibliothek von Elasticsearch verwendet wird, um ein einbettendes Modell auf Dokumente in einer Elasticsearch -Vektordatenbank anzuwenden. Anschließend indexiert und verwendet das Notebook den Datenspeicher zum Generieren von Antworten auf eingehende Fragen. Verwendung von watsonx und der Python Elasticsearch zur Beantwortung von Fragen (RAG)
Beispiel mit LangChain und einer SingleStoreDB Datenbank Zeigt Ihnen, wie Sie die abruferweiterte Generierung auf große Sprachmodelle in watsonx anwenden können, indem Sie die SingleStoreDB-Datenbank verwenden. RAG mit SingleStoreDB und watsonx

Weitere Informationen

Testen Sie diese Lernprogramme:

Übergeordnetes Thema: Abgenerative KI-Lösungen entwickeln

Generative KI-Suche und -Antwort
Diese Antworten werden von einem großen Sprachmodell in watsonx.ai basierend auf dem Inhalt der Produktdokumentation generiert. Weitere Informationen