Membangun pipeline embedding vektor real-time untuk AlloyDB dengan Dataflow

Dokumen ini menunjukkan cara membuat pipeline Ekstrak, Transformasi, Muat (ETL) AlloyDB untuk PostgreSQL menggunakan Dataflow. Google Cloud Dataflow adalah layanan Google Cloud terkelola sepenuhnya untuk mengembangkan dan menjalankan pipeline pemrosesan data.

Anda dapat menggunakan petunjuk dalam dokumen, yang didasarkan pada Colab Penyerapan Embedding Vektor dengan Apache Beam dan AlloyDB, yang menggunakan Python untuk membuat pipeline penyerapan basic_ingestion_pipeline.py. Beberapa kasus penggunaan tempat Anda dapat menerapkan informasi 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 untuk PostgreSQL menggunakan handler VertexAITextEmbeddings Apache Beam dan model embedding teks Vertex AI
  • Membuat pipeline streaming di Dataflow

Sebelum memulai

Sebelum Anda membuat pipeline Dataflow menggunakan Colab, selesaikan prasyarat berikut:

Menyiapkan instance AlloyDB untuk PostgreSQL dan komponen pipeline

Pertama, konfigurasi pipeline Anda untuk terhubung ke instance AlloyDB untuk PostgreSQL. Konfigurasi ini mencakup penentuan Google Cloud project ID, URI instance AlloyDB untuk PostgreSQL, 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 untuk PostgreSQL
  • Membuat embedding
  • Menulis kembali embedding vektor ini ke AlloyDB untuk PostgreSQL

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

Membuat data sampel

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

Untuk mengetahui informasi selengkapnya, lihat Membuat data sampel.

Membuat tabel untuk menyimpan embedding

Pipeline menyimpan sematan yang dihasilkan 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 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 penyematan. Sertakan metadata dan format data input sesuai dengan spesifikasi model sematan yang Anda gunakan.

Untuk mengetahui informasi selengkapnya tentang penyiapan data, lihat Memetakan data produk ke bagian.

Mengonfigurasi handler penyematan untuk menghasilkan penyematan

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

Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi Handler Penyematan.

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

Membuat pipeline penyerapan

Pipeline basic_ingestion_pipeline.py, yang disediakan di Colab Penyerapan Embedding Vektor dengan Apache Beam dan AlloyDB, menggabungkan konfigurasi dari bagian sebelumnya, termasuk penyiapan AlloyDB untuk PostgreSQL, pemuatan data ke AlloyDB untuk PostgreSQL, chunking data opsional, dan konfigurasi handler 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 untuk PostgreSQL

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 ID project, detail koneksi AlloyDB untuk PostgreSQL, lokasi bucket Cloud Storage, detail lingkungan eksekusi, informasi jaringan, dan nama pipeline penyerapan (basic_ingestion_pipeline.py).

Dalam Colab Penyerapan Embedding Vektor dengan Apache Beam dan AlloyDB, 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 konsol Google Cloud , di dasbor Dataflow, Anda dapat melihat grafik eksekusi, log, dan metrik saat pipeline Anda dieksekusi.

Opsional: Jalankan pipeline Dataflow streaming

Untuk data yang diperkirakan akan sering berubah, seperti penelusuran kesamaan atau mesin rekomendasi, sebaiknya buat 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 tertentu (seperti Hugging Face atau Vertex AI), dan memperbarui tabel AlloyDB for PostgreSQL.

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

Memverifikasi embedding vektor di AlloyDB untuk PostgreSQL

Setelah pipeline dijalankan, verifikasi bahwa pipeline menuliskan embedding ke database AlloyDB untuk PostgreSQL Anda.

Untuk mengetahui informasi selengkapnya, lihat Memverifikasi Embedding Tertulis.

Langkah berikutnya