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

1. Hinweis

Bevor Sie mit diesem Codelab fortfahren, sollten Sie Folgendes beachten.

Voraussetzungen

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

Lerninhalte

  • Suchmaschine in Google-Qualität erstellen, die Ihre Fragen anhand der von Ihnen hochgeladenen Daten beantworten kann
  • Vertex AI-Datenspeicher erstellen
  • Vertex AI Agents erstellen
  • Cloud Run zum Bereitstellen der Anwendung nutzen

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 relevante Ergebnisse für Nutzeranfragen zu liefern. Dies wird durch eine Technik namens Retrieval-Augmented Generation (RAG) ermöglicht, die eine Schlüsseltechnik in der modernen KI ist.

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

Der Hauptvorteil von RAG besteht darin, dass Sprachmodelle dadurch Halluzinationen vermeiden können. Der Begriff „Halluzination“ wird verwendet, um die Generierung von Text zu beschreiben, der nicht durch die Beweise im Dokumentkorpus gestützt wird. Das kann passieren, wenn Sprachmodelle nicht zwischen relevanten und irrelevanten Informationen unterscheiden können.

RAG trägt dazu bei, Halluzinationen zu vermeiden, da der generierte Text immer auf Beweisen aus dem Dokumentkorpus basiert. Dadurch wird sie zu einer zuverlässigeren und vertrauenswürdigeren Informationsquelle.

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

Hier sind einige Beispiele für die praktische Anwendung von RAG:

  • Viele Suchsysteme verwenden RAG, 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.
  • Question Answering-Systeme verwenden RAG, um genaue und umfassende Antworten auf Nutzerfragen zu generieren.

RAG ist eine vielseitige Methode, mit der sich Text in verschiedenen Bereichen und Anwendungen generieren lässt. 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 helfen kann, Ihre Fragen mit dem von Ihnen hochgeladenen Korpus zu beantworten. Die sofort einsatzbereite RAG-Plattform Vertex AI Search/Agent Builder hilft Ihnen, RAG-Systeme schneller zu erstellen. So vermeiden Sie den manuellen Aufwand für das Erfassen der Dokumente, das Parsen, das Aufteilen in Chunks, das Generieren von Einbettungen, die Erweiterung von Anfragen, das Abrufen und Ranking von Kandidaten. Das sofort einsatzbereite 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äftlichen Anforderungen anpassen.

Umfang

Am Ende dieses Codelabs haben Sie ein funktionierendes RAG-System bereitgestellt, das Ihnen helfen kann, Ihre Fragen mit faktenbasierten Informationen zu beantworten, die mit den richtigen Referenzen belegt und zitiert werden.

Außerdem erhalten Sie ein besseres Verständnis dafür, wie Sie die Vertex AI Search APIs verwenden, um diese RAG-Architektur in Google Cloud zu erstellen. Außerdem erfahren Sie, wie Sie diese RAG-Architekturanwendung (mit Frontend und Backend) in Cloud Run bereitstellen. Cloud Run ist eine serverlose Plattform für die Bereitstellung von Anwendungen als Container in Google Cloud.

2d055ded874603a6.png

So funktioniert der Antrag

  • Daten hochladen: Nutzer können ihren eigenen Datensatz, d. h. eine PDF-Datei, als Eingabe hochladen.
  • Fragen in der Suchleiste stellen: Nutzer können in der Suchleiste Fragen zum hochgeladenen Datenbestand stellen.
  • Antworten abrufen: Nutzer können die Suchergebnisse/Kandidaten abrufen und die Faktualität/Fundierung der abgerufenen Antwort anhand der Relevanz der Anfrage prüfen.

2. Umgebung einrichten

  1. Wählen Sie in der Google Cloud Console auf der Seite zur 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 oben in der Google Cloud Console auf „Cloud Shell aktivieren“, um darauf zuzugreifen.

1829c3759227c19b.png

  1. Sobald die Verbindung mit der Cloud Shell hergestellt ist, prüfen Sie mit dem folgenden Befehl, ob Sie bereits authentifiziert sind und für das Projekt schon Ihre Projekt-ID eingestellt ist:
