Mit Vertex AI ein Suchsystem in Google-Qualität erstellen

1. Hinweis

Beachten Sie Folgendes, bevor Sie mit diesem Codelab fortfahren:

Voraussetzungen

  • Grundlegende Kenntnisse zu LLMs
  • Grundlegende Kenntnisse von RAG-Systemen

Aufgaben in diesem Lab

  • So erstellen Sie eine Suchmaschine von Google, die Ihre Fragen anhand der hochgeladenen Daten beantworten kann
  • Vertex AI Datastore erstellen
  • Vertex AI Agents erstellen
  • Cloud Run zum Bereitstellen der Anwendung verwenden

Voraussetzungen

  • Ein Google Cloud-Konto
  • Ein Google Cloud-Projekt
  • Eine IDE mit Terminal

Einführung

Die Google Suche ist ein leistungsstarkes Tool, das einen riesigen Index von Webseiten und anderen Inhalten verwendet, um Nutzern relevante Ergebnisse zu liefern. Dies wird durch eine Methode namens Retrieval Augmented Generation (RAG) ermöglicht, eine Schlüsseltechnik der modernen KI.

RAG ruft zuerst relevante Passagen aus einem Dokumentenkorpus ab. Dazu werden verschiedene Methoden wie Keyword-Abgleich, semantische Ähnlichkeit und maschinelles Lernen eingesetzt. Sobald die relevanten Abschnitte abgerufen wurden, werden sie verwendet, um eine Zusammenfassung oder Antwort auf die Anfrage des Nutzers zu erstellen.

Der Hauptvorteil von RAG besteht darin, dass Sprachmodelle KI-Halluzinationen vermeiden können. Mit „Halluzination“ wird die Generierung von Text beschrieben, der nicht durch die Belege im Dokumentkorpus gestützt wird. Das kann passieren, wenn Sprachmodelle nicht zwischen relevanten und irrelevanten Informationen unterscheiden können.

RAG hilft, Halluzinationen zu vermeiden, da der generierte Text immer auf Belegen aus dem Dokumentkorpus basiert. Das macht sie zu einer zuverlässigeren und vertrauenswürdigeren Informationsquelle.

RAG ist eine leistungsstarke Methode, die in einer Vielzahl von Anwendungen eingesetzt wird, darunter Suchmaschinen, Chatbots und Frage-Antwort-Systeme. In den kommenden Jahren wird KI eine immer wichtigere Rolle in der KI spielen.

Hier sind einige Beispiele für die Verwendung von RAG in der Praxis:

  • Viele Suchsysteme verwenden die RAG-Methode, um Suchergebnisse zu generieren, die für die Suchanfrage des Nutzers relevant sind.
  • Chatbots verwenden RAG, um informative und ansprechende Antworten auf Nutzerfragen zu generieren.
  • Frage-Antwort-Systeme verwenden RAG, um präzise und umfassende Antworten auf Nutzerfragen zu generieren.

RAG ist eine vielseitige Methode, mit der Text in einer Vielzahl von Domänen und Anwendungen generiert werden kann. Es ist ein leistungsstarkes Tool, mit dem KI intelligenter und informativer wird.

In diesem Codelab erstellen wir ein RAG-System, mit dem Sie Ihre Fragen mit dem von Ihnen hochgeladenen Korpus beantworten können. Mit der vorkonfigurierten RAG-Plattform namens Vertex AI Search/Agent Builder können Sie den Aufbau von RAG-Systemen beschleunigen. So müssen Sie nicht mehr manuell Dokumente erfassen, parsen, aufteilen, Einbettungen generieren, Suchanfragen erweitern, Bewerber abrufen und einstufen. Das vorkonfigurierte RAG-System hilft Ihnen, schnell loszulegen. Google Cloud bietet aber auch separate APIs für jeden Prozess, mit denen Sie Ihre eigenen RAG-Systeme erstellen können. So können Sie Ihre RAG-Systeme an Ihre Geschäftsanforderungen anpassen.

Inhalt

Am Ende dieses Codelabs haben Sie ein funktionierendes RAG-System implementiert, mit dem Sie Ihre Fragen mit sachlichen Informationen beantworten können, die auf den richtigen Quellen basieren und zitiert werden.

Außerdem erfahren Sie, wie Sie mit den Vertex AI Search APIs diese RAG-Architektur in Google Cloud erstellen. Außerdem erfahren Sie, wie Sie diese RAG-Architekturanwendung (mit Frontend und Backend) auf CloudRun bereitstellen. CloudRun ist eine serverlose Plattform zur Bereitstellung von Anwendungen als Container in Google Cloud.

2d055ded874603a6.png

