Dari Penyesuaian hingga Produksi: Pipeline Sematan yang Skalabel dengan Dataflow

4 SEP. 2025
Danny McCormick Staff Software Engineer Google Cloud Dataflow
Ian Ballantyne Senior Developer Relations Engineer Google DeepMind

Dunia AI bergerak dengan kecepatan yang menakjubkan, dan sematan merupakan inti dari banyak aplikasi modern seperti penelusuran semantik dan Retrieval Augmented Generation (RAG). Hari ini, kami sangat senang membahas tentang cara memanfaatkan model sematan terbuka 308M parameter yang sangat efisien dari Google, EmbeddingGemma. Meskipun ukurannya yang kecil membuatnya sempurna untuk aplikasi di perangkat, efisiensi ini juga membuka kemungkinan baru yang dahsyat untuk cloud, terutama dalam hal kustomisasi melalui penyesuaian. Kami akan menunjukkan cara menggunakan EmbeddingGemma dengan Google Cloud Dataflow dan database vektor seperti AlloyDB untuk membangun pipeline penyerapan pengetahuan real-time yang skalabel.


Kekuatan sematan dan Dataflow

Sematan adalah representasi vektor numerik data yang menangkap hubungan mendasar antara kata dan konsep. Mereka merupakan landasan aplikasi yang perlu memahami informasi pada level konseptual yang lebih dalam, mulai dari menelusuri dokumen yang secara semantik mirip dengan kueri hingga menyediakan konteks yang relevan untuk Model Bahasa Besar (LLM) dalam sistem RAG.

Untuk mendukung aplikasi ini, Anda memerlukan pipeline penyerapan pengetahuan kuat yang bisa memproses data tak terstruktur, mengubahnya menjadi sematan, dan memuatnya ke dalam database vektor khusus. Di sinilah Dataflow bisa membantu dengan mengenkapsulasi langkah-langkah ini ke dalam satu pipeline terkelola.

Menggunakan model terbuka yang kecil dan sangat efisien seperti EmbeddingGemma sebagai inti dari pipeline Anda akan membuat seluruh proses menjadi mandiri, yang bisa menyederhanakan pengelolaan dengan menghilangkan kebutuhan panggilan jaringan eksternal ke layanan lain untuk langkah penyematan. Karena ini adalah model terbuka, ini bisa dihosting sepenuhnya di dalam Dataflow. Hal ini memberikan kepercayaan untuk memproses set data pribadi berskala besar dengan aman.

Selain manfaat operasional ini, EmbeddingGemma juga bisa disesuaikan, memungkinkan Anda menyesuaikannya untuk kebutuhan penyematan data khusus Anda; Anda bisa menemukan contoh penyesuaian di sini. Kualitas sama pentingnya dengan skalabilitas, dan EmbeddingGemma juga menonjol di sini. Ini adalah model penyematan multibahasa khusus teks dengan peringkat tertinggi di bawah 500M parameter di papan peringkat Massive Text Embedding Benchmark (MTEB) Multibahasa.

Dataflow adalah platform penskalaan otomatis yang terkelola sepenuhnya untuk pemrosesan data batch dan streaming terpadu. Dengan menyertakan model seperti EmbeddingGemma secara langsung ke dalam pipeline Dataflow, Anda akan mendapatkan beberapa keuntungan:

  • Efisiensi dari lokalitas data: Pemrosesan terjadi pada worker Dataflow, sehingga tidak perlu lagi melakukan remote procedure call (RPC) ke layanan inferensi terpisah dan menghindari masalah kuota serta penskalaan otomatis beberapa sistem secara bersamaan. Seluruh alur kerja Anda bisa dipaketkan ke dalam satu set worker, sehingga mengurangi jejak sumber daya Anda.

  • Sistem terpadu: Satu sistem yang menangani penskalaan otomatis, pengamatan, dan pemantauan, sehingga menyederhanakan biaya operasional Anda.

  • Skalabilitas dan kesederhanaan: Dataflow secara otomatis menskalakan pipeline Anda naik atau turun berdasarkan permintaan, dan transformasi Apache Beam mengurangi kode boilerplate.


Membangun pipeline penyerapan dengan Dataflow ML