gcloud auth list
  1. Führen Sie den folgenden Befehl in Cloud Shell aus, um zu bestätigen, dass 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. Prüfen Sie, ob die folgenden APIs aktiviert sind:
  • Cloud Run
  • Vertex AI
  • Cloud Storage

Alternativ zum gcloud-Befehl 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 die Suchleiste „Cloud Storage“ ein.
  • Wählen Sie Cloud Storage aus den Vorschlägen 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 „Mehrere Regionen“ 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 Konsolenseite „Vertex AI Agent Builder“ ein.
  • Wählen Sie das erste Produkt „Agent Builder“ aus.

c4a67b92bb7900e3.png

  • Klicken Sie auf der Seite „Agent Builder“ in der linken Navigationsleiste auf „Datenspeicher“.

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 Bucket aus, den Sie in Schritt 1 erstellt haben.
  • Wählen Sie unten die Option „Verknüpfte unstrukturierte Dokumente (JSONL mit Metadaten)“ aus.
  • Klicken Sie auf „Weiter“.

13876b5d12dbe1fb.png

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

618b7a456fbffad4.png

Brownie:

  • Direkt über der Schaltfläche „Erstellen“ sehen Sie die Option zur Dokumentverarbeitung.
  • Sie können verschiedene Parser wie den digitalen Parser, den OCR-Parser oder den Layoutparser ausprobieren.
  • Sie können auch das erweiterte Chunking aktivieren und eigene benutzerdefinierte Grenzwerte für die Chunkgröße angeben.

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 „App erstellen“.
  • Wählen Sie „Suche“ als Anwendungstyp aus. Sie können auch Agents, Konversationsbots und Empfehlungen erstellen.

ae5294e33f63567c.png

  • Achten Sie darauf, dass Sie unter „Inhalt“ die Option „Allgemein“ auswählen. Sie können auch „Media“ oder „Recommendations“ auswählen, je nachdem, welchen Datenspeicher und welche Art von Daten und Systemen Sie erstellen möchten.
  • Achten Sie darauf, dass sowohl die Enterprise-Version als auch die erweiterten LLM-Funktionen aktiviert sind.
  • Namen der Anwendung angeben
  • Name Ihres Unternehmens angeben

f8a41c9751f7a8d3.png

  • Achten Sie darauf, dass die Region „global“ ausgewählt ist.
  • 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 einen Docker-Container packen

  • 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

  • Wechseln Sie mit dem folgenden Befehl in das geklonte Repository:

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

  • Ordnerstruktur
  • Backend: Hier befindet sich eine Python-basierte API-Implementierung, mit der RESTful-Endpunkte erstellt werden, mit denen Ihr Frontend interagieren kann.
  • Frontend: Hier befindet sich eine auf React basierende Anwendung, die die Benutzeroberfläche bereitstellt. Sie enthält auch 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 Repositorys den folgenden Befehl aus, um ein Docker-Image zu erstellen. Hinweis: Verwenden Sie das Flag - - platform, wenn Sie Docker-Container auf MacBooks mit Apple-Prozessoren wie M1, M2 usw. erstellen. Dieses Flag ist nicht erforderlich, wenn Sie einen Windows-Computer oder eine Intel-basierte CPU-Architektur verwenden.

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

  • Nachdem der Docker-Container-Build erfolgreich war, führen Sie den folgenden Befehl aus, um den Container mit den richtigen Tags zu taggen und so eine Version Ihres Images bereitzustellen. Es kann mehrere Versionen der Anwendung und damit mehrere Versionen als Tags in Docker-Containern geben. Aus DevOps-Sicht ist es empfehlenswert, immer die aktuelle stabile Version zu verwenden.

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

  • Nachdem das Docker-Container-Image erfolgreich getaggt wurde, übertragen wir das Image per Push an Google Artifact Registry (GAR). 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 per Push in GAR zu übertragen. Weitere Informationen finden Sie unter 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 einem vorhandenen Container-Image bereitstellen“ ausgewählt ist.
  • Klicken Sie unten auf „Auswählen“.
  • Rechts wird nun 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 für den Link zu Ihrem bereitgestellten Containerimage zu maximieren.
  • Wählen Sie das Container-Tag aus und maximieren Sie es. Wählen Sie immer die zuletzt bereitgestellten Tags aus, z. B. v1, v2 usw.
  • Klicken Sie auf das Container-Image, das unter dem Containertag-Namen 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 gewünschte Region aus (in diesem Fall „us-central1“ oder eine andere).
  • Unter „Authentifizierung“
  • Achten Sie darauf, dass „Nicht authentifizierte Aufrufe zulassen“ ausgewählt ist.
  • Unter „CPU-Zuweisung und -Preise“
  • „CPU wird nur während der Anfrageverarbeitung zugewiesen“ auswählen
  • Ändern Sie das automatische Skalieren des Dienstes auf 1. Für Produktionszwecke wird empfohlen, eine Mindestanzahl von Instanzen auszuführen, um den täglichen Traffic zu bewältigen. Sie können den Wert auch auf 0 festlegen.
  • Setzen Sie „Ingress Control“ auf „All“, um den Zugriff auf Ihre Anwendung über das Internet zu ermöglichen.
  • Klicken Sie auf „Erstellen“.
  • Dadurch wird eine Cloud Run-Instanz bereitgestellt. Die Bereitstellung kann einige Minuten dauern.

