Dokumen ini menjelaskan cara memanggil model embedding untuk menghasilkan embedding teks dan multimodal, menggunakan Vertex AI SDK untuk ABAP.
Embedding pada dasarnya adalah kode numerik yang mewakili teks, gambar, atau video dengan cara yang menunjukkan hubungannya. Aplikasi menggunakan kode ini untuk memahami dan menghasilkan bahasa, mengenali makna yang paling kompleks sekalipun dan hubungan dalam konten spesifik Anda. Proses ini berfungsi dengan mengubah teks, gambar, dan video menjadi daftar angka, yang dikenal sebagai vektor, yang dirancang untuk menangkap makna konten asli secara efektif.
Beberapa kasus penggunaan umum untuk embedding teks adalah:
- Penelusuran semantik: Penelusuran teks yang diberi peringkat berdasarkan kemiripan semantik.
- Klasifikasi: Menampilkan class item yang atribut teksnya mirip dengan teks yang diberikan.
- Pengelompokan: Mengelompokkan item yang atribut teksnya mirip dengan teks yang diberikan.
- Deteksi pencilan: Menampilkan item dengan atribut teks yang paling tidak berkaitan pada teks yang diberikan.
- Antarmuka percakapan: Mengelompokkan grup kalimat yang dapat mengarah pada yang sama, seperti di ruang penyematan tingkat percakapan.
Dengan Vertex AI SDK untuk ABAP, Anda dapat membuat embedding dari logika aplikasi ABAP dengan menggunakan class dan metode yang yang disertakan dengan SDK. SDK juga menyediakan metode siap pakai untuk mengirim metode embedding ke datastore berikut:
- Cloud Storage: Anda dapat menggunakan embedding dari Cloud Storage bucket untuk membangun indeks vektor dan melakukan Vector Search.
- BigQuery: Anda dapat menggunakan embedding dari BigQuery sebagai database vektor untuk data perusahaan Anda.
Anda juga bisa memublikasikan embeddings ke topik Pub/Sub yang dapat dirutekan ke set data BigQuery atau ke sistem pelanggan.
Sebelum memulai
Sebelum menggunakan Vertex AI SDK untuk ABAP dengan penyematan pastikan bahwa Anda atau administrator Anda telah menyelesaikan prasyarat berikut:
- Mengaktifkan Vertex AI API di project Google Cloud Anda.
- Menginstal Vertex AI SDK untuk ABAP di lingkungan SAP Anda.
- Siapkan autentikasi untuk mengakses Vertex AI API.
- Mengonfigurasi parameter pembuatan model. Untuk menghasilkan embedding, hanya
parameter diperlukan:
Client Key
,Model Key
,Model ID
,Google Cloud Region Location
, danPublisher
.
Membuat embedding
Bagian ini menjelaskan cara menghasilkan embedding dengan menggunakan Vertex AI SDK untuk ABAP.
Membuat instance class embeddings multimodal
Untuk memanggil Vertex AI
model embeddings multimodal menggunakan
input teks atau multimodal, Anda bisa
menggunakan class /GOOG/CL_EMBEDDINGS_MODEL
.
Anda membuat instance class
dengan meneruskan kunci model yang dikonfigurasi dalam parameter pembuatan model.
DATA(lo_embeddings_model) = NEW /goog/cl_embeddings_model( iv_model_key = 'MODEL_KEY' ).
Ganti MODEL_KEY
dengan nama kunci model, yang dikonfigurasi
di parameter pembuatan model.
Membuat embedding teks
Untuk menghasilkan embedding bagi cuplikan teks, Anda dapat menggunakan metode
Metode GEN_TEXT_EMBEDDINGS
dari class /GOOG/CL_EMBEDDINGS_MODEL
.
Anda juga dapat menentukan dimensi untuk embedding output.
DATA(ls_addln_params) = VALUE /goog/cl_embeddings_model=>ty_addln_params(
output_dimensionality = 'DIMENSION' ).
DATA(lt_embeddings) = lo_embeddings_model->gen_text_embeddings(
iv_content = 'INPUT_TEXT'
is_addln_params = ls_addln_params
)->get_vector( ).
Ganti kode berikut:
DIMENSION
: Opsional. Dimensi penyematan output. Dimensi default adalah768
.INPUT_TEXT
: Teks yang akan dibuatkan embedding.
Anda juga dapat membuat embeddings untuk cuplikan teks menggunakan
template /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
, yang dikirimkan dengan SDK.
Template ini memungkinkan Anda mengambil informasi skema khusus perusahaan
dalam file embedding yang dihasilkan bersama dengan embeddings.
Untuk menghasilkan embedding bagi cuplikan teks, berdasarkan
/GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
template, Anda dapat menggunakan metode GEN_TEXT_EMBEDDINGS_BY_STRUCT
.
DATA(ls_embedding_template) = VALUE /goog/cl_embeddings_model=>ty_embeddings_template(
id = ENTITY_ID
content = INPUT_TEXT
source = SOURCE_MODULE ).
DATA(ls_addln_params) = VALUE /goog/cl_embeddings_model=>ty_addln_params(
output_dimensionality = 'DIMENSION' ).
DATA(lt_embeddings) = lo_embeddings_model->gen_text_embeddings_by_struct(
is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->get_vector_by_struct( ).
Ganti kode berikut:
ENTITY_ID
: ID entity untuk data penyematan.INPUT_TEXT
: Teks yang akan dibuatkan embedding.SOURCE_MODULE
: Modul sumber konten embeddings.DIMENSION
: Opsional. Dimensi dari embedding output. Dimensi default-nya adalah768
.
Membuat embedding gambar
Untuk menghasilkan embedding bagi gambar input, Anda dapat menggunakan GEN_IMAGE_EMBEDDINGS
dari class /GOOG/CL_EMBEDDINGS_MODEL
.
Anda bisa meneruskan data mentah
gambar atau URI Cloud Storage dari file gambar.
Anda juga dapat menentukan teks kontekstual untuk gambar dan dimensi
untuk embedding output.
DATA(ls_image) = VALUE /goog/cl_embeddings_model=>ty_image( gcs_uri = 'IMAGE_URI' ).
DATA(lt_embeddings) = lo_embeddings_model->gen_image_embeddings( iv_image = ls_image
iv_contextual_text = 'CONTEXTUAL_TEXT'
)->get_vector( ).
Ganti kode berikut:
IMAGE_URI
: URI Cloud Storage dari gambar target untuk mendapatkan embeddings.CONTEXTUAL_TEXT
: Opsional. Konteks dan makna tambahan konten gambar ke model embeddings.
Anda juga dapat membuat embeddings untuk gambar menggunakan
template /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
, yang dikirimkan dengan SDK.
Template ini memungkinkan Anda mengambil informasi skema khusus perusahaan
dalam file embedding yang dihasilkan bersama dengan embeddings.
Untuk menghasilkan embedding bagi gambar, berdasarkan
/GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
template, Anda dapat menggunakan metode GEN_IMAGE_EMBEDDINGS_BY_STRUCT
.
DATA(ls_image) = VALUE /goog/cl_embeddings_model=>ty_image( gcs_uri = 'IMAGE_URI' ).
DATA(ls_embedding_template) = VALUE /goog/cl_embeddings_model=>ty_embeddings_template(
id = ENTITY_ID
content = INPUT_TEXT
source = SOURCE_MODULE ).
DATA(lt_embeddings) = lo_embeddings_model->gen_image_embeddings_by_struct(
iv_image = ls_image
is_input = ls_embedding_template
)->get_vector_by_struct( ).
Ganti kode berikut:
IMAGE_URI
: URI Cloud Storage gambar target yang akan diberikan embedding.ENTITY_ID
: ID entity untuk data penyematan.INPUT_TEXT
: Teks yang akan dibuatkan embedding.SOURCE_MODULE
: Modul sumber konten penyematan.
Untuk mengambil penyematan teks kontekstual, gunakan kode berikut:
DATA(lt_context_embeddings) = lo_embeddings_model->get_context_text_vector( ).
Opsi ini hanya tersedia untuk pembuatan penyematan gambar tunggal.
Membuat penyematan video
Guna menghasilkan embedding untuk video input, Anda dapat menggunakan GET_VIDEO_EMBEDDINGS
dari class /GOOG/CL_EMBEDDINGS_MODEL
.
Anda dapat meneruskan URI Cloud Storage file video bersama dengan waktu offset awal dan akhir opsional dalam hitungan detik.
Anda juga dapat menentukan teks kontekstual untuk video dan dimensi
untuk embedding output.
DATA(ls_video) = VALUE /goog/cl_embeddings_model=>ty_video( gcs_uri = 'VIDEO_URI' ).
DATA(lt_embeddings) = lo_embeddings_model->gen_video_embeddings( iv_video = ls_video
iv_contextual_text = 'CONTEXTUAL_TEXT'
iv_dimension = 'DIMENSION'
)->get_vector( ).
VIDEO_URI
: URI Cloud Storage dari video target untuk mendapatkan embedding.CONTEXTUAL_TEXT
: Opsional. Konteks dan makna tambahan konten video ke model embeddings.DIMENSION
: Opsional. Dimensi dari embedding output. Dimensi yang tersedia adalah:128
,256
,512
, dan1408
(default).
Metode GET_VECTOR
menampilkan embedding hanya untuk
segmen pertama video.
Guna mengambil embedding untuk teks kontekstual, gunakan kode berikut:
DATA(lt_context_embeddings) = lo_embeddings_model->get_context_text_vector( ).
Opsi ini hanya tersedia untuk pembuatan penyematan video tunggal.
Mengumpulkan semua embedding yang dihasilkan
Untuk mengumpulkan semua embedding yang dihasilkan dalam tabel internal jenis
/GOOG/CL_EMBEDDINGS_MODEL=>TY_T_EMBEDDINGS_TEMPLATE
, Anda dapat menggunakan COLLECT
dari class /GOOG/CL_EMBEDDINGS_MODEL
bersama dengan metode GEN_TEXT_EMBEDDINGS_BY_STRUCT
dan GEN_IMAGE_EMBEDDINGS_BY_STRUCT
.
Ini berguna ketika Anda memiliki persyaratan menghasilkan embedding
array item (text/image
), dan Anda ingin membuat embedding
dalam iterasi loop dan mendapatkan semua embedding
sekaligus dalam tabel internal
iterasi (pengulangan). Metode GET_VECTOR_BY_TABLE
dapat digunakan untuk mendapatkan
tabel internal akhir dari penyematan.
LOOP AT ....
lo_embeddings_model->gen_text_embeddings_by_struct( is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->collect( ).
ENDLOOP.
DATA(lt_embeddings) = lo_embeddings_model->get_vector_by_table( ).
Mengirim embedding ke datastore
Anda dapat mengirim embedding yang dihasilkan ke bucket Cloud Storage atau set data BigQuery dengan menggunakan template yang dikirim bersama SDK.
Menyimpan embedding di Cloud Storage
Untuk mengirim penyematan yang dihasilkan ke bucket Cloud Storage, Anda dapat menggunakan metode SEND_STRUCT_TO_GCS
dari class /GOOG/CL_EMBEDDINGS_MODEL
.
Sebelum mengirim embedding ke Cloud Storage, pastikan Anda sudah memiliki bucket Cloud Storage yang akan dikirimi embedding.
Mengirim penyematan individual ke bucket Cloud Storage
Contoh kode berikut mengilustrasikan cara mengirim embedding gambar individual ke bucket Cloud Storage:
DATA(ls_image) = VALUE /goog/cl_embeddings_model=>ty_image( gcs_uri = 'IMAGE_URI' ).
lo_embeddings_model->gen_image_embeddings_by_struct( iv_image = ls_image
is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->send_struct_to_gcs( iv_key = 'CLIENT_KEY'
iv_bucket_name = 'BUCKET_NAME'
iv_file_name = 'FILE_NAME' ).
Ganti kode berikut:
IMAGE_URI
: URI Cloud Storage dari gambar target untuk mendapatkan embeddings.CLIENT_KEY
: Kunci klien untuk memanggil Cloud Storage API.BUCKET_NAME
: Nama bucket Cloud Storage target.FILE_NAME
: Nama file penyematan.
Mengirim penyematan yang dikumpulkan ke bucket Cloud Storage
Contoh kode berikut mengilustrasikan cara mengirim embedding yang dikumpulkan ke bucket Cloud Storage:
LOOP AT ....
lo_embeddings_model->gen_text_embeddings_by_struct( is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->collect( ).
ENDLOOP.
lo_embeddings_model->send_struct_to_gcs( iv_key = 'CLIENT_KEY'
iv_bucket_name = 'BUCKET_NAME'
iv_file_name = 'FILE_NAME' ).
Ganti kode berikut:
CLIENT_KEY
: Kunci klien untuk memanggil Cloud Storage API.BUCKET_NAME
: Nama bucket Cloud Storage target.FILE_NAME
: Nama file embedding.
Menyimpan embedding di BigQuery
Untuk mengirim embedding yang dihasilkan ke set data BigQuery,
Anda dapat menggunakan metode SEND_STRUCT_TO_BQ
dari /GOOG/CL_EMBEDDINGS_MODEL
.
Sebelum mengirim penyematan ke BigQuery, pastikan Anda memiliki set data BigQuery dan tabel yang ingin Anda kirimkan penyematan.
Mengirim embedding individual ke set data BigQuery
Contoh kode berikut mengilustrasikan cara mengirim embedding gambar individual ke set data BigQuery:
lo_embeddings_model->gen_image_embeddings_by_struct( iv_image = ls_image
is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->send_struct_to_bq( iv_key = 'CLIENT_KEY'
iv_dataset_id = 'DATASET_ID'
iv_table_id = 'TABLE_ID' ).
Ganti kode berikut:
CLIENT_KEY
: Kunci klien untuk memanggil BigQuery API.DATASET_ID
: ID set data BigQuery.TABLE_ID
: ID tabel BigQuery.
Mengirim penyematan yang dikumpulkan ke set data BigQuery
Contoh kode berikut mengilustrasikan cara mengirim penyematan yang dikumpulkan ke set data BigQuery:
LOOP AT ....
lo_embeddings_model->gen_text_embeddings_by_struct( is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->collect( ).
ENDLOOP.
lo_embeddings_model->send_struct_to_bq( iv_key = 'CLIENT_KEY'
iv_dataset_id = 'DATASET_ID'
iv_table_id = 'TABLE_ID' ).
Ganti kode berikut:
CLIENT_KEY
: Kunci klien untuk memanggil BigQuery API.DATASET_ID
: ID set data BigQuery.TABLE_ID
: ID tabel BigQuery.
Memublikasikan penyematan ke topik Pub/Sub
Untuk memublikasikan penyematan yang dihasilkan ke topik Pub/Sub, Anda dapat menggunakan
metode SEND_STRUCT_TO_PUBSUB
dari class /GOOG/CL_EMBEDDINGS_MODEL
.
Hal ini dapat bermanfaat
untuk skenario saat Anda perlu membangun pipeline kustom sendiri
untuk menyimpan embeddings dan membangun proses bisnis tindak lanjut.
Sebelum mengirim penyematan ke topik Pub/Sub, pastikan Anda memiliki topik Pub/Sub yang ingin Anda kirimi penyematan.
Memublikasikan penyematan individual ke topik Pub/Sub
Contoh kode berikut mengilustrasikan cara memublikasikan setiap penyematan gambar ke topik Pub/Sub:
lo_embeddings_model->gen_image_embeddings_by_struct( iv_image = ls_image
is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->send_struct_to_pubsub( iv_key = 'CLIENT_KEY'
iv_topic_id = 'TOPIC_ID' ).
Ganti kode berikut:
CLIENT_KEY
: Kunci klien untuk memanggil Pub/Sub API.TOPIC_ID
: ID topik Pub/Sub.
Memublikasikan embeddings yang dikumpulkan ke topik Pub/Sub
Contoh kode berikut mengilustrasikan cara memublikasikan embedding yang dikumpulkan ke topik Pub/Sub:
LOOP AT ....
lo_embeddings_model->gen_text_embeddings_by_struct( is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->collect( ).
ENDLOOP.
lo_embeddings_model->send_struct_to_pubsub( iv_key = 'CLIENT_KEY'
iv_topic_id = 'TOPIC_ID' ).
Ganti kode berikut:
CLIENT_KEY
: Kunci klien untuk memanggil Pub/Sub API.TOPIC_ID
: ID topik Pub/Sub.
Langkah selanjutnya
Pelajari pengembangan aplikasi dengan ABAP SDK for Google Cloud edisi lokal atau edisi cloud apa pun.
Ajukan pertanyaan dan diskusikan Vertex AI SDK untuk ABAP dengan komunitas nyala Forum Cloud.