Funktionsweise der Anwendung

  • Daten hochladen: Nutzer können ihren eigenen Datenbestand, z. B. eine PDF-Datei, als Eingabe hochladen.
  • Abfragen in der Suchleiste stellen: Nutzer können in der Suchleiste Fragen zu den hochgeladenen Daten stellen.
  • Antworten abrufen: Nutzer können die Suchergebnisse/Kandidaten abrufen und die Faktentreue/Begründetheit der Antwort prüfen, die anhand der Relevanz der Suchanfrage abgerufen wird.

2. Umgebung einrichten

  1. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
  2. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.
  3. Sie verwenden Cloud Shell, eine Befehlszeilenumgebung, die in Google Cloud ausgeführt wird. Klicken Sie dazu oben in der Google Cloud Console auf „Cloud Shell aktivieren“.

1829c3759227c19b.png

  1. Sobald Sie eine Verbindung zu Cloud Shell hergestellt haben, prüfen Sie mit dem folgenden Befehl, ob Sie bereits authentifiziert sind und ob das Projekt auf Ihre Projekt-ID eingestellt ist:
gcloud auth list
  1. Führen Sie in Cloud Shell den folgenden Befehl aus, um zu prüfen, ob der gcloud-Befehl Ihr Projekt kennt.
gcloud config list project
  1. Wenn Ihr Projekt nicht festgelegt ist, verwenden Sie den folgenden Befehl, um es festzulegen:
gcloud config set project <YOUR_PROJECT_ID>
  1. Die folgenden APIs müssen aktiviert sein:
  • Cloud Run
  • Vertex AI
  • Cloud Storage

Alternativ können Sie die Console über diesen Link aufrufen. Informationen zu gcloud-Befehlen und deren Verwendung finden Sie in der Dokumentation.

3. Schritt 1: GCP-Bucket erstellen

  • Rufen Sie die Console auf und geben Sie in die Suchleiste „Cloud Storage“ ein.
  • Wählen Sie Cloud Storage aus den vorgeschlagenen Ergebnissen aus. 21d2bc910e71f7ec.png
  • Klicken Sie auf „Bucket erstellen“.

adf5c0382f6c3540.png

  • Geben Sie einen global eindeutigen Namen für den Bucket an
  • Klicken Sie auf „Weiter“.
  • Wählen Sie unter „Standorttyp“ die Option „Mehrfachregion“ aus.
  • Wählen Sie im Drop-down-Menü die Option us (multiple regions in United States) aus.

731aead7d8497725.png

  • Klicken Sie auf „Bucket erstellen“.

f7ac409ed9c4af21.png

4. Schritt 2: Vertex AI-Datenspeicher erstellen

  • Geben Sie in der Suchleiste der Console-Seite „Vertex AI Agent Builder“ ein.
  • Wählen Sie das erste Produkt „Agent Builder“ aus.

c4a67b92bb7900e3.png

  • Klicken Sie auf der Agent Builder-Seite auf „Datenspeicher“, wie in der linken Navigationsleiste gezeigt.

f86f67d344d398fb.png

  • Klicken Sie auf „Datenspeicher erstellen“.

e64e771f33543f46.png

  • Cloud Storage als Datenspeicher auswählen
  • Klicken Sie unter dem Cloud Storage-Symbol auf „Auswählen“.

3a8d22888e7eedc2.png

  • Klicken Sie auf dem Tab unter der Option „Ordner“ auf die Schaltfläche „Durchsuchen“.
  • Wählen Sie den in Schritt 1 erstellten Bucket aus.
  • Wählen Sie für die folgenden Optionen die Option „Verknüpfte unstrukturierte Dokumente (JSONL mit Metadaten)“ aus.
  • Klicken Sie auf „Weiter“.

13876b5d12dbe1fb.png

  • Wählen Sie auf der Seite „Konfiguration“ als Speicherort für den Datenspeicher „global“ aus.
  • Geben Sie einen eindeutigen Namen für den Datenspeicher an.
  • Klicke auf „Erstellen“.

618b7a456fbffad4.png

Brownie:

  • Direkt über der Schaltfläche „Erstellen“ befindet sich die Option zur Dokumentverarbeitung.
  • Sie können verschiedene Parser ausprobieren, z. B. digitale, OCR- oder Layout-Parser.
  • Sie können auch erweitertes Chunking aktivieren und eigene benutzerdefinierte Limits für die Blockgröße festlegen.

38471c1d3411610d.png

5. Schritt 3: Kundenservicemitarbeiter erstellen

  • Klicken Sie nach dem Erstellen des Datenspeichers in der Navigationsleiste links auf die App und wählen Sie „Apps“ aus.
  • Klicken Sie auf die Schaltfläche „Create App“ (App erstellen).
  • Wählen Sie „Suche“ als App-Typ aus. Sie können auch Kundenservicemitarbeiter, Konversations-Bots, Empfehlungen usw. erstellen.

