Echtzeit-Pipeline für Vektoreinbettungen für AlloyDB mit Dataflow erstellen

In diesem Dokument wird beschrieben, wie Sie mit Dataflow eine AlloyDB-ETL-Pipeline (Extract, Transform, Load) erstellen. Google Cloud Dataflow ist ein vollständig verwalteter Google Cloud Dienst zum Entwickeln und Ausführen von Datenverarbeitungspipelines.

Sie können die Anleitungen im Dokument verwenden, die auf dem Colab-Notebook Vector Embedding Ingestion with Apache Beam and AlloyDB basieren. Dort wird mit Python die basic_ingestion_pipeline.py Aufnahmepipeline erstellt. Einige der Anwendungsfälle, in denen Sie die Informationen in diesem Dokument anwenden können, sind die semantische Suche oder Retrieval Augmented Generation (RAG).

In dieser Anleitung werden die folgenden Dataflow-Pipelinekomponenten beschrieben:

  • AlloyDB- und Dataflow-Verbindung einrichten
  • Einbettungen in AlloyDB mit dem Apache Beam-Handler VertexAITextEmbeddings und dem Texteinbettungsmodell der Gemini Enterprise Agent Platform generieren
  • Streamingpipeline in Dataflow erstellen

Hinweis

Bevor Sie die Dataflow-Pipeline mit dem Colab-Notebook erstellen, müssen Sie die folgenden Voraussetzungen erfüllen:

AlloyDB-Instanz und Pipelinekomponenten einrichten

Konfigurieren Sie zuerst Ihre Pipeline, um eine Verbindung zu einer AlloyDB-Instanz herzustellen. Diese Konfiguration umfasst die Definition der Google Cloud Projekt-ID, des AlloyDB-Instanz-URI, des Nutzers und des Passworts für die Verbindung mit dem AlloyDB-Sprachconnector. Weitere Informationen zum Einrichten der Verbindung finden Sie unter Datenbank einrichten.

Die Retrieval-Augmented Generation (RAG)-spezifischen Apache Beam-Module bieten Klassen für die folgenden Aufgaben:

  • Daten aus AlloyDB aufnehmen
  • Einbettungen generieren
  • Diese Vektoreinbettungen wieder in AlloyDB schreiben

Importieren Sie die erforderlichen Klassen in Ihren Pipelinecode, bevor Sie die Pipelinelogik erstellen. Weitere Informationen zu Pipelinekomponenten finden Sie unter Pipelinekomponenten importieren.

Beispieldaten erstellen

Das Vector Embedding Ingestion with Apache Beam and AlloyDB Colab-Notebook enthält products_data Beispieldaten zum Ausführen der Pipeline. Die Pipeline verwendet diese Beispieldaten zusammen mit dem Einbettungsmodell als Eingabe, um Einbettungen zu generieren.

Weitere Informationen finden Sie unter Beispieldaten erstellen.

Tabelle zum Speichern von Einbettungen erstellen

Die Pipeline speichert die generierten Einbettungen in der Tabelle default_dataflow_product_embeddings. Weitere Informationen zum Erstellen des Tabellenschemas finden Sie unter Tabelle mit Standardschema erstellen.

Optional: Daten für die Einbettungsaufnahme vorbereiten

Je nach Dataset können Sie Ihre Daten in Metadaten und Text aufteilen, die das Einbettungsmodell in Einbettungen umwandeln muss. Die Klassen MLTransform() und VectorDatabaseWriteTransform() verarbeiten Eingabedaten in einer Größe, die vom Einbettungsmodell unterstützt wird. Fügen Sie die Metadaten ein und formatieren Sie die Eingabedaten gemäß den Spezifikationen des verwendeten Einbettungsmodells.

Weitere Informationen zum Vorbereiten von Daten finden Sie unter Produktdaten Chunks zuordnen.

Einbettungshandler zum Generieren von Einbettungen konfigurieren

Die Klasse VertexAITextEmbeddings() definiert das Texteinbettungsmodell, das Vektoreinbettungen erstellt. Dieses Einbettungsmodell wandelt die in Chunks aufgeteilten Daten in Einbettungen um.

Weitere Informationen finden Sie unter Einbettungshandler konfigurieren.

Sie können auch ein vortrainiertes Modell verwenden, das mit dem Huggingface SentenceTransformers-Framework erstellt wurde, um Vektoreinbettungen zu generieren. Weitere Informationen finden Sie unter Einbettungen mit HuggingFace generieren.

Aufnahmepipeline erstellen

Die basic_ingestion_pipeline.py Pipeline, die im Colab-Notebook Vector Embedding Ingestion with Apache Beam and AlloyDB bereitgestellt wird, enthält die Konfigurationen aus den vorherigen Abschnitten, einschließlich der AlloyDB-Einrichtung, des Ladens von Daten in AlloyDB, der optionalen Aufteilung von Daten in Chunks und der Konfiguration des Einbettungshandlers.

Die Aufnahmepipeline führt folgende Aufgaben aus:

  • Produktdatentabellen erstellen
  • Daten in Chunks aufteilen
  • Einbettungen generieren
  • Die konvertierten Einbettungen in die Tabelle products_data in AlloyDB schreiben

Sie können diese Pipeline mit einem direkten lokalen Runner oder einem cloudbasierten Runner wie Dataflow ausführen.

Weitere Informationen zum Erstellen der Aufnahmepipeline finden Sie unter Pipeline in einer Python-Datei speichern.

Dataflow-Pipeline ausführen

Sie können eine Dataflow-Pipeline über die Befehlszeile ausführen. Übergeben Sie Anmeldedaten wie Ihre Projekt-ID, AlloyDB-Verbindungsdetails, den Speicherort des Cloud Storage-Bucket, Details zur Ausführungsumgebung, Netzwerkinformationen und den Namen der Aufnahmepipeline (basic_ingestion_pipeline.py).

Im Colab-Notebook Vector Embedding Ingestion with Apache Beam and AlloyDB werden die AlloyDB for PostgreSQL-Instanz und die Dataflow-Jobs im selben VPC-Netzwerk und Subnetz ausgeführt.

Weitere Informationen zum Ausführen einer Pipeline in Dataflow finden Sie unter Pipeline in Dataflow ausführen.

In der Google Cloud Console können Sie im Dataflow-Dashboard Ausführungsgraphen, Logs und Messwerte aufrufen, während Ihre Pipeline ausgeführt wird.

Optional: Streaming-Dataflow-Pipeline ausführen

Für Daten, die sich voraussichtlich häufig ändern, z. B. bei Ähnlichkeitssuchen oder Empfehlungssystemen, sollten Sie eine Streamingpipeline mit Dataflow und Pub/Sub erstellen.

Anstatt einen Batch von Daten zu verarbeiten, liest diese Pipeline kontinuierlich eingehende Nachrichten aus einem Pub/Sub-Thema, wandelt die Nachrichten in Chunks um, generiert Einbettungen mit einem angegebenen Modell (z. B. Hugging Face oder Agent Platform) und aktualisiert die AlloyDB-Tabelle.

Weitere Informationen finden Sie unter Streaming-Einbettungsupdates von Pub/Sub.

Vektoreinbettungen in AlloyDB for PostgreSQL überprüfen

Nachdem die Pipeline ausgeführt wurde, prüfen Sie, ob die Einbettungen in Ihre AlloyDB-Datenbank geschrieben wurden.

Weitere Informationen finden Sie unter Geschriebene Einbettungen überprüfen.

Nächste Schritte