Membangun pipeline embedding vektor real-time untuk AlloyDB dengan Dataflow

Dokumen ini menunjukkan cara membuat pipeline Extract, Transform, Load (ETL) AlloyDB menggunakan Dataflow. Google Cloud Dataflow adalah layanan terkelola sepenuhnya Google Cloud untuk mengembangkan dan menjalankan pipeline pemrosesan data.

Anda dapat menggunakan petunjuk dalam dokumen ini, yang didasarkan pada Penyerapan Embedding Vektor dengan Apache Beam dan AlloyDB Colab, yang menggunakan Python untuk membuat basic_ingestion_pipeline.py pipeline penyerapan. Beberapa kasus penggunaan yang dapat Anda terapkan informasinya dalam dokumen ini adalah penelusuran semantik atau retrieval augmented generation (RAG).

Petunjuk ini menjelaskan komponen pipeline Dataflow berikut:

  • Menyiapkan koneksi AlloyDB dan Dataflow
  • Membuat embedding di AlloyDB menggunakan pengendali VertexAITextEmbeddings Apache Beam dan model embedding teks Platform Agen Gemini Enterprise
  • Membuat pipeline streaming di Dataflow

Sebelum memulai

Sebelum membuat pipeline Dataflow menggunakan Colab, selesaikan prasyarat berikut:

Menyiapkan instance AlloyDB dan komponen pipeline

Pertama, konfigurasi pipeline Anda untuk terhubung ke instance AlloyDB. Konfigurasi ini mencakup penentuan Google Cloud project ID, URI instance AlloyDB, pengguna, dan sandi untuk terhubung menggunakan konektor bahasa AlloyDB. Untuk mengetahui informasi selengkapnya tentang cara menyiapkan koneksi, lihat Penyiapan Database.

Modul Apache Beam khusus Retrieval-Augmented Generation (RAG) menyediakan class untuk tugas berikut:

  • Menyerap data dari AlloyDB
  • Membuat embedding
  • Menulis kembali embedding vektor ini ke AlloyDB

Impor class yang diperlukan ke dalam kode pipeline Anda sebelum membuat logika pipeline. Untuk mengetahui informasi selengkapnya tentang komponen pipeline, lihat Mengimpor Komponen Pipeline.

Membuat data sampel

Colab Penyerapan Embedding Vektor dengan Apache Beam dan AlloyDB menyediakan data products_data sampel untuk menjalankan pipeline. Pipeline menggunakan data sampel ini sebagai input, bersama dengan model embedding, untuk membuat embedding.

Untuk mengetahui informasi selengkapnya, lihat Membuat data sampel.

Membuat tabel untuk menyimpan embedding

Pipeline menyimpan embedding yang dibuat dalam tabel default_dataflow_product_embeddings. Untuk mengetahui informasi selengkapnya tentang cara membuat skema tabel, lihat Membuat tabel dengan skema default.

Opsional: Menyiapkan data untuk penyerapan embedding

Berdasarkan set data Anda, Anda dapat membagi data menjadi metadata dan teks yang harus dikonversi oleh model embedding menjadi embedding. Class MLTransform() dan VectorDatabaseWriteTransform() memproses data input menjadi ukuran yang didukung oleh model embedding. Sertakan metadata dan format data input sesuai dengan spesifikasi model embedding yang Anda gunakan.

Untuk mengetahui informasi selengkapnya tentang cara menyiapkan data, lihat Memetakan data produk ke potongan.

Mengonfigurasi pengendali embedding untuk membuat embedding

Class VertexAITextEmbeddings() menentukan model embedding teks yang membuat embedding vektor. Model embedding ini mengonversi data yang dipotong menjadi embedding.

Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi Pengendali Embedding.

Anda juga dapat menggunakan model terlatih yang dibuat dengan framework SentenceTransformers Huggingface untuk membuat embedding vektor. Untuk mengetahui informasi selengkapnya, lihat Membuat embedding dengan HuggingFace.

Membuat pipeline penyerapan

Pipeline basic_ingestion_pipeline.py, yang disediakan dalam Penyerapan Embedding Vektor dengan Apache Beam dan AlloyDB Colab, menggabungkan konfigurasi dari bagian sebelumnya, termasuk penyiapan AlloyDB, memuat data ke AlloyDB, pemotongan data opsional, dan konfigurasi pengendali embedding.

Pipeline penyerapan melakukan hal berikut:

  • Membuat tabel data produk
  • Mengonversi data menjadi potongan
  • Membuat embedding
  • Menulis embedding yang dikonversi ke tabel products_data di AlloyDB

Anda dapat menjalankan pipeline ini menggunakan runner lokal langsung atau runner berbasis cloud seperti Dataflow.

Untuk mengetahui informasi selengkapnya tentang cara membuat pipeline penyerapan, lihat Menyimpan Pipeline ke file Python.

Menjalankan pipeline Dataflow

Anda dapat menjalankan pipeline Dataflow dari command line. Teruskan kredensial, seperti project ID, detail koneksi AlloyDB, lokasi bucket Cloud Storage, detail lingkungan eksekusi, informasi jaringan, dan nama pipeline penyerapan (basic_ingestion_pipeline.py).

Dalam Penyerapan Embedding Vektor dengan Apache Beam dan AlloyDB Colab, instance AlloyDB untuk PostgreSQL dan tugas Dataflow berjalan di jaringan dan subnetwork VPC yang sama.

Untuk mengetahui informasi selengkapnya tentang cara menjalankan pipeline di Dataflow, lihat Menjalankan Pipeline di Dataflow.

Di Google Cloud console, di dasbor Dataflow, Anda dapat melihat grafik eksekusi, log, dan metrik saat pipeline Anda dieksekusi.

Opsional: Menjalankan pipeline Dataflow streaming

Untuk data yang diperkirakan akan sering berubah, seperti penelusuran kesamaan atau mesin rekomendasi, pertimbangkan untuk membuat pipeline streaming menggunakan Dataflow dan Pub/Sub.

Daripada memproses batch data, pipeline ini terus membaca pesan masuk dari topik Pub/Sub, mengonversi pesan menjadi potongan, membuat embedding menggunakan model yang ditentukan (seperti Hugging Face atau Platform Agen), dan memperbarui tabel AlloyDB.

Untuk mengetahui informasi selengkapnya, lihat Streaming Pembaruan Embedding dari Pub/Sub.

Memverifikasi embedding vektor di AlloyDB untuk PostgreSQL

Setelah pipeline dieksekusi, verifikasi bahwa pipeline menulis embedding ke database AlloyDB Anda.

Untuk mengetahui informasi selengkapnya, lihat Memverifikasi Embedding yang Ditulis.

Langkah berikutnya