Pipeline penyerapan pengetahuan secara umum terdiri dari empat fase: membaca dari sumber data, melakukan prapemrosesan data, menghasilkan sematan, dan menulis ke database vektor.

Dataflow's MLTransform
Dengan ‘MLTransform’ Dataflow, ‘PTransform’ yang kuat untuk persiapan data, seluruh alur kerja ini bisa diimplementasikan hanya dalam beberapa baris kode.

Menghasilkan Sematan Gemma dengan MLTransform

Mari kita bahas cara menggunakan model Gemma terbaru untuk menghasilkan sematan teks. Contoh ini, yang diadaptasi dari notebook EmbeddingGemma, menunjukkan cara mengonfigurasi MLTransform untuk menggunakan model Hugging Face dan kemudian menulis hasilnya ke AlloyDB agar sematan bisa digunakan untuk penelusuran semantik. Database seperti AlloyDB memungkinkan kita menggabungkan penelusuran semantik ini dengan penelusuran terstruktur tambahan untuk memberikan hasil yang berkualitas tinggi dan relevan.

Pertama-tama, kita tentukan nama model yang akan kita gunakan untuk sematan bersama dengan transformasi yang menentukan kolom yang ingin kita sematkan dan tipe model yang kita gunakan.

import tempfile
import apache_beam as beam
from apache_beam.ml.transforms.base import MLTransform
from apache_beam.ml.transforms.embeddings.huggingface import SentenceTransformerEmbeddings
 
# The new Gemma model for generating embeddings. You can replace this with your fine tuned model just by changing this path.
text_embedding_model_name = 'google/embeddinggemma-300m'
 
# Define the embedding transform with our Gemma model
embedding_transform = SentenceTransformerEmbeddings(
    model_name=text_embedding_model_name, columns=['x']
)
Python

Setelah membuat sematan, kita akan menyalurkan outputnya secara langsung ke dalam sink, yang biasanya berupa database vektor. Untuk menulis sematan ini, kita akan menetapkan VectorDatabaseWriteTransform berbasis konfigurasi.

Dalam kasus ini, kita akan menggunakan AlloyDB sebagai sink dengan memasukkan objek AlloyDBVectorWriterConfig. Dataflow mendukung penulisan ke banyak database vektor, termasuk AlloyDB, CloudSQL, dan BigQuery, dengan hanya menggunakan objek konfigurasi.

# Define the config used to write to AlloyDB
alloydb_writer_config = AlloyDBVectorWriterConfig(
    connection_config=connection_config,
    table_name=table_name
)
 
# Build and run the pipeline
with beam.Pipeline() as pipeline:
  _ = (
      pipeline
      | "CreateData" >> beam.Create(content) # In production could be replaced by a transform to read from any source
      # MLTransform generates the embeddings
      | "Generate Embeddings" >> MLTransform(
          write_artifact_location=tempfile.mkdtemp()
      ).with_transform(embedding_transform)
      # The output is written to our vector database
      | 'Write to AlloyDB' >> VectorDatabaseWriteTransform(alloydb_writer_config)
  )
Python

Pola yang sederhana tetapi kuat ini memungkinkan Anda memproses set data yang sangat besar secara paralel, menghasilkan sematan dengan EmbeddingGemma – 308M parameter – dan mengisi database vektor Anda—semuanya dalam satu pipeline yang skalabel, hemat biaya, dan terkelola.


Mulai Sekarang

Dengan menggabungkan model Gemma terbaru dengan skalabilitas Dataflow dan kekuatan penelusuran vektor database vektor seperti AlloyDB, Anda bisa membangun aplikasi AI mutakhir generasi berikutnya dengan mudah.

Untuk mempelajari lebih lanjut, jelajahi dokumentasi Dataflow ML, terutama dokumentasi tentang mempersiapkan data dan membuat sematan. Anda juga bisa mencoba pipeline sederhana menggunakan EmbeddingGemma dengan mengikuti notebook ini.

Untuk aplikasi sisi server berskala besar, jelajahi model Gemini Embedding termutakhir kami melalui Gemini API untuk performa dan kapasitas maksimum.

Untuk mempelajari lebih lanjut tentang EmbeddingGemma, baca pengumuman peluncuran kami di blog Google Developer.