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

1. Hinweis

Hier sind einige Dinge, die Sie beachten sollten, bevor Sie mit diesem Codelab fortfahren.

Voraussetzungen

  • Grundlegendes Verständnis von LLMs
  • Grundlegendes Verständnis von RAG-Systemen

Lerninhalte

  • So erstellen Sie eine Suchmaschine von Google, die Ihre Fragen anhand der hochgeladenen Daten beantworten kann
  • Vertex AI Datastore erstellen
  • Vertex AI-Agents erstellen
  • Anwendung mit CloudRun bereitstellen

Voraussetzungen

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

Einleitung

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 Technik namens Retrieval Augmented Generation (RAG) ermöglicht, eine wichtige Technik der modernen KI.

RAG ruft zuerst relevante Abschnitte aus einem Dokumentenkorpus ab. Dazu werden verschiedene Methoden wie Keyword-Übereinstimmung, semantische Ähnlichkeit und maschinelles Lernen verwendet. 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. Der Begriff „Halluzination“ beschreibt die Generierung von Text, der durch die Beweise im Korpus nicht gestützt wird. Das kann passieren, wenn Language Models nicht zwischen relevanten und irrelevanten Informationen unterscheiden können.

RAG hilft dabei, KI-Halluzinationen zu vermeiden, indem sichergestellt wird, dass der generierte Text immer auf Beweisen aus dem Dokumentenkorpus basiert. Dies macht sie zu einer zuverlässigeren und vertrauenswürdigeren Informationsquelle.

RAG ist eine leistungsstarke Technik, die in einer Vielzahl von Anwendungen wie Suchmaschinen, Chatbots und Frage-Antwort-Systemen verwendet wird. 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 RAG, um Suchergebnisse zu generieren, die für die Suchanfrage des Nutzers relevant sind.
  • Chatbots verwenden RAG, um Antworten auf Nutzerfragen zu generieren, die informativ und ansprechend sind.
  • 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, das dazu beiträgt, KI intelligenter und informativer zu machen.

In diesem Codelab erstellen wir ein RAG-System, das Ihnen bei der Beantwortung Ihrer Fragen mit dem von Ihnen hochgeladenen Korpus helfen kann. 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, Kandidaten abrufen und einstufen. Das vorkonfigurierte RAG-System erleichtert Ihnen einen schnellen Einstieg. Google Cloud bietet aber auch separate APIs für jeden Prozess zum Erstellen eigener DIY-RAG-Systeme, mit denen Sie Ihre RAG-Systeme auf Ihre Geschäftsanforderungen abstimmen können.

Inhalt

Am Ende dieses Codelabs haben Sie ein funktionierendes RAG-System, das Ihnen helfen kann, Ihre Fragen mit sachlichen Informationen zu beantworten, die fundiert und mit richtigen Verweisen zitiert werden.

Außerdem wissen Sie besser, wie Sie mit 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 Datenkorpus hochladen, also eine PDF-Datei als Eingabe.
  • Anfragen in der Suchleiste stellen: Nutzer können in der Suchleiste Fragen stellen, die auf dem Korpus der hochgeladenen Daten basieren.
  • Antworten abrufen: Nutzer können die Suchergebnisse und Kandidaten abrufen und anhand der Relevanz der Anfrage die Richtigkeit und Begründung der abgerufenen Antwort prüfen.

2. Umgebung einrichten

  1. Wählen Sie in der Google Cloud Console auf der Seite für die Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
  2. Die Abrechnung für Ihr Google Cloud-Projekt muss aktiviert sein. Hier erfahren Sie, wie Sie prüfen, 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 noch nicht eingerichtet 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 zur Verwendung des gcloud-Befehls können Sie die Konsole über diesen Link verwenden. 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 der 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 auf der Konsolenseite in der Suchleiste „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 Optionen unten „Verknüpfte unstrukturierte Dokumente (JSONL mit Metadaten)“ aus.
  • Klicken Sie auf „Weiter“.

13876b5d12dbe1fb.png

  • Wählen Sie auf der Konfigurationsseite als Speicherort Ihres Datenspeichers „global“ aus.
  • Geben Sie einen identifizierbaren Namen für Ihren Datenspeicher an
  • Klicken Sie auf „Erstellen“.

618b7a456fbffad4.png

Brownie:

  • Direkt über der Schaltfläche „Erstellen“ befindet sich die Option zur Dokumentverarbeitung.
  • Sie können mit verschiedenen Parsern wie digital, mit OCR oder mit Layoutparsern experimentieren.
  • Sie können auch die erweiterte Aufteilung aktivieren und Ihre eigenen benutzerdefinierten Blockgrößenlimits festlegen

38471c1d3411610d.png

5. Schritt 3: Agent 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 als Anwendungstyp „Suche“ aus. Sie können auch Agents, Konversationsbots, Empfehlungen usw. erstellen.

