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.
Das Muster für die abruferweiterte Generierung umfasst die folgenden Schritte:
- Durchsuchen Sie Ihre Wissensbasis nach Inhalten, die sich auf die Frage eines Benutzers beziehen.
- 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."
- 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.
- Senden Sie den kombinierten Aufforderungstext (Anweisung + Suchergebnisse + Frage) an das foundation model.
- 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.
Beispiele
In den folgenden Beispielen wird gezeigt, wie das Muster für die abruferweiterte Generierung angewendet wird.
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:
- Erstellen Sie foundation model mit Prompt Lab
- Aufforderung eines foundation model mit dem abruferweiterten Generierungsmuster
Übergeordnetes Thema: Abgenerative KI-Lösungen entwickeln