Eines der nützlichsten Anwendungsmuster für generative KI-Workloads ist Retrieval Augmented Generation (RAG). Im RAG-Muster finden wir Referenzinhalte, die sich auf eine Eingabeaufforderung beziehen, indem wir Ähnlichkeitssuchen für Einbettungen durchführen. Einbettungen erfassen den Informationsgehalt in Textkörpern und ermöglichen es NLP-Modellen (Natural Language Processing), mit Sprache in numerischer Form zu arbeiten. Einbettungen sind lediglich Vektoren von Gleitkommazahlen, sodass wir sie analysieren können, um drei wichtige Fragen zu beantworten: Ändern sich unsere Referenzdaten im Laufe der Zeit? Ändern sich die Fragen, die Benutzer stellen, im Laufe der Zeit? Und schließlich: Wie gut decken unsere Referenzdaten die gestellten Fragen ab?
In diesem Beitrag erfahren Sie mehr über einige Überlegungen zur Einbettungsvektoranalyse und zum Erkennen von Signalen der Einbettungsdrift. Da Einbettungen eine wichtige Datenquelle für NLP-Modelle im Allgemeinen und generative KI-Lösungen im Besonderen sind, benötigen wir eine Möglichkeit zu messen, ob sich unsere Einbettungen im Laufe der Zeit ändern (driften). In diesem Beitrag sehen Sie ein Beispiel für die Durchführung einer Drifterkennung bei der Einbettung von Vektoren mithilfe einer Clustering-Technik mit großen Sprachmodellen (LLMS), die von bereitgestellt werden Amazon SageMaker-JumpStart. Sie können diese Konzepte auch anhand von zwei bereitgestellten Beispielen erkunden, einschließlich einer End-to-End-Beispielanwendung oder optional einer Teilmenge der Anwendung.
Übersicht über RAG
Das RAG-Muster ermöglicht es Ihnen, Wissen aus externen Quellen wie PDF-Dokumenten, Wiki-Artikeln oder Anrufprotokollen abzurufen und dieses Wissen dann zur Erweiterung der an das LLM gesendeten Anweisungen zu verwenden. Dies ermöglicht es dem LLM, beim Generieren einer Antwort auf relevantere Informationen zu verweisen. Wenn Sie beispielsweise einen LLM fragen, wie man Schokoladenkekse herstellt, kann dieser Informationen aus Ihrer eigenen Rezeptbibliothek enthalten. Bei diesem Muster wird der Rezepttext mithilfe eines Einbettungsmodells in Einbettungsvektoren umgewandelt und in einer Vektordatenbank gespeichert. Eingehende Fragen werden in Einbettungen umgewandelt und anschließend führt die Vektordatenbank eine Ähnlichkeitssuche durch, um verwandte Inhalte zu finden. Die Frage und die Referenzdaten gehen dann in die Eingabeaufforderung für das LLM ein.
Schauen wir uns die erstellten Einbettungsvektoren genauer an und wie man eine Driftanalyse für diese Vektoren durchführt.
Analyse zur Einbettung von Vektoren
Einbettungsvektoren sind numerische Darstellungen unserer Daten, sodass die Analyse dieser Vektoren Einblicke in unsere Referenzdaten liefern kann, die später zur Erkennung potenzieller Driftsignale verwendet werden können. Einbettungsvektoren stellen ein Element im n-dimensionalen Raum dar, wobei n oft groß ist. Das in diesem Beitrag verwendete GPT-J 6B-Modell erstellt beispielsweise Vektoren der Größe 4096. Um die Drift zu messen, gehen wir davon aus, dass unsere Anwendung Einbettungsvektoren sowohl für Referenzdaten als auch für eingehende Eingabeaufforderungen erfasst.
Wir beginnen mit der Dimensionsreduktion mithilfe der Hauptkomponentenanalyse (PCA). PCA versucht, die Anzahl der Dimensionen zu reduzieren und gleichzeitig den größten Teil der Varianz in den Daten beizubehalten. In diesem Fall versuchen wir, die Anzahl der Dimensionen zu finden, die 95 % der Varianz beibehält, die alles innerhalb von zwei Standardabweichungen erfassen sollte.
Dann verwenden wir K-Means, um eine Reihe von Clusterzentren zu identifizieren. K-Means versucht, Punkte so in Clustern zu gruppieren, dass jeder Cluster relativ kompakt ist und die Cluster so weit wie möglich voneinander entfernt sind.
Wir berechnen die folgenden Informationen basierend auf der in der folgenden Abbildung gezeigten Clustering-Ausgabe:
- Die Anzahl der Dimensionen in PCA, die 95 % der Varianz erklären
- Die Position jedes Clusterzentrums oder Schwerpunkts
Darüber hinaus betrachten wir den Anteil (höher oder niedriger) der Stichproben in jedem Cluster, wie in der folgenden Abbildung dargestellt.
Abschließend berechnen wir anhand dieser Analyse Folgendes:
- Trägheit – Trägheit ist die Summe der quadrierten Abstände zu Clusterschwerpunkten, die misst, wie gut die Daten mithilfe von K-Means geclustert wurden.
- Silhouette Punktzahl – Der Silhouette-Score ist ein Maß für die Validierung der Konsistenz innerhalb von Clustern und liegt zwischen -1 und 1. Ein Wert nahe 1 bedeutet, dass die Punkte in einem Cluster nahe an den anderen Punkten im selben Cluster und weit davon entfernt liegen Punkte der anderen Cluster. Eine visuelle Darstellung des Silhouetten-Scores ist in der folgenden Abbildung zu sehen.
Wir können diese Informationen regelmäßig für Schnappschüsse der Einbettungen sowohl der Quellreferenzdaten als auch der Eingabeaufforderungen erfassen. Durch die Erfassung dieser Daten können wir potenzielle Signale der Einbettungsdrift analysieren.
Einbettungsdrift erkennen
In regelmäßigen Abständen können wir die Clustering-Informationen anhand von Schnappschüssen der Daten vergleichen, einschließlich der Referenzdateneinbettungen und der Eingabeaufforderungseinbettungen. Zunächst können wir die Anzahl der Dimensionen vergleichen, die erforderlich sind, um 95 % der Variation in den Einbettungsdaten, der Trägheit und der Silhouettenbewertung aus dem Clustering-Job zu erklären. Wie Sie in der folgenden Tabelle sehen können, sind für die aktuelle Momentaufnahme der Einbettungen im Vergleich zu einer Basislinie 39 weitere Dimensionen erforderlich, um die Varianz zu erklären, was darauf hindeutet, dass unsere Daten stärker gestreut sind. Die Trägheit hat zugenommen, was darauf hindeutet, dass die Proben insgesamt weiter von ihren Clusterzentren entfernt sind. Darüber hinaus ist der Silhouettenwert gesunken, was darauf hindeutet, dass die Cluster nicht so gut definiert sind. Bei zeitnahen Daten könnte dies darauf hindeuten, dass die Arten von Fragen, die in das System eingehen, mehr Themen abdecken.
Als nächstes können wir in der folgenden Abbildung sehen, wie sich der Anteil der Stichproben in jedem Cluster im Laufe der Zeit verändert hat. Dies kann uns zeigen, ob unsere neueren Referenzdaten im Großen und Ganzen dem vorherigen Satz ähneln oder neue Bereiche abdecken.
Schließlich können wir sehen, ob sich die Clusterzentren bewegen, was auf eine Abweichung der Informationen in den Clustern schließen lässt, wie in der folgenden Tabelle dargestellt.
Referenzdatenabdeckung für eingehende Fragen
Wir können auch bewerten, wie gut unsere Referenzdaten mit den eingehenden Fragen übereinstimmen. Dazu ordnen wir jede Eingabeaufforderungseinbettung einem Referenzdatencluster zu. Wir berechnen den Abstand von jeder Eingabeaufforderung zum entsprechenden Mittelpunkt und betrachten den Mittelwert, den Median und die Standardabweichung dieser Abstände. Wir können diese Informationen speichern und sehen, wie sie sich im Laufe der Zeit ändern.
Die folgende Abbildung zeigt ein Beispiel für die Analyse der Entfernung zwischen dem Prompt-Einbettungs- und dem Referenz-Rechenzentrum im Zeitverlauf.
Wie Sie sehen können, nehmen die Durchschnitts-, Median- und Standardabweichungsdistanzstatistiken zwischen Prompt-Einbettungen und Referenzdatenzentren zwischen der ursprünglichen Basislinie und dem neuesten Snapshot ab. Obwohl der absolute Wert der Distanz schwer zu interpretieren ist, können wir anhand der Trends feststellen, ob die semantische Überlappung zwischen Referenzdaten und eingehenden Fragen mit der Zeit besser oder schlechter wird.
Beispielanwendung
Um die im vorherigen Abschnitt besprochenen experimentellen Ergebnisse zu sammeln, haben wir eine Beispielanwendung erstellt, die das RAG-Muster mithilfe von Einbettungs- und Generierungsmodellen implementiert, die über SageMaker JumpStart bereitgestellt und auf gehostet werden Amazon Sage Maker Echtzeit-Endpunkte.
Die Anwendung besteht aus drei Kernkomponenten:
- Wir verwenden einen interaktiven Ablauf, der eine Benutzeroberfläche zum Erfassen von Eingabeaufforderungen in Kombination mit einer RAG-Orchestrierungsebene unter Verwendung von LangChain umfasst.
- Der Datenverarbeitungsfluss extrahiert Daten aus PDF-Dokumenten und erstellt Einbettungen, die darin gespeichert werden Amazon OpenSearch-Dienst. Wir verwenden diese auch in der letzten Einbettungsdrift-Analysekomponente der Anwendung.
- Die Einbettungen werden in erfasst Amazon Simple Storage-Service (Amazon S3) über Amazon Kinesis Data Firehose, und wir führen eine Kombination aus AWS-Kleber Extrahieren, Transformieren und Laden (ETL)-Jobs und Jupyter-Notebooks zur Durchführung der Einbettungsanalyse.
Das folgende Diagramm veranschaulicht die End-to-End-Architektur.
Der vollständige Beispielcode ist verfügbar unter GitHub. Der bereitgestellte Code ist in zwei verschiedenen Mustern verfügbar:
- Beispiel einer Full-Stack-Anwendung mit einem Streamlit-Frontend – Dies stellt eine End-to-End-Anwendung bereit, einschließlich einer Benutzeroberfläche, die Streamlit zum Erfassen von Eingabeaufforderungen verwendet, kombiniert mit der RAG-Orchestrierungsebene, auf der LangChain läuft Amazon Elastic Container-Service (Amazon ECS) mit AWS Fargate
- Backend-Anwendung – Für diejenigen, die nicht den gesamten Anwendungsstapel bereitstellen möchten, können Sie optional nur das Backend bereitstellen AWS Cloud-Entwicklungskit (AWS CDK)-Stack und verwenden Sie dann das bereitgestellte Jupyter-Notebook, um die RAG-Orchestrierung mit LangChain durchzuführen
Um die bereitgestellten Muster zu erstellen, gibt es mehrere Voraussetzungen, die in den folgenden Abschnitten beschrieben werden, angefangen bei der Bereitstellung der generativen Modelle und Texteinbettungsmodelle bis hin zu den zusätzlichen Voraussetzungen.
Stellen Sie Modelle über SageMaker JumpStart bereit
Beide Muster setzen den Einsatz eines Einbettungsmodells und eines generativen Modells voraus. Dazu stellen Sie zwei Modelle von SageMaker JumpStart bereit. Das erste Modell, GPT-J 6B, wird als Einbettungsmodell und das zweite Modell, Falcon-40b, zur Textgenerierung verwendet.
Sie können jedes dieser Modelle über SageMaker JumpStart bereitstellen AWS-Managementkonsole, Amazon SageMaker-Studio, oder programmatisch. Weitere Informationen finden Sie unter So verwenden Sie JumpStart-Grundlagenmodelle. Um die Bereitstellung zu vereinfachen, können Sie die verwenden mitgeliefertes Notizbuch abgeleitet von Notizbüchern, die automatisch von SageMaker JumpStart erstellt wurden. Dieses Notebook ruft die Modelle vom SageMaker JumpStart ML-Hub ab und stellt sie auf zwei separaten SageMaker-Echtzeitendpunkten bereit.
Das Beispielnotizbuch verfügt außerdem über einen Aufräumabschnitt. Führen Sie diesen Abschnitt noch nicht aus, da dadurch die gerade bereitgestellten Endpunkte gelöscht werden. Sie werden die Bereinigung am Ende der exemplarischen Vorgehensweise abschließen.
Nachdem Sie die erfolgreiche Bereitstellung der Endpunkte bestätigt haben, können Sie die vollständige Beispielanwendung bereitstellen. Wenn Sie jedoch mehr daran interessiert sind, nur das Backend und die Analyse-Notebooks zu erkunden, können Sie optional auch nur diese bereitstellen, was im nächsten Abschnitt behandelt wird.
Option 1: Stellen Sie nur die Backend-Anwendung bereit
Mit diesem Muster können Sie nur die Backend-Lösung bereitstellen und über ein Jupyter-Notebook mit der Lösung interagieren. Verwenden Sie dieses Muster, wenn Sie nicht die vollständige Frontend-Schnittstelle erstellen möchten.
Voraussetzungen:
Folgende Voraussetzungen sollten Sie mitbringen:
- Ein bereitgestellter SageMaker JumpStart-Modellendpunkt – Stellen Sie die Modelle wie zuvor beschrieben mit SageMaker JumpStart auf SageMaker-Echtzeitendpunkten bereit
- Bereitstellungsparameter – Notieren Sie Folgendes:
- Endpunktname des Textmodells – Der Endpunktname des mit SageMaker JumpStart bereitgestellten Textgenerierungsmodells
- Endpunktname des Embeddings-Modells – Der Endpunktname des mit SageMaker JumpStart bereitgestellten Einbettungsmodells
Stellen Sie die Ressourcen mit dem AWS CDK bereit
Verwenden Sie die im vorherigen Abschnitt genannten Bereitstellungsparameter, um den AWS CDK-Stack bereitzustellen. Weitere Informationen zur AWS CDK-Installation finden Sie unter Erste Schritte mit dem AWS CDK.
Stellen Sie sicher, dass Docker auf der Workstation installiert ist und ausgeführt wird, die für die AWS CDK-Bereitstellung verwendet wird. Beziehen auf Holen Sie sich Docker für zusätzliche Anleitung.
Alternativ können Sie die Kontextwerte auch in eine Datei mit dem Namen eingeben cdk.context.json
der pattern1-rag/cdk
Verzeichnis und ausführen cdk deploy BackendStack --exclusively
.
Die Bereitstellung druckt Ausgaben aus, von denen einige zum Ausführen des Notebooks benötigt werden. Bevor Sie mit Fragen und Antworten beginnen können, betten Sie die Referenzdokumente ein, wie im nächsten Abschnitt gezeigt.
Referenzdokumente einbetten
Für diesen RAG-Ansatz werden Referenzdokumente zunächst mit einem Texteinbettungsmodell eingebettet und in einer Vektordatenbank gespeichert. In dieser Lösung wurde eine Aufnahmepipeline erstellt, die PDF-Dokumente aufnimmt.
An Amazon Elastic Compute-Cloud (Amazon EC2) Instanz wurde für die Erfassung von PDF-Dokumenten erstellt und eine Amazon Elastic File System Das Dateisystem (Amazon EFS) wird auf der EC2-Instanz gemountet, um die PDF-Dokumente zu speichern. Ein AWS DataSync Die Aufgabe wird stündlich ausgeführt, um im EFS-Dateisystempfad gefundene PDF-Dokumente abzurufen und sie in einen S3-Bucket hochzuladen, um den Texteinbettungsprozess zu starten. Bei diesem Vorgang werden die Referenzdokumente eingebettet und die Einbettungen im OpenSearch Service gespeichert. Außerdem wird ein Einbettungsarchiv über Kinesis Data Firehose zur späteren Analyse in einem S3-Bucket gespeichert.
Führen Sie die folgenden Schritte aus, um die Referenzdokumente aufzunehmen:
- Rufen Sie die erstellte Beispiel-EC2-Instanz-ID ab (siehe die AWS CDK-Ausgabe).
JumpHostId
) und verbinden Sie mit Session Manager, eine Fähigkeit von AWS-Systemmanager. Anweisungen finden Sie unter Stellen Sie mit AWS Systems Manager Session Manager eine Verbindung zu Ihrer Linux-Instanz her. - Gehe in das Verzeichnis
/mnt/efs/fs1
, in dem das EFS-Dateisystem gemountet ist, und erstellen Sie einen Ordner mit dem Nameningest
: - Fügen Sie Ihre Referenz-PDF-Dokumente zum hinzu
ingest
Verzeichnis.
Die DataSync-Aufgabe ist so konfiguriert, dass alle in diesem Verzeichnis gefundenen Dateien auf Amazon S3 hochgeladen werden, um den Einbettungsprozess zu starten.
Die DataSync-Aufgabe wird stündlich ausgeführt. Sie können die Aufgabe optional manuell starten, um den Einbettungsprozess für die von Ihnen hinzugefügten PDF-Dokumente sofort zu starten.
- Um die Aufgabe zu starten, suchen Sie die Aufgaben-ID in der AWS CDK-Ausgabe
DataSyncTaskID
und Starten Sie die Aufgabe mit Standardwerten.
Nachdem die Einbettungen erstellt wurden, können Sie die RAG-Frage und -Antwort über ein Jupyter-Notizbuch starten, wie im nächsten Abschnitt gezeigt.
Fragen und Antworten mit einem Jupyter-Notebook
Führen Sie die folgenden Schritte aus:
- Rufen Sie den Namen der SageMaker-Notebook-Instanz aus der AWS CDK-Ausgabe ab
NotebookInstanceName
und stellen Sie über die SageMaker-Konsole eine Verbindung zu JupyterLab her. - Gehe in das Verzeichnis
fmops/full-stack/pattern1-rag/notebooks/
. - Öffnen Sie das Notebook und führen Sie es aus
query-llm.ipynb
in der Notebook-Instanz, um Fragen und Antworten mithilfe von RAG durchzuführen.
Stellen Sie sicher, dass Sie die verwenden conda_python3
Kernel für das Notebook.
Dieses Muster ist nützlich, um die Backend-Lösung zu erkunden, ohne zusätzliche Voraussetzungen bereitstellen zu müssen, die für die Full-Stack-Anwendung erforderlich sind. Der nächste Abschnitt behandelt die Implementierung einer Full-Stack-Anwendung, einschließlich der Frontend- und Backend-Komponenten, um eine Benutzeroberfläche für die Interaktion mit Ihrer generativen KI-Anwendung bereitzustellen.
Option 2: Stellen Sie die Full-Stack-Beispielanwendung mit einem Streamlit-Frontend bereit
Mit diesem Muster können Sie die Lösung mit einer Benutzer-Frontend-Schnittstelle für Fragen und Antworten bereitstellen.
Voraussetzungen:
Um die Beispielanwendung bereitzustellen, müssen Sie die folgenden Voraussetzungen erfüllen:
- SageMaker JumpStart-Modellendpunkt bereitgestellt – Stellen Sie die Modelle mit SageMaker JumpStart auf Ihren SageMaker-Echtzeitendpunkten bereit, wie im vorherigen Abschnitt beschrieben, und nutzen Sie die bereitgestellten Notebooks.
- Amazon Route 53 gehostete Zone - Erstelle ein Amazon Route 53 öffentlich gehostete Zone für diese Lösung zu verwenden. Sie können auch eine vorhandene öffentlich gehostete Route 53-Zone verwenden, z
example.com
. - AWS Certificate Manager-Zertifikat – Bereitstellung an AWS-Zertifikatsmanager (ACM) TLS-Zertifikat für den Domänennamen der Route 53-gehosteten Zone und die entsprechenden Unterdomänen, z
example.com
und*.example.com
für alle Subdomains. Anweisungen finden Sie unter Anfordern eines öffentlichen Zertifikats. Dieses Zertifikat wird zur Konfiguration von HTTPS verwendet Amazon CloudFront und der Ursprungs-Load-Balancer. - Bereitstellungsparameter – Notieren Sie Folgendes:
- Benutzerdefinierter Domänenname der Frontend-Anwendung – Ein benutzerdefinierter Domänenname, der für den Zugriff auf die Frontend-Beispielanwendung verwendet wird. Der angegebene Domänenname wird zum Erstellen eines Route 53-DNS-Eintrags verwendet, der auf die Frontend-CloudFront-Verteilung verweist. Zum Beispiel,
app.example.com
. - Benutzerdefinierter Domänenname des Load-Balancer-Ursprungs – Ein benutzerdefinierter Domänenname, der für den CloudFront-Verteilungs-Load-Balancer-Ursprung verwendet wird. Der angegebene Domänenname wird zum Erstellen eines Route 53-DNS-Eintrags verwendet, der auf den Ursprungs-Load-Balancer verweist. Zum Beispiel,
app-lb.example.com
. - ID der gehosteten Route 53-Zone – Die von Route 53 gehostete Zonen-ID zum Hosten der bereitgestellten benutzerdefinierten Domänennamen; Zum Beispiel,
ZXXXXXXXXYYYYYYYYY
. - Name der gehosteten Route 53-Zone – Der Name der Route 53-gehosteten Zone zum Hosten der bereitgestellten benutzerdefinierten Domänennamen; Zum Beispiel,
example.com
. - ACM-Zertifikat ARN – Der ARN des ACM-Zertifikats, das mit der bereitgestellten benutzerdefinierten Domäne verwendet werden soll.
- Endpunktname des Textmodells – Der Endpunktname des mit SageMaker JumpStart bereitgestellten Textgenerierungsmodells.
- Endpunktname des Embeddings-Modells – Der Endpunktname des mit SageMaker JumpStart bereitgestellten Einbettungsmodells.
- Benutzerdefinierter Domänenname der Frontend-Anwendung – Ein benutzerdefinierter Domänenname, der für den Zugriff auf die Frontend-Beispielanwendung verwendet wird. Der angegebene Domänenname wird zum Erstellen eines Route 53-DNS-Eintrags verwendet, der auf die Frontend-CloudFront-Verteilung verweist. Zum Beispiel,
Stellen Sie die Ressourcen mit dem AWS CDK bereit
Verwenden Sie die Bereitstellungsparameter, die Sie in den Voraussetzungen notiert haben, um den AWS CDK-Stack bereitzustellen. Weitere Informationen finden Sie unter Erste Schritte mit dem AWS CDK.
Stellen Sie sicher, dass Docker auf der Workstation installiert ist und ausgeführt wird, die für die AWS CDK-Bereitstellung verwendet wird.
Im vorangehenden Code stellt -c einen Kontextwert in Form der erforderlichen Voraussetzungen dar, die bei der Eingabe bereitgestellt werden. Alternativ können Sie die Kontextwerte auch in eine Datei mit dem Namen eingeben cdk.context.json
der pattern1-rag/cdk
Verzeichnis und ausführen cdk deploy --all
.
Beachten Sie, dass wir die Region in der Datei angeben bin/cdk.ts
. Für die Konfiguration von ALB-Zugriffsprotokollen ist eine angegebene Region erforderlich. Sie können diese Region vor der Bereitstellung ändern.
Die Bereitstellung druckt die URL für den Zugriff auf die Streamlit-Anwendung aus. Bevor Sie mit Fragen und Antworten beginnen können, müssen Sie die Referenzdokumente einbetten, wie im nächsten Abschnitt gezeigt.
Betten Sie die Referenzdokumente ein
Bei einem RAG-Ansatz werden Referenzdokumente zunächst mit einem Texteinbettungsmodell eingebettet und in einer Vektordatenbank gespeichert. In dieser Lösung wurde eine Aufnahmepipeline erstellt, die PDF-Dokumente aufnimmt.
Wie wir in der ersten Bereitstellungsoption besprochen haben, wurde eine EC2-Beispielinstanz für die Aufnahme von PDF-Dokumenten erstellt und ein EFS-Dateisystem auf der EC2-Instanz gemountet, um die PDF-Dokumente zu speichern. Jede Stunde wird eine DataSync-Aufgabe ausgeführt, um im EFS-Dateisystempfad gefundene PDF-Dokumente abzurufen und sie in einen S3-Bucket hochzuladen, um den Texteinbettungsprozess zu starten. Bei diesem Vorgang werden die Referenzdokumente eingebettet und die Einbettungen im OpenSearch Service gespeichert. Außerdem wird ein Einbettungsarchiv über Kinesis Data Firehose zur späteren Analyse in einem S3-Bucket gespeichert.
Führen Sie die folgenden Schritte aus, um die Referenzdokumente aufzunehmen:
- Rufen Sie die erstellte Beispiel-EC2-Instanz-ID ab (siehe die AWS CDK-Ausgabe).
JumpHostId
) und stellen Sie eine Verbindung mit dem Sitzungsmanager her. - Gehe in das Verzeichnis
/mnt/efs/fs1
, in dem das EFS-Dateisystem gemountet ist, und erstellen Sie einen Ordner mit dem Nameningest
: - Fügen Sie Ihre Referenz-PDF-Dokumente zum hinzu
ingest
Verzeichnis.
Die DataSync-Aufgabe ist so konfiguriert, dass alle in diesem Verzeichnis gefundenen Dateien auf Amazon S3 hochgeladen werden, um den Einbettungsprozess zu starten.
Die DataSync-Aufgabe wird stündlich ausgeführt. Sie können die Aufgabe optional manuell starten, um den Einbettungsprozess für die von Ihnen hinzugefügten PDF-Dokumente sofort zu starten.
- Um die Aufgabe zu starten, suchen Sie die Aufgaben-ID in der AWS CDK-Ausgabe
DataSyncTaskID
und Starten Sie die Aufgabe mit Standardwerten.
Frage und Antwort
Nachdem die Referenzdokumente eingebettet wurden, können Sie die RAG-Frage und -Antwort starten, indem Sie die URL aufrufen, um auf die Streamlit-Anwendung zuzugreifen. Ein Amazon Cognito Da die Authentifizierungsschicht verwendet wird, muss für den erstmaligen Zugriff auf die Anwendung ein Benutzerkonto im Amazon Cognito-Benutzerpool erstellt werden, der über das AWS CDK bereitgestellt wird (siehe AWS CDK-Ausgabe für den Namen des Benutzerpools). Anweisungen zum Erstellen eines Amazon Cognito-Benutzers finden Sie unter Erstellen eines neuen Benutzers in der AWS Management Console.
Driftanalyse einbetten
In diesem Abschnitt zeigen wir Ihnen, wie Sie eine Driftanalyse durchführen, indem Sie zunächst eine Basislinie der Referenzdateneinbettungen und Eingabeaufforderungseinbettungen erstellen und dann eine Momentaufnahme der Einbettungen im Zeitverlauf erstellen. Dadurch können Sie die Baseline-Einbettungen mit den Snapshot-Einbettungen vergleichen.
Erstellen Sie eine Einbettungsbasislinie für die Referenzdaten und die Eingabeaufforderung
Um eine Einbettungsbasislinie der Referenzdaten zu erstellen, öffnen Sie die AWS Glue-Konsole und wählen Sie den ETL-Job aus embedding-drift-analysis
. Legen Sie die Parameter für den ETL-Job wie folgt fest und führen Sie den Job aus:
- Sept
--job_type
zuBASELINE
. - Sept
--out_table
zu den Amazon DynamoDB Tabelle für Referenzeinbettungsdaten. (Siehe die AWS CDK-AusgabeDriftTableReference
für den Tabellennamen.) - Sept
--centroid_table
zur DynamoDB-Tabelle für Referenzschwerpunktdaten. (Siehe die AWS CDK-AusgabeCentroidTableReference
für den Tabellennamen.) - Sept
--data_path
zum S3-Bucket mit dem Präfix; Zum Beispiel,s3://
/embeddingarchive/
. (Siehe die AWS CDK-AusgabeBucketName
für den Bucket-Namen.)
Ebenso die Verwendung des ETL-Jobs embedding-drift-analysis
Erstellen Sie eine Einbettungsbasislinie für die Eingabeaufforderungen. Legen Sie die Parameter für den ETL-Job wie folgt fest und führen Sie den Job aus:
- Sept
--job_type
zuBASELINE
- Sept
--out_table
in die DynamoDB-Tabelle zur sofortigen Einbettung von Daten. (Siehe die AWS CDK-AusgabeDriftTablePromptsName
für den Tabellennamen.) - Sept
--centroid_table
in die DynamoDB-Tabelle für sofortige Schwerpunktdaten. (Siehe die AWS CDK-AusgabeCentroidTablePrompts
für den Tabellennamen.) - Sept
--data_path
zum S3-Bucket mit dem Präfix; Zum Beispiel,s3://
/promptarchive/
. (Siehe die AWS CDK-AusgabeBucketName
für den Bucket-Namen.)
Erstellen Sie einen Einbettungs-Snapshot für die Referenzdaten und die Eingabeaufforderung
Nachdem Sie zusätzliche Informationen in OpenSearch Service aufgenommen haben, führen Sie den ETL-Job aus embedding-drift-analysis
erneut, um eine Momentaufnahme der Referenzdateneinbettungen zu erstellen. Die Parameter sind mit denen des ETL-Jobs identisch, den Sie ausgeführt haben, um die Einbettungsbasislinie der Referenzdaten zu erstellen, wie im vorherigen Abschnitt gezeigt, mit Ausnahme der Einstellung --job_type
Parameter SNAPSHOT
.
Führen Sie auf ähnliche Weise den ETL-Job aus, um einen Snapshot der Eingabeaufforderungseinbettungen zu erstellen embedding-drift-analysis
wieder. Die Parameter sind mit denen des ETL-Jobs identisch, den Sie ausgeführt haben, um die Einbettungsbasislinie für die Eingabeaufforderungen zu erstellen, wie im vorherigen Abschnitt gezeigt, mit Ausnahme der Einstellung --job_type
Parameter SNAPSHOT
.
Vergleichen Sie die Basislinie mit dem Snapshot
Um die Einbettungsbasislinie und den Snapshot für Referenzdaten und Eingabeaufforderungen zu vergleichen, verwenden Sie das bereitgestellte Notizbuch pattern1-rag/notebooks/drift-analysis.ipynb
.
Um den Einbettungsvergleich für Referenzdaten oder Eingabeaufforderungen anzuzeigen, ändern Sie die Namensvariablen der DynamoDB-Tabelle (tbl
und c_tbl
) im Notebook in die entsprechende DynamoDB-Tabelle für jede Ausführung des Notebooks.
Die Notebook-Variable tbl
sollte in den entsprechenden Drifttabellennamen geändert werden. Im Folgenden finden Sie ein Beispiel dafür, wo die Variable im Notebook konfiguriert werden soll.
Die Tabellennamen können wie folgt abgerufen werden:
- Rufen Sie für die Referenzeinbettungsdaten den Namen der Drifttabelle aus der AWS CDK-Ausgabe ab
DriftTableReference
- Rufen Sie für die Einbettungsdaten der Eingabeaufforderung den Namen der Drifttabelle aus der AWS CDK-Ausgabe ab
DriftTablePromptsName
Darüber hinaus die Notebook-Variable c_tbl
sollte in den entsprechenden Schwerpunkttabellennamen geändert werden. Im Folgenden finden Sie ein Beispiel dafür, wo die Variable im Notebook konfiguriert werden soll.
Die Tabellennamen können wie folgt abgerufen werden:
- Rufen Sie für die Referenzeinbettungsdaten den Namen der Schwerpunkttabelle aus der AWS CDK-Ausgabe ab
CentroidTableReference
- Rufen Sie für die Einbettungsdaten der Eingabeaufforderung den Namen der Schwerpunkttabelle aus der AWS CDK-Ausgabe ab
CentroidTablePrompts
Analysieren Sie den sofortigen Abstand zu den Referenzdaten
Führen Sie zunächst den AWS Glue-Job aus embedding-distance-analysis
. Dieser Job ermittelt anhand der K-Means-Auswertung der Referenzdateneinbettungen, zu welchem Cluster jede Eingabeaufforderung gehört. Anschließend werden der Mittelwert, der Median und die Standardabweichung der Entfernung von jeder Eingabeaufforderung zum Zentrum des entsprechenden Clusters berechnet.
Sie können das Notebook ausführen pattern1-rag/notebooks/distance-analysis.ipynb
um die Trends in den Distanzmetriken im Zeitverlauf zu sehen. Dadurch erhalten Sie einen Eindruck vom allgemeinen Trend in der Verteilung der Abstände zur sofortigen Einbettung.
Das Notebook pattern1-rag/notebooks/prompt-distance-outliers.ipynb
ist ein AWS Glue-Notizbuch, das nach Ausreißern sucht. So können Sie feststellen, ob Sie weitere Eingabeaufforderungen erhalten, die nicht mit den Referenzdaten in Zusammenhang stehen.
Überwachen Sie die Ähnlichkeitswerte
Alle Ähnlichkeitswerte vom OpenSearch Service werden protokolliert Amazon CloudWatch unter dem rag
Namensraum. Das Armaturenbrett RAG_Scores
Zeigt die durchschnittliche Punktzahl und die Gesamtzahl der aufgenommenen Punktzahlen an.
Aufräumen
Um künftige Kosten zu vermeiden, löschen Sie alle von Ihnen erstellten Ressourcen.
Löschen Sie die bereitgestellten SageMaker-Modelle
Verweisen Sie auf den Bereinigungsabschnitt des bereitgestelltes Beispielnotizbuch um die bereitgestellten SageMaker JumpStart-Modelle zu löschen, oder Sie können dies auch tun Löschen Sie die Modelle auf der SageMaker-Konsole.
Löschen Sie die AWS CDK-Ressourcen
Wenn Sie Ihre Parameter in a eingegeben haben cdk.context.json
Datei, bereinigen Sie wie folgt:
Wenn Sie Ihre Parameter in der Befehlszeile eingegeben und nur die Backend-Anwendung (den Backend-AWS-CDK-Stack) bereitgestellt haben, bereinigen Sie wie folgt:
Wenn Sie Ihre Parameter in der Befehlszeile eingegeben und die vollständige Lösung (die Front-End- und Back-End-AWS-CDK-Stacks) bereitgestellt haben, bereinigen Sie wie folgt:
Zusammenfassung
In diesem Beitrag haben wir ein funktionierendes Beispiel einer Anwendung bereitgestellt, die Einbettungsvektoren sowohl für Referenzdaten als auch für Eingabeaufforderungen im RAG-Muster für generative KI erfasst. Wir haben gezeigt, wie man eine Clusteranalyse durchführt, um festzustellen, ob Referenz- oder Eingabeaufforderungsdaten im Laufe der Zeit abweichen und wie gut die Referenzdaten die Arten von Fragen abdecken, die Benutzer stellen. Wenn Sie eine Drift feststellen, kann dies ein Signal dafür sein, dass sich die Umgebung geändert hat und Ihr Modell neue Eingaben erhält, für deren Verarbeitung es möglicherweise nicht optimiert ist. Dies ermöglicht eine proaktive Bewertung des aktuellen Modells anhand sich ändernder Eingaben.
Über die Autoren
Abdullahi Olaoye ist Senior Solutions Architect bei Amazon Web Services (AWS). Abdullahi hat einen MSC in Computer Networking von der Wichita State University und ist ein veröffentlichter Autor, der in verschiedenen Technologiebereichen wie DevOps, Infrastrukturmodernisierung und KI tätig war. Derzeit konzentriert er sich auf generative KI und spielt eine Schlüsselrolle bei der Unterstützung von Unternehmen bei der Entwicklung und dem Aufbau innovativer Lösungen auf Basis generativer KI. Über den Bereich der Technologie hinaus findet er Freude an der Kunst des Erkundens. Wenn er nicht gerade an KI-Lösungen bastelt, reist er gerne mit seiner Familie, um neue Orte zu erkunden.
Randy DeFauw ist Senior Principal Solutions Architect bei AWS. Er besitzt einen MSEE von der University of Michigan, wo er an Computer Vision für autonome Fahrzeuge arbeitete. Er verfügt außerdem über einen MBA der Colorado State University. Randy hatte verschiedene Positionen im Technologiebereich inne, von der Softwareentwicklung bis zum Produktmanagement. Im Jahr 2013 stieg ich in den Big-Data-Bereich ein und erforscht diesen Bereich weiterhin. Er arbeitet aktiv an Projekten im ML-Bereich und hat auf zahlreichen Konferenzen, darunter Strata und GlueCon, Vorträge gehalten.
Shelbee Eigenbrode ist Principal AI and Machine Learning Specialist Solutions Architect bei Amazon Web Services (AWS). Sie ist seit 24 Jahren in der Technologiebranche tätig und hat verschiedene Branchen, Technologien und Rollen abgedeckt. Sie konzentriert sich derzeit darauf, ihren DevOps- und ML-Hintergrund in die Domäne von MLOps zu integrieren, um Kunden bei der Bereitstellung und Verwaltung von ML-Workloads in großem Maßstab zu unterstützen. Mit über 35 erteilten Patenten in verschiedenen Technologiebereichen hat sie eine Leidenschaft für kontinuierliche Innovation und die Nutzung von Daten zur Steigerung der Geschäftsergebnisse. Shelbee ist Mitgestalter und Ausbilder der Spezialisierung „Practical Data Science“ auf Coursera. Sie ist außerdem Co-Direktorin von Women In Big Data (WiBD), Kapitel Denver. In ihrer Freizeit verbringt sie gerne Zeit mit ihrer Familie, Freunden und überaktiven Hunden.
- SEO-gestützte Content- und PR-Distribution. Holen Sie sich noch heute Verstärkung.
- PlatoData.Network Vertikale generative KI. Motiviere dich selbst. Hier zugreifen.
- PlatoAiStream. Web3-Intelligenz. Wissen verstärkt. Hier zugreifen.
- PlatoESG. Kohlenstoff, CleanTech, Energie, Umwelt, Solar, Abfallwirtschaft. Hier zugreifen.
- PlatoHealth. Informationen zu Biotechnologie und klinischen Studien. Hier zugreifen.
- Quelle: https://aws.amazon.com/blogs/machine-learning/monitor-embedding-drift-for-llms-deployed-from-amazon-sagemaker-jumpstart/
- :hast
- :Ist
- :nicht
- :Wo
- $UP
- 1
- 10
- 100
- 2013
- 24
- 35%
- 39
- 7
- 9
- 95%
- a
- Fähig
- Über Uns
- Absolute
- Zugang
- Konto
- ACM
- über
- aktiv
- hinzugefügt
- Zusatz
- Zusätzliche
- Zusätzliche Angaben
- zusätzlich
- aufs Neue
- gegen
- Aggregat
- AI
- Richtet sich aus
- Alle
- Zulassen
- erlaubt
- ebenfalls
- Obwohl
- Amazon
- Amazon Cognito
- Amazon EC2
- Amazon Sage Maker
- Amazon SageMaker-JumpStart
- Amazon Web Services
- Amazon Web Services (AWS)
- an
- Analyse
- analysieren
- Analyse
- und
- beantworten
- Beantwortung
- etwas
- anwendbar
- Anwendung
- Ansatz
- angemessen
- Architektur
- Archiv
- SIND
- Bereich
- Bereiche
- Kunst
- Artikel
- AS
- fragen
- fragen
- Unterstützung
- annehmen
- At
- vermehren
- Augmented
- Authentifizierung
- Autor
- Im Prinzip so, wie Sie es von Google Maps kennen.
- Autonom
- autonome Fahrzeuge
- verfügbar
- durchschnittlich
- vermeiden
- ein Weg
- AWS
- AWS-Kleber
- Backend
- Hintergrund
- Balancer
- basierend
- Baseline
- BE
- weil
- war
- Bevor
- Sein
- gehört
- Besser
- zwischen
- Beyond
- Big
- Big Data
- Körper
- beide
- allgemein
- bauen
- erbaut
- Geschäft
- by
- Berechnen
- berechnet
- rufen Sie uns an!
- namens
- CAN
- capability
- Erfassung
- gefangen
- Captures
- Capturing
- Häuser
- CD
- Center
- Centers
- Bescheinigung
- Übernehmen
- geändert
- Änderungen
- Ändern
- Kapitel
- Gebühren
- Chip
- Schokolade
- Auswählen
- reinigen
- Menu
- näher
- Cloud
- Cluster
- Clustering
- Code
- Colorados
- Kombination
- kombiniert
- Vereinigung
- Kommen
- kompakt
- vergleichen
- verglichen
- Vergleich
- abschließen
- Komponente
- Komponenten
- Berechnen
- Computer
- Computer Vision
- Konzepte
- Kongressbegleitung
- konfiguriert
- konfigurieren
- Vernetz Dich
- Überlegungen
- Konsul (Console)
- Container
- Inhalt
- Kontext
- weiter
- kontinuierlich
- umgewandelt
- Cookies
- Kernbereich
- Dazugehörigen
- Berichterstattung
- bedeckt
- Abdeckung
- Covers
- erstellen
- erstellt
- schafft
- Erstellen
- Strom
- Zur Zeit
- Original
- Kunden
- innovativ, auf dem neuesten Stand
- Armaturenbrett
- technische Daten
- Rechenzentren
- Datenverarbeitung
- Datenwissenschaft
- Datenbase
- defaults
- definiert
- Übergeben
- Denver
- einsetzen
- Einsatz
- Bereitstellen
- Einsatz
- setzt ein
- Abgeleitet
- zerstören
- detailliert
- entdecken
- Entdeckung
- Bestimmen
- Entwicklung
- Abweichung
- Diagramm
- anders
- schwer
- Abmessungen
- Größe
- diskutiert
- verteilt
- Abstand
- entfernt
- Verteilung
- dns
- do
- Docker
- Dokument
- Unterlagen
- Domain
- Domain Name
- DOMAIN NAMEN
- Domains
- Nicht
- nach unten
- Antrieb
- jeder
- einbetten
- eingebettet
- Einbettung
- Ende
- End-to-End
- Endpunkt
- Entwicklung
- Enter
- eingegeben
- Unternehmen
- Arbeitsumfeld
- bewerten
- Auswertung
- Jedes
- Beispiel
- Beispiele
- Ausnahme
- vorhandenen
- experimentell
- Erklären
- Exploration
- ERKUNDEN
- Möglichkeiten sondieren
- extern
- Extrakt
- KONZENTRAT
- Familie
- weit
- Abbildung
- Reichen Sie das
- Mappen
- Finale
- Endlich
- Finden Sie
- findet
- Vorname
- schweben
- Fluss
- konzentriert
- Fokussierung
- Folgende
- folgt
- Aussichten für
- unten stehende Formular
- gefunden
- Foundation
- Freunde
- für
- Frontend
- voller
- Zukunft
- sammeln
- Allgemeines
- Erzeugung
- Generation
- generativ
- Generative KI
- bekommen
- bekommen
- ABSICHT
- Go
- weg
- erteilt
- Gruppe an
- die Vermittlung von Kompetenzen,
- Griff
- Haben
- he
- Statt
- Hilfe
- hier (auf dänisch)
- höher
- seine
- hält
- Gastgeber
- gehostet
- Stunde
- Ultraschall
- Hilfe
- aber
- HTML
- http
- HTTPS
- Nabe
- ID
- identifizieren
- if
- zeigt
- sofort
- Implementierung
- implementiert
- wichtig
- in
- das
- Dazu gehören
- Einschließlich
- Eingehende
- zeigen
- Branchen
- Trägheit
- Information
- Infrastruktur
- Anfangs-
- Innovation
- Varianten des Eingangssignals:
- Eingänge
- Einblick
- Installation
- installiert
- Instanz
- Anleitung
- interagieren
- Interaktion
- interaktive
- interessiert
- Schnittstelle
- in
- IT
- SEINE
- Job
- Jobs
- Freude
- jpg
- nur
- Wesentliche
- Kinesis Data Firehose
- Wissen
- Sprache
- grosse
- später
- neueste
- Schicht
- LERNEN
- lernen
- Lasst uns
- Bibliothek
- Gleichen
- Line
- linux
- LLM
- Belastung
- Standorte
- protokolliert
- aussehen
- SIEHT AUS
- senken
- Maschine
- Maschinelles Lernen
- um
- verwalten
- Management
- Manager
- manuell
- Kann..
- bedeuten
- Mittel
- messen
- Maßnahmen
- Metrik
- Michigan
- könnte
- ML
- MLOps
- Modell
- für
- Überwachen
- mehr
- vor allem warme
- ziehen um
- mehrere
- sollen
- Name
- Namen
- Natürliche
- Verarbeitung natürlicher Sprache
- Need
- erforderlich
- benötigen
- Vernetzung
- Neu
- neuer
- weiter
- Nlp
- Notizbuch
- bekannt
- Anzahl
- Zahlen
- und viele
- of
- vorgenommen,
- on
- einzige
- XNUMXh geöffnet
- optimiert
- Option
- or
- Orchesterbearbeitung
- Auftrag
- Herkunft
- Andere
- UNSERE
- Ergebnisse
- skizzierte
- Möglichkeiten für das Ausgangssignal:
- Ausgänge
- übrig
- Gesamt-
- überlappen
- besitzen
- Parameter
- Parameter
- besondere
- Leidenschaft & KREATIVITÄT
- Patente
- Weg
- Schnittmuster
- Muster
- Ausführen
- Durchführung
- Stücke
- Pipeline
- Länder/Regionen
- Plato
- Datenintelligenz von Plato
- PlatoData
- spielt
- Points
- Punkte
- Pool
- für einige Positionen
- möglich
- Post
- Potenzial
- angetriebene
- Praktisch
- vor
- Voraussetzungen
- vorgeführt
- Erhaltung
- früher
- vorher
- Principal
- Proaktives Handeln
- Prozessdefinierung
- Verarbeitung
- Produkt
- Produktmanagement
- Projekte
- Eingabeaufforderungen
- Anteil
- die
- vorausgesetzt
- bietet
- Bereitstellung
- Öffentlichkeit
- veröffentlicht
- Pullover
- Frage
- Fragen
- Lappen
- Bereiche
- Bereich
- bereit
- Echtzeit
- Reich
- Rezept
- Rekord
- Veteran
- Reduktion
- siehe
- Referenz
- Region
- bezogene
- verhältnismäßig
- relevant
- vertreten
- Darstellung
- representiert
- falls angefordert
- erfordert
- Downloads
- Antwort
- Die Ergebnisse
- Abruf
- Rollen
- Rollen
- Straße
- Führen Sie
- Laufen
- läuft
- sagemaker
- gleich
- Speichern
- Skalieren
- Zeitplan
- Wissenschaft
- Ergebnis
- Suche
- Suchbegriffe
- Zweite
- Abschnitt
- Abschnitte
- sehen
- gesehen
- wählen
- semantisch
- Senior
- Sinn
- geschickt
- getrennte
- Lösungen
- Sitzung
- kompensieren
- Einstellung
- mehrere
- sie
- sollte
- erklären
- zeigte
- gezeigt
- Konzerte
- Signal
- Signale
- ähnlich
- Einfacher
- vereinfachen
- Größe
- Schnappschuss
- So
- Software
- Softwareentwicklung
- Lösung
- Lösungen
- einige
- Quelle
- Quellen
- Raumfahrt
- überspannend
- Spezialist
- angegeben
- verbringen
- Kariert
- Stapel
- Stacks
- Standard
- Anfang
- begonnen
- Beginnen Sie
- Bundesstaat
- Statistiken
- Shritte
- Lagerung
- speichern
- gelagert
- erfolgreich
- so
- sicher
- System
- Systeme und Techniken
- Tabelle
- Nehmen
- Aufgabe
- Technik
- Technologies
- Technologie
- Text
- zur Verbesserung der Gesundheitsgerechtigkeit
- Das
- die Informationen
- Die Quelle
- ihr
- Sie
- dann
- Dort.
- Diese
- fehlen uns die Worte.
- diejenigen
- nach drei
- Durch
- Zeit
- zu
- gemeinsam
- Themen
- Gesamt
- Transformieren
- Reise
- Trend
- Trends
- versuchen
- XNUMX
- Typen
- für
- Universität
- URL
- us
- -
- benutzt
- nützlich
- Mitglied
- Benutzerschnittstelle
- Nutzer
- Verwendung von
- Bestätigung
- Wert
- Werte
- Variable
- Vielfalt
- verschiedene
- Fahrzeuge
- Seh-
- visuell
- Walkthrough
- wollen
- wurde
- Weg..
- we
- Netz
- Web-Services
- GUT
- wann
- ob
- welche
- während
- werden wir
- mit
- .
- ohne
- Damen
- Arbeiten
- gearbeitet
- arbeiten,
- Arbeitsplatz
- schlimmer
- würde
- Jahr
- noch
- Du
- Ihr
- Zephyrnet
- Zone