ae5294e33f63567c.png

  • Wählen Sie unter „Inhalte“ die Option „Allgemein“ aus. Je nach Datenspeicher und Typ der Daten und Systeme, die Sie erstellen möchten, können Sie auch „Medien“ oder „Empfehlungen“ auswählen.
  • Sie sollten sowohl die Enterprise Edition- als auch die erweiterten LLM-Features aktivieren
  • Anwendungsnamen angeben
  • 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

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

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

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

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

  • Ordnerstruktur
  • Backend: Es enthält eine Python-basierte API-Implementierung, mit der erholsame Endpunkte erstellt werden, mit denen Ihr Frontend interagieren kann.
  • Frontend: Dieses enthält eine reaktionsbasierte Anwendung und stellt die UI bereit. Darin sind auch die erforderlichen Aufrufe des Back-Ends auf Anwendungsebene über die restlichen Endpunkte enthalten
  • Dockerfile: Diese Datei enthält alle relevanten Befehle zum Erstellen eines Docker-Containers.
  • Führen Sie im Stammverzeichnis des Repository-Verzeichnisses den folgenden Befehl aus, um ein Docker-Image zu erstellen. Hinweis: Verwenden Sie das Flag - - platform, wenn Sie Docker-Container in Macbooks mit Apple Silicon-Chips wie M1, M2 usw. erstellen. Dieses Flag ist nicht erforderlich, wenn Sie einen Windows-Computer verwenden oder Ihre CPU-Architektur Intel-basiert ist.

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

  • Wenn der Docker-Container-Build erfolgreich erstellt wurde, führen Sie den folgenden Befehl aus, um den Container mit den richtigen Tags zu kennzeichnen, damit Sie eine Version Ihres Images bereitstellen können. Denken Sie daran, dass es mehrere Versionen der Anwendung und damit mehrere Versionen als Tags in Docker-Containern geben kann. Aus DevOps-Perspektive empfiehlt es sich, dafür zu sorgen, dass immer die neueste stabile Version verwendet wird.

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

  • Sobald das Docker-Container-Image erfolgreich getaggt wurde, übertragen Sie das Image per Push in Google Artifact Registry (GAR). GAR ist eine vollständig verwaltete Plattform von Google, mit der Sie Ihre Docker-Container einfacher verwalten und versionieren können. Führen Sie den folgenden Befehl aus. Damit wird der oben getaggte Container per Push an GAR ü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 Ihr Terminal. Suchen Sie in der Suchleiste der Google Cloud Console nach „Cloud Run“.
  • Klicken Sie auf das vorgeschlagene Cloud Run-Produkt.

592103eb61c16738.png

  • Klicken Sie auf „Dienst erstellen“.
  • Achten Sie darauf, dass auf der nächsten Seite „Eine Version aus einem 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 Artifact Registry als Tab ausgewählt ist
  • Prüfen Sie, ob das Projekt richtig ausgewählt ist
  • Klicken Sie auf den Pfeil, um das Akkordeon unter dem bereitgestellten Container-Image-Link zu maximieren
  • Wählen Sie das Container-Tag aus und erweitern Sie es. Wählen Sie immer die zuletzt bereitgestellten Tags mit den richtigen neuesten Tags aus, z. B. v1, v2 usw.
  • Klicken Sie auf das Container-Image, das unter dem Namen des Container-Tags angezeigt wird.

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 entsprechende Region aus (in diesem Fall us-central1 oder eine beliebige 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 Dienstskalierung auf 1. Für Produktionszwecke wird empfohlen, eine Mindestanzahl von Instanzen zu haben, um Ihren täglichen Traffic zu verarbeiten. Sie können den Wert sogar auf 0 lassen, also auf null.
  • Setzen Sie „Ingress Control“ auf „All“, damit Traffic aus dem Internet auf Ihre Anwendung zugreifen kann.
  • Klicken Sie auf „Erstellen“.
  • Dadurch wird eine Cloud Run-Instanz bereitgestellt und die Bereitstellung derselben Marke dauert nur wenige 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 „Upload Document“ (Dokument hochladen).
  • PDF-Datei hochladen
  • Sobald der Upload abgeschlossen ist
  • Klicke oben auf der Webseite auf die Suchleiste.
  • Suchanfragen starten, die sich auf dein hochgeladenes Dokument beziehen
  • Nachdem Sie Ihre Anfrage eingegeben und auf „Suchen“ geklickt haben, sollten alle relevanten Antworten aus dem gerade hochgeladenen Dokument angezeigt werden.
  • 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
  • Extraktionssegmente hinzufügen
  • Antworten hinzufügen
  • Die Top-K-Ergebnisse abstimmen, damit das LLM die Antwort zusammenzufassen kann (so etwas wie „KI-Übersicht“ in der Google Suche)
  • Als Add-on können Sie auch beim Hochladen des Dokuments Metadaten-Tags 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 dann 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 Cloud Run in der Console aufrufen, den gerade bereitgestellten Dienst auswählen und löschen.

10. Glückwunsch

Das wars! Sie haben das Lab erfolgreich abgeschlossen. Sie haben mithilfe der hochmodernen Modelle von Google erfolgreich ein sofort einsatzfähiges RAG-System aufgebaut, um für Ihre Suchanfragen Ergebnisse in Google-Qualität bereitzustellen. Dieses Codelab dient nur zu Demonstrationszwecken. Für Anwendungsfälle in der Produktion müssen zusätzliche Sicherheitsmaßnahmen und Vorkehrungen eingerichtet werden. Den Link zum vollständigen Repository finden Sie hier. Durch den Einsatz von Google Cloud in nur fünf Schritten können wir ein End-to-End-RAG-System generieren, das Ihnen innerhalb weniger Minuten sofort Ergebnisse von Google-Qualität liefert. Generative KI und Large Language Models entwickeln sich ständig weiter. Der Aufbau solcher RAG-Systeme hilft uns außerdem dabei, die Fallstricke von KI-Halluzinationen und nicht zitierten Informationen zu vermeiden.

Dies ist zwar nur ein Ausgangspunkt, aber mit den vollständig anpassbaren DIY RAG APIs können wir Wunder bewirken. Diese bieten Ihnen noch mehr Transparenz, Leistung und Effizienz, um jeden Teil des Pipelineprozesses effektiv zu bewältigen.