ae5294e33f63567c.png

  • Wählen Sie unter „Inhalt“ die Option „Generisch“ aus. Je nach Datenspeicher, Datentyp und System, das Sie erstellen möchten, können Sie auch „Medien“ oder „Empfehlungen“ auswählen.
  • Achten Sie darauf, sowohl die Enterprise-Version als auch die erweiterten LLM-Funktionen zu aktivieren.
  • Geben Sie den Namen Ihrer Anwendung an.
  • Name Ihres Unternehmens angeben

f8a41c9751f7a8d3.png

  • Wählen Sie die Region als „global“ aus
  • Klicken Sie auf „Weiter“.ed17b18e094ba59a.png
  • Wählen Sie auf dem nächsten Bildschirm den Datenspeicher aus, den Sie in Schritt 2 erstellt haben.
  • Klicken Sie auf „Erstellen“.

bc77006e0025ae9e.png

6. Schritt 4: Anwendung in Docker bereitstellen

  • Terminal in der Google Cloud Console öffnen
  • Klonen Sie das Repository <sample_repository_link> mit dem folgenden Befehl:

git clone https://github.com/kkrishnan90/vertex-ai-search-agent-builder-demo

  • Ändern Sie das Verzeichnis und rufen Sie das geklonte Repository mit dem folgenden Befehl auf

cd vertex-ai-search-agent-builder-demo

  • Ordnerstruktur
  • Backend: Hier wird eine Python-basierte API-Implementierung enthalten, mit der RESTful-Endpunkte für die Interaktion mit Ihrem Frontend erstellt werden können.
  • Frontend: Hier wird eine React-basierte Anwendung gehostet und die Benutzeroberfläche bereitgestellt. Außerdem enthält es die erforderlichen Aufrufe auf Anwendungsebene an das Backend über REST-Endpunkte.
  • Dockerfile: Diese Datei enthält alle relevanten Befehle zum Erstellen eines Docker-Containers.
  • Führen Sie im Stammverzeichnis des Repository-Ordners den folgenden Befehl aus, um ein Docker-Image zu erstellen. Hinweis: Verwenden Sie das Flag - - platform, wenn Sie Docker-Container auf Macbooks mit Apple Silicon-Chips wie M1 oder M2 erstellen. Dieses Flag ist nicht erforderlich, wenn Sie auf einem Windows-Computer oder auf einem Computer mit Intel-basierter CPU erstellen.

docker build --platform linux/amd64 -t your-image-name .

  • Führen Sie nach dem erfolgreichen Erstellen des Docker-Containers den folgenden Befehl aus, um den Container mit den richtigen Tags zu taggen, damit Sie eine Version Ihres Images angeben. Denken Sie daran, dass es mehrere Versionen der Anwendung und daher mehrere Versionen als Tags in Docker-Containern geben kann. Aus DevOps-Perspektive wird empfohlen, immer die neueste stabile Version zu verwenden.

