Eines der besten Tools zur Verbesserung der Qualität von Antworten von Large Language Models (LLMs) ist Retrieval Augmented Generation (RAG). RAG ist das Muster, bei dem nicht öffentliche Daten abgerufen und dazu verwendet werden, den an das LLM gesendeten Prompt zu erweitern. Durch RAG kann das LLM auf der Grundlage der im Prompt enthaltenen Daten genauere Antworten generieren.
In diesem Lab verwenden Sie AlloyDB, die skalierbare, leistungsfähige, mit PostgreSQL kompatible Datenbank von Google Cloud, um eine spezielle Art von Vektordaten zu speichern und für die Suche zu nutzen. Diese Daten werden als Vektoreinbettungen bezeichnet. Vektoreinbettungen können mithilfe einer semantischen Suche abgerufen werden. Dadurch ist es möglich, die verfügbaren Daten abzurufen, die am besten zu einer Suchanfrage in natürlicher Sprache passen. Die abgerufenen Daten werden dann im Prompt an das LLM übergeben.
Außerdem verwenden Sie Vertex AI, die vollständig verwaltete, einheitliche KI-Entwicklungsplattform von Google Cloud zur Erstellung und Verwendung von generativer KI. Ihre Anwendung verwendet Gemini Pro, ein multimodales Foundation Model, das das Hinzufügen von Bild-, Audio-, Video- und PDF-Dateien in Text- oder Chat-Prompts unterstützt und das Verständnis von langen Kontexten ermöglicht.
Lerninhalte
In diesem Lab lernen Sie Folgendes:
Wie RAG die Fähigkeiten von LLMs verbessert, indem relevante Informationen aus einer Wissensdatenbank abgerufen werden
Wie Sie mit AlloyDB relevante Informationen mithilfe einer semantischen Suche finden
Wie Sie Vertex AI und die Foundation Models von Google verwenden können, um für Anwendungen leistungsstarke Funktionen bereitzustellen, die auf generativer KI basieren
Einrichtung und Anforderungen
Vor dem Klick auf „Lab starten“
Hinweis: Bitte lesen Sie sich diese Anleitung durch.
Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange die Ressourcen für das Lab verfügbar sind.
In diesem praxisorientierten Qwiklabs-Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung selbst durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.
Voraussetzungen
Für dieses Lab benötigen Sie Folgendes:
Einen Standardbrowser (empfohlen wird Chrome)
Genügend Zeit, um das Lab abzuschließen
Hinweis: Auch wenn Sie bereits ein eigenes Google Cloud-Konto oder ‑Projekt haben, sollten Sie es nicht für das Lab verwenden.Hinweis: Wenn Sie ein Pixelbook verwenden, führen Sie dieses Lab in einem Inkognitofenster aus.
Lab starten und bei der Console anmelden
Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Pop-up-Fenster geöffnet, in dem Sie Ihre Zahlungsmethode auswählen können.
Auf der linken Seite sehen Sie ein Feld, in dem Ihre temporären Anmeldedaten für dieses Lab angezeigt werden.
Kopieren Sie den Nutzernamen und klicken Sie dann auf Google Console öffnen.
Im Lab werden Ressourcen aktiviert und ein neuer Tab mit der Seite Konto auswählen wird geöffnet.
Tipp: Öffnen Sie die Tabs nebeneinander in separaten Fenstern.
Klicken Sie auf der Seite „Konto auswählen“ auf Anderes Konto verwenden. Die Anmeldeseite wird geöffnet.
Fügen Sie den Nutzernamen ein, den Sie aus dem Feld mit den Verbindungsinformationen kopiert haben. Kopieren Sie dann das Passwort und fügen Sie es ein.
Hinweis: Sie müssen die Anmeldedaten aus dem Feld mit den Verbindungsinformationen verwenden. Bitte geben Sie nicht Ihre Anmeldedaten für Google Cloud Skills Boost ein. Auch wenn Sie bereits ein eigenes Google Cloud-Konto haben, sollten Sie es nicht für dieses Lab verwenden, um Gebühren zu vermeiden.
Klicken Sie sich durch die nachfolgenden Seiten:
Akzeptieren Sie die Nutzungsbedingungen.
Fügen Sie keine Wiederherstellungsoptionen oder Zwei-Faktor-Authentifizierung hinzu (da dies nur ein temporäres Konto ist).
Melden Sie sich nicht für kostenlose Testversionen an.
Nach wenigen Augenblicken wird die Cloud Console in diesem Tab geöffnet.
Hinweis: Wenn Sie sich eine Liste der Google Cloud-Produkte und ‑Dienste ansehen möchten, klicken Sie oben links auf das Navigationsmenü.
Google Cloud Shell aktivieren
Google Cloud Shell ist eine virtuelle Maschine, auf der Entwicklertools installiert sind. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud.
Mit Google Cloud Shell erhalten Sie Befehlszeilenzugriff auf Ihre Google Cloud-Ressourcen.
Klicken Sie in der Cloud Console in der rechten oberen Symbolleiste auf „Cloud Shell öffnen“.
Klicken Sie auf Weiter.
Die Bereitstellung und Verbindung mit der Umgebung dauert einen kleinen Moment. Wenn Sie verbunden sind, sind Sie auch bereits authentifiziert und das Projekt ist auf Ihre PROJECT_ID eingestellt. Beispiel:
gcloud ist das Befehlszeilentool für Google Cloud. Das Tool ist in Cloud Shell vorinstalliert und unterstützt die Tab-Vervollständigung.
Sie können den aktiven Kontonamen mit diesem Befehl auflisten:
gcloud auth list
Ausgabe:
Konten mit Anmeldedaten:
- @.com (aktiv)
Beispielausgabe:
Konten mit Anmeldedaten:
- google1623327_student@qwiklabs.net
Sie können die Projekt-ID mit diesem Befehl auflisten:
gcloud config list project
Ausgabe:
[core]
Projekt =
Beispielausgabe:
[core]
Projekt = qwiklabs-gcp-44776a13dea667a6
Hinweis:
Die vollständige Dokumentation zu gcloud finden Sie in der Übersicht zur gcloud CLI.
Aufgabe 1: Datenbankumgebung initialisieren
In dieser Aufgabe installieren Sie einen PostgreSQL-Client und verbinden ihn mit der AlloyDB-Instanz.
PostgreSQL-Client installieren
Eine virtuelle Maschine (VM) wurde erstellt. Auf dieser VM wird die Anwendung gehostet. Außerdem erstellen Sie auf dieser VM den PostgreSQL-Client.
Führen Sie den folgenden Befehl aus, um eine Verbindung zur VM herzustellen:
gcloud compute ssh app-vm --zone={{{project_0.default_zone | ZONE }}}
Wenn Sie zur Autorisierung aufgefordert werden, klicken Sie auf Autorisieren.
Klicken Sie für jede Frage, die vom Befehl gcloud compute ssh gestellt wird, auf die Eingabetaste bzw. Return-Taste, um die Standardeingabe anzugeben.
Nach einer kurzen Wartezeit sind Sie in der VM angemeldet.
Führen Sie in der VM-Sitzung die folgenden Befehle aus, um den PostgreSQL-Client zu installieren:
sudo apt-get update
sudo apt-get install --yes postgresql-client
Hinweis: Der Client ist möglicherweise bereits installiert.
Verbindung zur AlloyDB-Instanz herstellen
Es wurde bereits eine AlloyDB-Instanz erstellt.
Führen Sie den folgenden Befehl aus, um die erforderlichen Shell-Variablen zu erstellen:
Nach der Installation befinden Sie sich in der virtuellen Python-Umgebung mit einem (.venv)-Prompt.
Wenn die SSH-Sitzung der VM einmal abläuft oder der Tab geschlossen wird, können Sie wieder eine SSH-Verbindung zur VM herstellen und die virtuelle Python-Umgebung mit dem Befehl source ~/.venv/bin/activate neu starten.
Führen Sie zum Bestätigen der Python-Version den folgenden Befehl aus:
Führen Sie den folgenden Befehl aus, um das Datenmodell aufzurufen:
cd ~/genai-databases-retrieval-app
cat retrieval_service/models/models.py
Hier werden die Python-Datenmodelle angezeigt. Das Modell umfasst Flughäfen, Flüge, Flughafeneinrichtungen, Richtlinien und Tickets.
Führen Sie die folgenden Befehle aus, um ein Beispiel für die Flughafendaten aufzurufen:
head -1 data/airport_dataset.csv; grep SFO data/airport_dataset.csv
Diese Befehle geben die CSV-Kopfzeile aus, die die Spaltennamen für das Flughafen-Dataset angibt, gefolgt von der Zeile für den San Francisco International Airport (SFO). Die Daten im Flughafenmodell können anhand des IATA-Codes (International Air Transport Association) oder nach Land, Stadt und Flughafenname abgerufen werden. Sie können anhand von Suchbegriffen nach Zeilen in dieser Tabelle suchen. Daher gibt es keine Vektoreinbettungen für diese Daten.
Führen Sie die folgenden Befehle aus, um ein Beispiel für Flugdaten aufzurufen:
head -1 data/flights_dataset.csv; grep -m10 "SFO" data/flights_dataset.csv
Diese Befehle geben die CSV-Kopfzeile aus, die die Spaltennamen für das Flug-Dataset angibt, gefolgt von den ersten 10 Zeilen der Flüge nach oder von SFO. Die Daten im Flugmodell können anhand der Fluggesellschaft und der Flugnummer oder anhand der Codes der Abflug- und Ankunftsflughafen abgerufen werden.
Führen Sie den folgenden Befehl aus, um ein Beispiel für die Daten zu Flughafeneinrichtungen aufzurufen:
head -2 data/amenity_dataset.csv
Dieser Befehl gibt die CSV-Kopfzeile aus, die die Spaltennamen für das Dataset mit Flughafeneinrichtungen angibt, gefolgt von der ersten Einrichtung.
Die erste Einrichtung hat mehrere einfache Werte, darunter Name, Beschreibung, Standort, Terminal, Kategorie und Öffnungszeiten. Der nächste Wert ist content, der den Namen, die Beschreibung und den Standort enthält. Der letzte Wert ist embedding, die Vektoreinbettung für die Zeile.
Die Einbettung ist ein Array aus 768 Zahlen, das bei der semantischen Suche verwendet wird. Diese Einbettungen werden mit einem KI-Modell von Vertex AI berechnet. Wenn ein Nutzer eine Abfrage stellt, kann aus dieser eine Vektoreinbettung erstellt werden und es können Daten mit Vektoreinbettungen abgerufen werden, die der Einbettung der Suche ähneln.
In den Richtliniendaten werden Vektoreinbettungen auf ähnliche Weise verwendet.
Hinweis: Da die Berechnung von Einbettungen eine Weile dauert, wurden diese bereits bereitgestellt. Im Script run_generate_embeddings.py ist zu sehen, wie Einbettungen generiert werden.
Führen Sie die folgenden Befehle aus, um eine Datenbankkonfigurationsdatei zu erstellen:
export PGUSER={{{project_0.startup_script.gcp_alloydb_user | PG_USER}}}
export PGPASSWORD={{{project_0.startup_script.gcp_alloydb_password | PG_PASSWORD}}}
export PROJECT_ID=$(gcloud config get-value project)
export REGION={{{project_0.default_region | REGION }}}
export ADBCLUSTER={{{project_0.startup_script.gcp_alloydb_cluster_name | CLUSTER}}}
export INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
cd ~/genai-databases-retrieval-app/retrieval_service
cp example-config.yml config.yml
sed -i s/127.0.0.1/$INSTANCE_IP/g config.yml
sed -i s/my-user/$PGUSER/g config.yml
sed -i s/my-password/$PGPASSWORD/g config.yml
sed -i s/my_database/assistantdemo/g config.yml
cat config.yml
Die Konfigurationsdatei config.yml wird mit aktualisierten Werten für die IP-Adresse der Instanz, den Nutzernamen, das Passwort und die Datenbank erstellt. Ihre Konfigurationsdatei sollte jetzt etwa so aussehen:
Durch den ersten Befehl werden alle erforderlichen Pakete der virtuellen Python-Umgebung hinzugefügt. Der zweite Befehl füllt die Datenbank mit den Daten.
Datenbank mit dem Beispiel-Dataset füllen
Aufgabe 5: Dienstkonto für den Abrufdienst erstellen
In dieser Aufgabe erstellen Sie ein Dienstkonto für den Abrufdienst.
Der Abrufdienst ist für das Extrahieren relevanter Informationen aus der Datenbank zuständig. Er extrahiert die erforderlichen Informationen aus der Datenbank, und zwar basierend auf der Anfrage einer KI-Anwendung. Dieses Dienstkonto wird als Identität dieses Cloud Run-Dienstes verwendet.
Dienstkonto erstellen
Der SSH-Nutzer hat nicht die erforderliche Berechtigung für die Projektinstanz, um dem Dienstkonto die richtige Rolle zuzuweisen. Sie erstellen das Dienstkonto über einen neuen Cloud Shell-Tab.
Klicken Sie in Cloud Shell auf Neuen Tab öffnen (+), um einen neuen Cloud Shell-Tab zu öffnen.
Führen Sie in einem neuen Tab die folgenden Befehle aus, um ein Dienstkonto zu erstellen und ihm die erforderlichen Berechtigungen zu erteilen:
In dieser Aufgabe registrieren Sie den OAuth-Zustimmungsbildschirm, den angemeldete Nutzer sehen.
Wenn Sie für die Autorisierung OAuth 2.0 verwenden, zeigt Google einen Zustimmungsbildschirm an, um die Zustimmung des Nutzers zur Weitergabe von Daten an die Anwendung einzuholen.
Wählen Sie in der Google Cloud Console das Navigationsmenü () und dann APIs und Dienste > OAuth-Zustimmungsbildschirm aus.
Klicken Sie auf Jetzt starten.
Geben Sie unter App-NameCymbal Air ein.
Klicken Sie auf E‑Mail-Adresse für Nutzersupport, dann auf die E‑Mail-Adresse des Teilnehmers und anschließend auf Weiter.
Wählen Sie für Zielgruppe die Option Intern aus und klicken Sie auf Weiter.
Nutzer mit Zugriff auf das Projekt sollten sich in der App anmelden können.
Kopieren Sie im linken Bereich der Lab-Anleitung den Nutzernamen.
Fügen Sie unter Kontaktdaten den kopierten Nutzernamen ein.
Klicken Sie auf Weiter.
Aktivieren Sie das Kästchen, um der Richtlinie zu Nutzerdaten zuzustimmen, und klicken Sie auf Weiter und dann auf Erstellen.
Der Zustimmungsbildschirm ist jetzt eingerichtet.
Aufgabe 8: Client-ID für die Anwendung erstellen
In dieser Aufgabe erstellen Sie eine Client-ID für die Anwendung.
Die Anwendung benötigt eine Client-ID, um den OAuth-Dienst von Google nutzen zu können. Sie konfigurieren die zulässigen Ursprünge, von denen diese Anfrage gestellt werden kann, und einen Weiterleitungs-URI, an den die Webanwendung weitergeleitet wird, nachdem der Nutzer der Anmeldung zugestimmt hat.
Wählen Sie in der Google Cloud Console das Navigationsmenü () und dann APIs und Dienste > Anmeldedaten aus.
Klicken Sie auf + Anmeldedaten erstellen und dann auf OAuth-Client-ID.
Eine Client-ID wird zur Identifizierung einer einzelnen Anwendung bei OAuth-Servern von Google verwendet.
Wählen Sie als Anwendungstyp die Option Webanwendung aus.
Geben Sie unter NameCymbal Air ein.
Sie können den JavaScript-Ursprung und die Weiterleitungs-URI mit Cloud Shell generieren.
Klicken Sie in Cloud Shell auf Neuen Tab öffnen (+), um einen neuen Cloud Shell-Tab zu öffnen.
Führen Sie auf dem neuen Tab die folgenden Befehle aus, um den Ursprungs- und den Weiterleitung-URI abzurufen:
In dieser Aufgabe führen Sie eine Beispiel-Chatanwendung aus, die den Abrufdienst verwendet.
Anwendung ausführen
Führen Sie auf dem VM-SSH-Tab in Cloud Shell die folgenden Befehle aus, um die Python-Anforderungen für die Chatanwendung zu erfüllen und die entsprechenden Installationen vorzunehmen:
cd ~/genai-databases-retrieval-app/llm_demo
pip install -r requirements.txt
Bevor Sie die Anwendung starten, müssen Sie einige Umgebungsvariablen festlegen. Für die grundlegende Funktionalität der Anwendung, einschließlich der Abfrage von Flügen und der Rückgabe von Flughafeneinrichtungen, ist eine Umgebungsvariable mit dem Namen BASE_URL erforderlich, die die Basis-URL des Abrufdiensts enthält.
Führen Sie die folgenden Befehle aus, um die Basis-URL des Abrufdiensts anzugeben:
export BASE_URL=$(gcloud run services list --filter="(retrieval-service)" --format="value(URL)")
echo $BASE_URL
Die Basis-URL wird von der lokalen Anwendung verwendet, um auf den Abrufdienst zuzugreifen.
Führen Sie zum Starten der Anwendung folgenden Befehl aus:
python run_app.py
Die Antwort sollte in etwa so aussehen:
(.venv) student-03-b2f40c6c89d6@app-vm:~/genai-databases-retrieval-app/llm_demo$ python run_app.py
INFO: Started server process [32894]
INFO: Waiting for application startup.
Loading application...
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8081 (Press CTRL+C to quit)
Die Anwendung wird jetzt ausgeführt.
Verbindung zur VM herstellen
Es gibt verschiedene Möglichkeiten, eine Verbindung zu der Anwendung herzustellen, die auf der VM ausgeführt wird. Sie können beispielsweise Port 8081 auf der VM mithilfe von Firewallregeln in der VPC öffnen oder einen Load Balancer mit einer öffentlichen IP-Adresse erstellen. Hier wird ein SSH-Tunnel zur VM verwendet, der den Cloud Shell-Port 8080 in den VM-Port 8081 übersetzt.
Klicken Sie in Cloud Shell auf Neuen Tab öffnen (+), um einen neuen Cloud Shell-Tab zu öffnen.
Führen Sie auf einem neuen Tab den folgenden Befehl aus, um einen SSH-Tunnel zum VM-Port zu erstellen:
Der gcloud-Befehl verbindet Port 8080 in Cloud Shell mit Port 8081 auf der VM. Die Fehlermeldung „Cannot assign requested address“ (Angeforderte Adresse kann nicht zugewiesen werden) können Sie ignorieren.
Wenn Sie die Anwendung im Webbrowser ausführen möchten, klicken Sie auf Webvorschau und wählen Sie dann Vorschau auf Port 8080 aus.
Im Browser wird ein neuer Tab geöffnet und die Anwendung wird ausgeführt. Die Cymbal Air-Anwendung zeigt die Meldung „Welcome to Cymbal Air! How may I assist you?“ an.
Geben Sie die folgende Abfrage ein:
When is the next flight to Dallas?
Die Anwendung antwortet mit dem nächsten Flug von SFO nach Dallas/Fort Worth.
Geben Sie die folgende Abfrage ein:
Which restaurants are near the departure gate?
Die Anwendung versteht den Kontext und antwortet mit Restaurants in der Nähe des Abfluggates in SFO.
Aufgabe 10: In der Anwendung anmelden (optional)
In dieser Aufgabe melden Sie sich in der Anwendung an, um den Flug zu buchen.
Klicken Sie auf Sign in (Anmelden).
Ein Pop‑up-Fenster wird geöffnet.
Wählen Sie im Pop‑up-Fenster den Teilnehmer aus.
Das Teilnehmerkonto ist angemeldet.
Wenn Sie zur Bestätigung aufgefordert werden, dass Sie sich als Teilnehmer anmelden möchten, klicken Sie auf Confirm (Bestätigen).
Geben Sie die folgende Abfrage ein:
Please book that flight.
Die App zeigt den Flug an, über den gesprochen wurde.
Klicken Sie auf Looks good to me. Book it (Sieht gut aus. Bitte buchen).
Der Flug wird gebucht.
Geben Sie die folgende Abfrage ein:
Which flights have I booked?
Es wird der Flug angezeigt, den Sie gerade gebucht haben.
Die Chatanwendung kann dabei helfen, Fragen von Nutzern zu beantworten, wie etwa die folgenden:
Wann ist der nächste Flug nach Miami?
Gibt es in der Nähe von Gate D50 Luxusgeschäfte?
Wo kann ich in der Nähe von Gate A6 einen Kaffee bekommen?
Die Anwendung nutzt die neuesten Foundation Models von Google, um Antworten zu generieren und sie mit Informationen zu Flügen und Flughafeneinrichtungen aus der operativen AlloyDB-Datenbank zu ergänzen. Weitere Informationen zu dieser Demoanwendung finden Sie auf der GitHub-Seite des Projekts.
Das wars! Sie haben das Lab erfolgreich abgeschlossen.
Sie haben erfolgreich eine Chatanwendung erstellt, die Large Language Models (LLMs) und Retrieval Augmented Generation (RAG) nutzt, um ansprechende, informative Unterhaltungen zu führen.
Wenn Sie das Lab abgeschlossen haben, klicken Sie auf Lab beenden. Google Cloud Skills Boost entfernt daraufhin die von Ihnen genutzten Ressourcen und bereinigt das Konto.
Anschließend erhalten Sie die Möglichkeit, das Lab zu bewerten. Wählen Sie die entsprechende Anzahl von Sternen aus, schreiben Sie einen Kommentar und klicken Sie anschließend auf Senden.
Die Anzahl der Sterne hat folgende Bedeutung:
1 Stern = Sehr unzufrieden
2 Sterne = Unzufrieden
3 Sterne = Neutral
4 Sterne = Zufrieden
5 Sterne = Sehr zufrieden
Wenn Sie kein Feedback geben möchten, können Sie das Dialogfeld einfach schließen.
Verwenden Sie für Feedback, Vorschläge oder Korrekturen den Tab Support.
Labs erstellen ein Google Cloud-Projekt und Ressourcen für einen bestimmten Zeitraum
Labs haben ein Zeitlimit und keine Pausenfunktion. Wenn Sie das Lab beenden, müssen Sie von vorne beginnen.
Klicken Sie links oben auf dem Bildschirm auf Lab starten, um zu beginnen
Privates Surfen verwenden
Kopieren Sie den bereitgestellten Nutzernamen und das Passwort für das Lab
Klicken Sie im privaten Modus auf Konsole öffnen
In der Konsole anmelden
Melden Sie sich mit Ihren Lab-Anmeldedaten an. Wenn Sie andere Anmeldedaten verwenden, kann dies zu Fehlern führen oder es fallen Kosten an.
Akzeptieren Sie die Nutzungsbedingungen und überspringen Sie die Seite zur Wiederherstellung der Ressourcen
Klicken Sie erst auf Lab beenden, wenn Sie das Lab abgeschlossen haben oder es neu starten möchten. Andernfalls werden Ihre bisherige Arbeit und das Projekt gelöscht.
Diese Inhalte sind derzeit nicht verfügbar
Bei Verfügbarkeit des Labs benachrichtigen wir Sie per E-Mail
Sehr gut!
Bei Verfügbarkeit kontaktieren wir Sie per E-Mail
Es ist immer nur ein Lab möglich
Bestätigen Sie, dass Sie alle vorhandenen Labs beenden und dieses Lab starten möchten
Privates Surfen für das Lab verwenden
Nutzen Sie den privaten oder Inkognitomodus, um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.
In diesem Lab erstellen Sie eine Chatanwendung, die mithilfe von Retrieval Augmented Generation (RAG) Prompts mit Daten erweitert, die aus AlloyDB abgerufen werden.