Dokumen ini menjelaskan cara memanggil model penyematan untuk menghasilkan teks dan penyematan 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, bahkan mengenali makna dan hubungan yang paling kompleks 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 yang atribut teksnya paling tidak berkaitan dengan teks yang diberikan.
- Antarmuka percakapan: Mengelompokkan grup kalimat yang dapat menyebabkan respons serupa, seperti dalam ruang sematan tingkat percakapan.
Dengan Vertex AI SDK untuk ABAP, Anda dapat membuat penyematan dari logika aplikasi ABAP menggunakan class dan metode yang disertakan dengan SDK. SDK juga menyediakan metode siap pakai untuk mendorong penyematan yang dihasilkan ke datastore berikut:
- Cloud Storage: Anda dapat menggunakan penyematan dari bucket Cloud Storage untuk membuat indeks vektor dan melakukan Vector Search.
- BigQuery: Anda dapat menggunakan penyematan dari set data BigQuery sebagai database vektor untuk data perusahaan Anda.
Anda juga dapat memublikasikan penyematan ke topik Pub/Sub yang dapat diarahkan ke set data BigQuery atau ke sistem pelanggan.
Sebelum memulai
Sebelum menggunakan Vertex AI SDK untuk ABAP dengan model penyematan, pastikan 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 membuat penyematan, hanya parameter berikut yang diperlukan: Kunci Model, ID Model, Nama Kunci Google Cloud, ID Lokasi Wilayah Google Cloud, dan ID Penayang LLM.
Membuat embedding
Bagian ini menjelaskan cara membuat penyematan menggunakan Vertex AI SDK untuk ABAP.
Membuat instance class embeddings multimodal
Untuk memanggil model
embedding multimodal Vertex AI menggunakan input teks atau multimodal, Anda dapat
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
dalam parameter pembuatan model.
Membuat embedding teks
Untuk membuat penyematan untuk cuplikan teks, Anda dapat menggunakan
metode GEN_TEXT_EMBEDDINGS
dari class /GOOG/CL_EMBEDDINGS_MODEL
.
Anda juga dapat menentukan dimensi untuk penyematan output secara opsional.
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-nya adalah768
.INPUT_TEXT
: Teks yang akan dibuatkan embedding-nya.
Anda juga dapat membuat penyematan untuk cuplikan teks menggunakan template /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
yang siap pakai, yang dikirimkan bersama SDK.
Template ini memungkinkan Anda mengambil informasi skema khusus perusahaan
dalam file penyematan yang dihasilkan beserta penyematan.
Untuk membuat penyematan untuk cuplikan teks, berdasarkan template /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_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-nya.SOURCE_MODULE
: Modul sumber konten penyematan.DIMENSION
: Opsional. Dimensi penyematan output. Dimensi default-nya adalah768
.
Membuat embedding gambar
Untuk membuat penyematan gambar input, Anda dapat menggunakan metode GEN_IMAGE_EMBEDDINGS
dari class /GOOG/CL_EMBEDDINGS_MODEL
.
Anda dapat meneruskan data mentah
gambar atau URI Cloud Storage file gambar.
Anda juga dapat menentukan teks kontekstual untuk gambar dan dimensi
untuk penyematan output secara opsional.
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 gambar target yang akan diberikan embedding.CONTEXTUAL_TEXT
: Opsional. Konteks dan makna tambahan untuk konten gambar ke model penyematan.
Anda juga dapat membuat penyematan untuk gambar menggunakan template /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
yang siap pakai, yang dikirimkan dengan SDK.
Template ini memungkinkan Anda mengambil informasi skema khusus perusahaan
dalam file penyematan yang dihasilkan beserta penyematan.
Untuk membuat penyematan gambar, berdasarkan template
/GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_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-nya.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 satu gambar.
Membuat embedding video
Untuk membuat penyematan video input, Anda dapat menggunakan metode 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 penyematan output secara opsional.
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
: Cloud Storage URI video target untuk mendapatkan penyematan.CONTEXTUAL_TEXT
: Opsional. Konteks dan makna tambahan untuk konten video ke model penyematan.DIMENSION
: Opsional. Dimensi penyematan output. Dimensi yang tersedia adalah:128
,256
,512
, dan1408
(default).
Metode GET_VECTOR
hanya menampilkan penyematan untuk
segmen pertama video.
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 video tunggal.
Mengumpulkan semua penyematan yang dihasilkan
Untuk mengumpulkan semua penyematan yang dihasilkan dalam tabel internal jenis
/GOOG/CL_EMBEDDINGS_MODEL=>TY_T_EMBEDDINGS_TEMPLATE
, Anda dapat menggunakan metode COLLECT
dari class /GOOG/CL_EMBEDDINGS_MODEL
bersama dengan metode GEN_TEXT_EMBEDDINGS_BY_STRUCT
dan GEN_IMAGE_EMBEDDINGS_BY_STRUCT
.
Hal ini berguna jika Anda memiliki persyaratan untuk membuat penyematan untuk
array item (text/image
), dan Anda ingin membuat penyematan
dalam iterasi loop dan mendapatkan semua penyematan sekaligus dalam tabel internal setelah
iterasi. 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 penyematan ke datastore
Anda dapat mengirim penyematan yang dihasilkan ke bucket Cloud Storage atau set data BigQuery menggunakan template yang disertakan dengan SDK.
Menyimpan penyematan 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 penyematan ke Cloud Storage, pastikan Anda memiliki bucket Cloud Storage yang ingin Anda kirimkan penyematan.
Mengirim setiap penyematan ke bucket Cloud Storage
Contoh kode berikut mengilustrasikan cara mengirim penyematan 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 gambar target yang akan diberikan embedding.CLIENT_KEY
: Kunci klien untuk memanggil Cloud Storage API.BUCKET_NAME
: Nama bucket Cloud Storage target.FILE_NAME
: Nama file penyematan.
Mengirimkan embedding yang dikumpulkan ke bucket Cloud Storage
Contoh kode berikut mengilustrasikan cara mengirim penyematan 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 penyematan.
Menyimpan penyematan di BigQuery
Untuk mengirim penyematan 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 setiap penyematan ke set data BigQuery
Contoh kode berikut mengilustrasikan cara mengirim setiap penyematan gambar 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.
Mengirimkan 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 berguna
untuk skenario saat Anda perlu membuat pipeline kustom sendiri
untuk menyimpan penyematan dan membuat proses bisnis lanjutan.
Sebelum mengirim penyematan ke topik Pub/Sub, pastikan Anda memiliki topik Pub/Sub yang ingin Anda kirimi penyematan.
Memublikasikan setiap penyematan 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 penyematan yang dikumpulkan ke topik Pub/Sub
Contoh kode berikut mengilustrasikan cara memublikasikan penyematan 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 untuk Google Cloud edisi cloud atau on-premise.
Ajukan pertanyaan dan diskusikan Vertex AI SDK untuk ABAP dengan komunitas di Cloud Forums.