b8b147265b8d457b.png

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

1dfdb007c52581a1.png

8. So funktioniert es

  • Klicken Sie auf der Startseite der App auf die Schaltfläche „Dokument hochladen“.
  • PDF-Datei hochladen
  • Sobald der Upload abgeschlossen ist
  • Klicken Sie oben auf der Webseite auf die Suchleiste.
  • Mit der Suche nach Abfragen im Zusammenhang mit Ihrem hochgeladenen Dokument beginnen
  • Nachdem Sie Ihre Anfrage eingegeben und auf „Suchen“ geklickt haben, sollten alle relevanten Antworten aus dem gerade hochgeladenen Dokument angezeigt werden.
  • Sie können den Backend-Code ansehen und weitere Konfigurationen wie die folgenden hinzufügen:
  • Snippets hinzufügen
  • Extraktive Segmente hinzufügen
  • Antworten hinzufügen
  • Die Top-k-Ergebnisse optimieren, damit das LLM die Antwort zusammenfassen kann (ähnlich wie die KI-Übersicht in der Google Suche)
  • Als Add-on können Sie beim Hochladen des Dokuments auch Metadatentags hinzufügen. So können Facetten und filterbare Kategorien generiert werden.

9. Bereinigen

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

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.
  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 zu Cloud Run wechseln, den gerade bereitgestellten Dienst auswählen und löschen.

10. Glückwunsch

Glückwunsch! Sie haben erfolgreich ein sofort einsatzbereites RAG-System mit den hochmodernen Modellen von Google erstellt, um Suchanfragen mit Ergebnissen in Google-Qualität zu beantworten. Dieses Codelab dient nur zu Demonstrationszwecken. Für Produktionsanwendungsfälle müssen zusätzliche Sicherheitsmaßnahmen und Schutzvorrichtungen 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 erstellen, das Ihnen in wenigen Minuten sofort Ergebnisse in Google-Qualität liefern kann. Da sich generative KI und Large Language Models weiterentwickeln, hilft uns die Entwicklung solcher RAG-Systeme auch dabei, die Fallstricke von Halluzinationen und nicht zitierten Informationen zu vermeiden.

Das ist zwar nur ein Ausgangspunkt, aber mit den vollständig anpassbaren DIY-RAG-APIs können wir Wunder vollbringen. Sie bieten Ihnen noch mehr Transparenz, Leistung und Effizienz, um jeden Teil des Pipelineprozesses effektiv zu verwalten.