docker tag your-image-name REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG

  • Nachdem das Tagging des Docker-Container-Images erfolgreich war, können wir das Image jetzt in die Google Artifact Registry (GAR) übertragen. GAR ist eine vollständig verwaltete Plattform von Google, mit der Sie Ihre Docker-Container verwalten und versionieren können. Führen Sie den folgenden Befehl aus, um den oben getaggten Container in die GAR zu übertragen. Weitere Informationen finden Sie unter folgendem Link: [https://cloud.google.com/artifact-registry/docs/docker/pushing-and-pulling]

docker push REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG

7. Schritt 5: Anwendung in Cloud Run bereitstellen

  • Minimieren Sie das Terminal. Suchen Sie in der Google Cloud Console in der Suchleiste nach „Cloud Run“.
  • Klicken Sie auf das vorgeschlagene Cloud Run-Produkt.

592103eb61c16738.png

  • Klicken Sie auf „Dienst erstellen“.
  • Achten Sie auf der nächsten Seite darauf, dass „Eine Überarbeitung aus dem vorhandenen Container-Image bereitstellen“ ausgewählt ist.
  • Klicken Sie unten auf „Auswählen“.
  • Nun wird auf der rechten Seite eine Navigationsleiste angezeigt.
  • Prüfen Sie, ob der Tab „Artifact Registry“ ausgewählt ist.
  • Prüfen Sie, ob das richtige Projekt ausgewählt ist.
  • Klicken Sie auf den Pfeil, um das Akkordeon für den Link zum bereitgestellten Container-Image zu maximieren.
  • Wählen Sie das Container-Tag aus und maximieren Sie es. Wählen Sie immer die zuletzt bereitgestellten mit den richtigen neuesten Tags aus, z. B. v1, v2 usw.
  • Klicken Sie auf das Container-Image unter dem Namen des Container-Tags.

aac35d55d7dd874e.png

  • Im Bereich „Konfigurieren“
  • Geben Sie einen Dienstnamen für Ihre Cloud Run-Anwendung an. Dieser ist Teil der URL, wenn Sie die Anwendung in Cloud Run bereitstellen.
  • Wählen Sie die gewünschte Region aus (in diesem Fall „us-central1“ oder eine andere Region).
  • Unter „Authentifizierung“
  • Achten Sie darauf, dass „Nicht authentifizierte Aufrufe zulassen“ ausgewählt ist.
  • Unter „CPU-Zuweisung und -Preise“
  • Wählen Sie „CPU wird nur während der Anfrageverarbeitung zugewiesen“ aus.
  • Ändern Sie die automatische Skalierung des Dienstes in „1“. Für Produktionszwecke wird empfohlen, mindestens Instanzen auszuführen, um den täglichen Traffic zu bewältigen. Sie können auch „0“ (null) beibehalten.
  • Legen Sie „Ingress Control“ auf „Alle“ fest, um Traffic aus dem Internet auf Ihre Anwendung zuzulassen.
  • Klicken Sie auf „Erstellen“.
  • Dadurch wird eine Cloud Run-Instanz bereitgestellt. Die Bereitstellung dauert einige Minuten.

b8b147265b8d457b.png

  • Nach der Bereitstellung sehen Sie die öffentlich verfügbare URL, über die Sie auf Ihre Webanwendung zugreifen können.

1dfdb007c52581a1.png

8. Wie funktioniert das alles?

  • Klicken Sie auf der Startseite der Anwendung auf die Schaltfläche „Dokument hochladen“.
  • PDF-Datei hochladen
  • Sobald der Upload abgeschlossen ist
  • Klicke oben auf der Webseite auf die Suchleiste.
  • Suche nach Suchanfragen, die sich auf Ihr hochgeladenes Dokument beziehen
  • Wenn Sie Ihre Suchanfrage eingeben und auf „Suchen“ klicken, sollten alle relevanten Antworten aus dem Dokument angezeigt werden, das Sie gerade hochgeladen haben.
  • Sie können ein wenig experimentieren, indem Sie sich den Back-End-Code ansehen und weitere Konfigurationen wie die folgenden hinzufügen
  • Snippets hinzufügen
  • Segmente für die Textextraktion hinzufügen
  • Antworten hinzufügen
  • Die Top-K-Ergebnisse optimieren, damit das LLM die Antwort zusammenfassen kann (ähnlich der KI-Übersicht in der Google Suche)
  • Als Add-on können Sie Metadaten-Tags auch beim Hochladen des Dokuments hinzufügen. Dadurch lassen sich Attribute und filterbare Kategorien generieren

9. Bereinigen

So vermeiden Sie, dass Ihrem Google Cloud-Konto die in diesem Codelab verwendeten Ressourcen in Rechnung gestellt werden:

  1. Rufen Sie in der Google Cloud Console die Seite Ressourcen verwalten auf.
  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Beenden, um das Projekt zu löschen.
  4. Alternativ können Sie in der Console Cloud Run aufrufen, den gerade bereitgestellten Dienst auswählen und löschen.

10. Glückwunsch

Glückwunsch! Sie haben ein sofort einsatzbereites RAG-System (Retrieval Augmented Generation) mit den neuesten Google-Modellen erstellt, um für Ihre Suchanfragen Ergebnisse in Google-Qualität zu liefern. Dieses Codelab dient nur zu Demonstrationszwecken. Für Produktionsanwendungen müssen mehr Sicherheitsmaßnahmen und Schutzmaßnahmen eingerichtet werden. Den Link zum vollständigen Repository finden Sie hier. Mit Google Cloud und nur fünf Schritten können wir ein End-to-End-RAG-System generieren, das Ihnen in wenigen Minuten Ergebnisse in Google-Qualität liefert. Mit der Weiterentwicklung von generativer KI und Large Language Models können wir mithilfe solcher RAG-Systeme auch die Fallstricke von Halluzinationen und nicht zitierten Informationen vermeiden.

Das ist nur ein Ausgangspunkt. Mit den vollständig anpassbaren DIY-RAG APIs können wir noch mehr erreichen. Sie bieten noch mehr Transparenz, Leistung und Effizienz, um jeden Teil des Pipeline-Prozesses effektiv zu bewältigen.