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
VertexAITextEmbeddingsund 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:
- Konfigurieren Sie Ihre Umgebung, um eine Dataflow-Pipeline zu erstellen.
Aktivieren Sie AlloyDB und andere erforderliche APIs:
gcloud services enable alloydb.googleapis.com cloudresourcemanager.googleapis.com \ servicenetworking.googleapis.comErstellen Sie einen AlloyDB-Cluster und eine primäre Instanz.
Installieren Sie die AlloyDB-Vektorerweiterung in Ihrer Datenbank.
Weisen Sie dem Dataflow-Nutzerkonto die Rolle AlloyDB-Administrator (roles/alloydb.admin) zu.
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_datain 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
- Informationen zum Ausführen der Vektoreinbettungsaufnahme mit Apache Beam, Dataflow und AlloyDB.