Dokumen ini menjelaskan cara menggunakan Vertex AI Vector Search untuk melakukan penelusuran kemiripan vektor, menggunakan Vertex AI SDK untuk ABAP. Dengan Vector Search, Anda dapat menemukan titik data yang secara semantik mirip dalam set data besar menggunakan vektor berdimensi tinggi. Model ini unggul dalam tugas seperti pengambilan gambar dan teks, dengan memprioritaskan makna daripada pencocokan kata kunci persis.
Penelusuran Vektor memungkinkan Anda memanfaatkan kekuatan data perusahaan untuk meningkatkan efisiensi, meningkatkan pengalaman pelanggan, dan mendapatkan keunggulan kompetitif. Hal ini dapat memberikan nilai yang signifikan bagi lingkungan SAP Anda, dengan memberikan manfaat seperti berikut:
Meningkatkan kemampuan penelusuran: Meningkatkan akurasi dan relevansi hasil penelusuran di seluruh data SAP dalam jumlah besar, termasuk informasi terstruktur dan tidak terstruktur yang tersebar di berbagai sistem. Hal ini mengarah pada pengambilan informasi yang lebih cepat dan lebih efektif dari data perusahaan yang relevan.
Dapatkan insight dari data tidak terstruktur: Gunakan Penelusuran Vektor untuk mengekstrak insight berharga dari data tidak terstruktur yang sebelumnya belum dimanfaatkan dalam sistem SAP, seperti data produk, data pelanggan, ulasan pelanggan, tiket dukungan, atau dokumen internal.
Meningkatkan pengalaman pelanggan: Berikan interaksi yang dipersonalisasi dan berbasis konteks dengan pelanggan menggunakan Penelusuran Vektor untuk rekomendasi produk, chatbot cerdas, dan aplikasi lain yang ditampilkan kepada pelanggan.
Sederhanakan proses bisnis: Optimalkan proses internal dengan menggunakan Vector Search untuk menemukan informasi yang relevan dengan cepat, mengidentifikasi pola, dan membuat keputusan berbasis data.
Mempercepat inovasi: Gabungkan Penelusuran Vektor dengan kemampuan Vertex AI lainnya, seperti AI generatif, untuk mengembangkan solusi baru dan inovatif yang mendorong pertumbuhan bisnis.
Cara menggunakan Vertex AI Vector Search
Pencocokan semantik menggunakan Vector Search dapat disederhanakan menjadi langkah-langkah berikut:
- Buat representasi penyematan data perusahaan Anda.
- Upload penyematan ke bucket Cloud Storage.
Buat indeks vektor dan kaitkan indeks vektor ke bucket Cloud Storage yang berisi penyematan. Anda dapat membuat dua jenis indeks, bergantung pada cara Anda berencana memperbaruinya dengan data terbaru:
- Indeks batch: Indeks batch digunakan saat Anda ingin memperbarui indeks dalam batch, dengan data yang telah disimpan selama jangka waktu tertentu, seperti data yang diproses setiap minggu atau bulanan.
- Indeks streaming: Indeks streaming digunakan jika Anda ingin data indeks diperbarui segera setelah data baru ditambahkan ke datastore.
Buat endpoint indeks dan deploy indeks vektor ke endpoint untuk menjalankan kueri guna mendapatkan rekomendasi atau hasil. Endpoint indeks berfungsi sebagai instance server yang menerima permintaan kueri untuk indeks Anda.
Buat kueri endpoint indeks menggunakan ID entitas, string penelusuran, atau penyematan.
Vertex AI SDK untuk ABAP mencakup semua aspek Vertex AI Vector Search ini bagi Anda untuk mem-build aplikasi Vector Search yang didukung Vertex AI di lingkungan ABAP.
Membuat dan mengelola indeks vektor
Bagian ini menjelaskan cara membuat dan mengelola indeks vektor menggunakan Vertex AI SDK untuk ABAP.
Sebelum memulai
Pastikan Anda atau administrator Anda telah menyelesaikan prasyarat berikut:
- Mengaktifkan Vertex AI API di project Google Cloud Anda.
- Siapkan autentikasi untuk mengakses Vertex AI API.
Menyiapkan embedding Anda
Anda harus menyiapkan embedding Anda. Untuk informasi tentang cara membuat penyematan untuk data perusahaan Anda menggunakan Vertex AI SDK untuk ABAP, lihat Membuat penyematan.
Mengupload penyematan ke Cloud Storage
Upload embedding Anda ke bucket Cloud Storage agar dapat mengaitkan embedding dengan indeks vektor. Meskipun telah membuat file penyematan di luar Google Cloud, Anda dapat mengupload file penyematan tersebut ke bucket Cloud Storage.
Untuk informasi tentang cara mengirim penyematan yang dihasilkan menggunakan Vertex AI SDK untuk ABAP ke bucket Cloud Storage, lihat Menyimpan penyematan di Cloud Storage.
Membuat instance class untuk indeks vektor
Untuk membuat dan mengelola indeks vektor, Anda dapat membuat instance
class /GOOG/CL_VECTOR_INDEX
. Anda membuat instance class dengan
meneruskan kunci klien yang dikonfigurasi untuk autentikasi.
DATA(lo_vector_index) = NEW /goog/cl_vector_index( iv_key_name = 'CLIENT_KEY' ).
Ganti CLIENT_KEY
dengan kunci klien yang dikonfigurasi untuk autentikasi.
Membuat indeks vektor
Untuk membuat indeks vektor, Anda dapat menggunakan metode CREATE_TREE_AH_INDEX
dari
class /GOOG/CL_VECTOR_INDEX
. Fungsi ini membuat indeks berdasarkan algoritma tree-AH.
lo_vector_index->create_tree_ah_index( iv_display_name = 'INDEX_NAME'
iv_description = 'INDEX_DESCRIPTION'
iv_location_id = 'LOCATION_ID'
iv_gcs_content_uri = 'CONTENT_URI'
iv_dimensions = 'DIMENSIONS'
iv_approximate_neighbors_count = 'NEIGHBORS_COUNT'
iv_index_update_method = 'INDEX_UPDATE_METHOD'
iv_distance_measure_type = 'DISTANCE_MEASURE_TYPE'
iv_shard_size = 'SHARD_SIZE'
iv_leaf_node_embedding_count = 'LEAF_NODE_EMBEDDING_COUNT'
iv_leaf_nodes_to_search = 'LEAF_NODE_TO_SEARCH'
iv_etag = 'ETAG'
iv_cloud_kms_encryption_key = 'KEY_FOR_ENCRYPTION' ).
Ganti kode berikut:
INDEX_NAME
: Nama tampilan indeks.INDEX_DESCRIPTION
: Deskripsi indeks.LOCATION_ID
: Region Google Cloud tempat Anda ingin menyimpan indeks. Untuk mengetahui informasi tentang lokasi yang tersedia, lihat Lokasi Vertex AI.CONTENT_URI
: URI bucket Cloud Storage yang berisi penyematan, yang digunakan untuk membuat indeks.DIMENSIONS
: Jumlah dimensi vektor input.NEIGHBORS_COUNT
: Jumlah tetangga yang akan ditemukan melalui perkiraan penelusuran sebelum pengurutan ulang dilakukan.INDEX_UPDATE_METHOD
: Mode pembaruan indeks:BATCH_UPDATE
atauSTREAM_UPDATE
.DISTANCE_MEASURE_TYPE
: Menentukan algoritma yang digunakan untuk penghitungan jarak antara titik data dan vektor kueri. Untuk mengetahui informasi selengkapnya, lihat Jenis pengukuran jarak.SHARD_SIZE
: Ukuran setiap shard. Jika besar, indeks akan di-shard berdasarkan ukuran shard yang ditentukan. Selama penayangan, setiap shard ditayangkan di node terpisah dan diskalakan secara independen.LEAF_NODE_EMBEDDING_COUNT
: Jumlah penyematan pada setiap node daun. Nilai defaultnya adalah1000
, jika tidak ditetapkan.LEAF_NODE_TO_SEARCH
: Persentase default node daun tempat kueri apa pun dapat ditelusuri. Harus dalam rentang 1-100, inklusif. Nilai defaultnya adalah10
(berarti10%
), jika tidak ditetapkan.ETAG
: Nilai ETag untuk melakukan pembaruan baca-ubah-tulis yang konsisten.KEY_FOR_ENCRYPTION
: ID resource Cloud KMS kunci enkripsi yang dikelola pelanggan.
Membuat endpoint indeks vektor
Untuk membuat endpoint indeks vektor, Anda dapat menggunakan metode CREATE_INDEX_ENDPOINT
dari class /GOOG/CL_VECTOR_INDEX
.
lo_vector_index->create_index_endpoint( iv_display_name = 'INDEX_ENDPOINT_NAME'
iv_description = 'INDEX_ENDPOINT_DESCRIPTION'
iv_location_id = 'LOCATION_ID'
iv_public_endpoint_enabled = 'ENABLE_PUBLIC_ENDPOINT'
iv_etag = 'ETAG'
iv_cloud_kms_encryption_key = 'KEY_FOR_ENCRYPTION' ).
Ganti kode berikut:
INDEX_ENDPOINT_NAME
: Nama tampilan endpoint indeks.INDEX_ENDPOINT_DESCRIPTION
: Deskripsi endpoint indeks.LOCATION_ID
: Region Google Cloud tempat Anda ingin membuat endpoint indeks. Untuk mengetahui informasi tentang lokasi yang tersedia, lihat Lokasi Vertex AI.ENABLE_PUBLIC_ENDPOINT
: Jika indeks yang di-deploy dapat diakses melalui endpoint publik, tetapkan nilai parameter ini keABAP_TRUE
.ETAG
: Nilai ETag untuk melakukan pembaruan baca-ubah-tulis yang konsisten.KEY_FOR_ENCRYPTION
: ID resource Cloud KMS kunci enkripsi yang dikelola pelanggan.
Men-deploy indeks vektor ke endpoint indeks
Untuk men-deploy indeks vektor ke endpoint indeks, Anda dapat menggunakan metode DEPLOY_INDEX
dari class /GOOG/CL_VECTOR_INDEX
.
lo_vector_index->deploy_index( iv_deployed_index_id = 'DEPLOYMENT_ID'
iv_location_id = 'LOCATION_ID'
iv_index_id = 'INDEX_ID'
iv_index_endpoint_id = 'INDEX_ENDPOINT_ID>'
iv_min_replica_count = 'MIN_REPLICA_COUNT'
iv_max_replica_count = 'MAX_REPLICA_COUNT'
iv_enable_access_logging = 'ENABLE_ACCESS_LOGGING'
iv_deployment_group = 'DEPLOYMENT_GROUP' ).
Ganti kode berikut:
DEPLOYMENT_ID
: ID deployment indeks.LOCATION_ID
: Region Google Cloud tempat Anda ingin men-deploy indeks. Untuk mengetahui informasi tentang lokasi yang tersedia, lihat Lokasi Vertex AI.INDEX_ID
: Nama resource indeks.INDEX_ENDPOINT_ID
: Nama resource endpoint indeks tempat deployment akan dilakukan.MIN_REPLICA_COUNT
: Jumlah minimum replika mesin untuk model yang di-deploy.MAX_REPLICA_COUNT
: Jumlah maksimum replika mesin untuk model yang di-deploy.ENABLE_ACCESS_LOGGING
: Untuk mengirim log akses endpoint pribadi ke Cloud Logging, tetapkan nilai parameter ini keABAP_TRUE
.DEPLOYMENT_GROUP
: Nama grup deployment, misalnya,test
,prod
.
Memperbarui dan mem-build ulang indeks vektor
Untuk mendapatkan hasil Vector Search yang paling akurat untuk solusi AI perusahaan, Anda juga harus terus memperbarui indeks dengan data perusahaan terbaru.
Memperbarui indeks batch
Untuk memperbarui indeks batch dengan informasi terbaru yang ada di bucket Cloud Storage, Anda dapat menggunakan metode PATCH_TREE_AH_INDEX
dari class /GOOG/CL_VECTOR_INDEX
.
lo_vector_index->patch_tree_ah_index( iv_index_id = 'INDEX_ID'
iv_gcs_content_uri = 'CONTENT_URI'
iv_location_id = 'LOCATION_ID'
iv_is_complete_overwrite = 'IS_COMPLETE_OVERWRITE' ).
Ganti kode berikut:
INDEX_ID
: Nama resource indeks.CONTENT_URI
: URI bucket Cloud Storage yang memiliki penyematan untuk data perusahaan terbaru.LOCATION_ID
: Region Google Cloud indeks.IS_COMPLETE_OVERWRITE
: Untuk sepenuhnya menimpa indeks dengan data di bucket Cloud Storage tertentu, tetapkan nilai parameter ini keABAP_TRUE
.
Anda dapat menggunakan contoh alur arsitektur berikut untuk memperbarui indeks batch dengan data SAP:
- Perbarui bucket Cloud Storage dengan penyematan untuk data terbaru
menggunakan class
/GOOG/CL_STORAGE_V1
, melalui tugas latar belakang SAP. Untuk data non-SAP, hal ini juga dapat dilakukan melalui proses di luar SAP. - Memicu pembaruan indeks batch menggunakan metode
PATCH_TREE_AH_INDEX
class/GOOG/CL_VECTOR_INDEX
, melalui tugas latar belakang di SAP, yang berjalan pada frekuensi tertentu.
Memperbarui indeks aliran data
Untuk memperbarui dan memasukkan informasi untuk titik data untuk indeks aliran data,
Anda dapat menggunakan metode UPSERT_DATAPOINTS
dari class /GOOG/CL_VECTOR_INDEX
.
lo_vector_index->upsert_datapoints( iv_index_id = 'INDEX_ID'
iv_location_id = 'LOCATION_ID'
iv_datapoint_id = 'ENTITY_ID'
it_embeddings = 'EMBEDDINGS' ).
Ganti kode berikut:
INDEX_ID
: Nama resource indeks.LOCATION_ID
: Region Google Cloud indeks.ENTITY_ID
: ID entity yang akan diupdate dan dimasukkan.EMBEDDINGS
: Penyematan untuk memperbarui dan menyisipkan titik data.
Untuk menghapus informasi titik data dari indeks aliran data,
Anda dapat menggunakan metode REMOVE_DATAPOINTS
dari class /GOOG/CL_VECTOR_INDEX
.
lo_vector_index->remove_datapoints( iv_index_id = 'INDEX_ID'
iv_location_id = 'LOCATION_ID'
iv_datapoint_id = 'ENTITY_ID' ).
Ganti kode berikut:
INDEX_ID
: Nama resource indeks.LOCATION_ID
: Region Google Cloud indeks.ENTITY_ID
: ID entity yang akan dihapus.
Operasi upsert dan hapus dilakukan secara real time untuk indeks.
Anda dapat menggunakan contoh alur arsitektur berikut untuk memperbarui indeks streaming dengan data SAP:
- Identifikasi placeholder dalam solusi SAP perusahaan Anda, seperti BADI, exit, peningkatan, dan logika SAP kustom, yang merupakan titik untuk perubahan data SAP.
- Picu operasi penyisipan atau penghapusan untuk data SAP dari indeks streaming menggunakan metode
UPSERT_DATAPOINTS
danREMOVE_DATAPOINTS
dari class/GOOG/CL_VECTOR_INDEX
, dari placeholder yang Anda identifikasi.
Mendapatkan status operasi indeks vektor
Google Cloud melakukan hal berikut sebagai operasi yang berjalan lama: pembuatan indeks vektor dan endpoint indeks, deployment indeks ke endpoint indeks, atau pembaruan indeks batch vektor.
Untuk menentukan ID operasi yang berjalan lama, ID resource artefak Vertex AI, dan pesan error, SDK menyediakan class /GOOG/CL_VECTORINDEX_RESPONSE
.
Respons yang diambil oleh class /GOOG/CL_VECTORINDEX_RESPONSE
dirantai
ke permintaan yang dibuat melalui metode class /GOOG/CL_VECTOR_INDEX
,
sehingga Anda dapat langsung mengakses respons dalam satu pernyataan tanpa
memerlukan variabel untuk menyimpan hasil perantara.
Mendapatkan ID operasi yang berjalan lama
Untuk mendapatkan ID operasi yang berjalan lama untuk setiap tugas penelusuran vektor, Anda dapat menggunakan metode GET_LRO
dari class /GOOG/CL_VECTORINDEX_RESPONSE
.
Setelah menjalankan tugas, Anda dapat memanggil metode GET_LRO
dengan instance yang sama
untuk mendapatkan ID operasi yang berjalan lama yang sesuai.
Contoh kode berikut menggambarkan cara mendapatkan ID operasi yang berjalan lama untuk tugas pembaruan indeks batch:
DATA(lv_patch_index_lro) = lo_vector_index->patch_tree_ah_index(
iv_index_id = 'INDEX_ID'
iv_gcs_content_uri = 'CONTENT_URI'
iv_location_id = 'LOCATION_ID'
iv_is_complete_overwrite = 'IS_COMPLETE_OVERWRITE'
)->get_lro( ).
Ganti kode berikut:
INDEX_ID
: Nama resource indeks.CONTENT_URI
: URI bucket Cloud Storage yang memiliki penyematan untuk data perusahaan terbaru.LOCATION_ID
: Region Google Cloud indeks.IS_COMPLETE_OVERWRITE
: Untuk sepenuhnya menimpa indeks dengan data di bucket Cloud Storage tertentu, tetapkan nilai parameter ini keABAP_TRUE
.
Mendapatkan status operasi yang berjalan lama
Setiap operasi yang berjalan lama memiliki status yang terkait dengannya. Untuk memvalidasi apakah tugas yang dijadwalkan sebagai operasi yang berjalan lama berhasil atau tidak, Anda dapat memeriksa status operasi.
Untuk menentukan atau terus memantau status operasi yang berjalan lama untuk
tugas terkait Vertex AI, Anda dapat menggunakan metode GET_LRO_STATUS
dari class /GOOG/CL_VERTEX_AI_SDK_UTILITY
.
/goog/cl_vertex_ai_sdk_utility=>get_lro_status(
EXPORTING
iv_key = 'CLIENY_KEY'
iv_operations_id = 'LONG_RUNNING_OPERATION_ID'
iv_location_id = 'LOCATION_ID'
IMPORTING
ev_is_done = DATA(lv_is_done) "Is the long-running operation complete
ev_is_successful = DATA(lv_is_successful) "Is the long-running operation successful
ev_error_code = DATA(lv_error_code) "Error code in the long-running operation in case of errors
ev_error_message = DATA(lv_error_message) ). "Error message in the long-running operation in case of errors
Ganti kode berikut:
CLIENY_KEY
: Kunci klien untuk autentikasi.LONG_RUNNING_OPERATION_ID
: ID operasi yang berjalan lama.LOCATION_ID
: Region Google Cloud indeks.
Mendapatkan ID resource artefak Vertex AI
Untuk menentukan ID resource indeks yang dibuat, endpoint indeks yang dibuat,
indeks yang di-deploy, ID indeks yang dipicu patch, Anda dapat menggunakan
metode GET_ID
dari class /GOOG/CL_VECTORINDEX_RESPONSE
.
Setelah menjalankan tugas, Anda dapat memanggil metode GET_ID
dengan instance yang sama
untuk mendapatkan ID resource yang sesuai.
Contoh kode berikut mengilustrasikan cara mendapatkan ID indeks yang dibuat
setelah memanggil metode CREATE_TREE_AH_INDEX
dari class /GOOG/CL_VECTOR_INDEX
:
DATA(lv_id) = lo_vector_index->create_tree_ah_index(
iv_display_name = 'INDEX_NAME'
iv_location_id = 'LOCATION_ID'
iv_gcs_content_uri = 'CONTENT_URI'
iv_dimensions = 'DIMENSIONS'
iv_approximate_neighbors_count = 'NEIGHBORS_COUNT'
iv_leaf_node_embedding_count = 'LEAF_NODE_EMBEDDING_COUNT'
iv_leaf_nodes_to_search = 'LEAF_NODE_TO_SEARCH'
)->get_id( ).
Ganti kode berikut:
INDEX_NAME
: Nama tampilan indeks.LOCATION_ID
: Region Google Cloud indeks.CONTENT_URI
: URI bucket Cloud Storage yang berisi penyematan, yang digunakan untuk membuat indeks.DIMENSIONS
: Jumlah dimensi vektor input.NEIGHBORS_COUNT
: Tetangga yang akan ditemukan melalui perkiraan penelusuran sebelum pengurutan ulang dilakukan.LEAF_NODE_EMBEDDING_COUNT
: Jumlah penyematan pada setiap node daun. Nilai defaultnya adalah1000
, jika tidak ditetapkan.LEAF_NODE_TO_SEARCH
: Persentase default node daun tempat kueri apa pun dapat ditelusuri. Harus dalam rentang 1-100, inklusif. Nilai defaultnya adalah10
(berarti10%
), jika tidak ditetapkan.
Mendapatkan kode error dan pesan error
Error dapat terjadi selama pemicu tugas indeks vektor melalui Vertex AI SDK untuk ABAP.
Untuk mendapatkan kode error dan pesan error (jika ada) setelah pemicu
tugas, Anda dapat menggunakan metode GET_ERROR_CODE
dan GET_ERROR_MESSAGE
dari class `/GOOG/CL_VECTORINDEX_RESPONSE
.
Setelah menjalankan tugas, Anda dapat memanggil metode GET_ERROR_CODE
dan GET_ERROR_MESSAGE
dengan instance yang sama untuk mendapatkan kode error atau pesan error yang sesuai.
Contoh kode berikut menggambarkan cara menampilkan kode error dan pesan error jika pembuatan indeks gagal:
DATA(lo_vectorindex_response) = lo_vector_index->create_tree_ah_index(
iv_display_name = 'INDEX_NAME'
iv_location_id = 'LOCATION_ID'
iv_gcs_content_uri = 'CONTENT_URI'
iv_dimensions = 'DIMENSIONS'
iv_approximate_neighbors_count = 'NEIGHBORS_COUNT'
iv_leaf_node_embedding_count = 'LEAF_NODE_EMBEDDING_COUNT'
iv_leaf_nodes_to_search = 'LEAF_NODE_TO_SEARCH' ).
IF lo_vectorindex_response->get_error_code( ) IS NOT INITIAL.
cl_demo_output=>display( 'Error Code-' && lo_vectorindex_response->get_error_code( ) &&
'Error Message-' && lo_vectorindex_response->get_error_message( ) ).
ENDIF.
Ganti kode berikut:
INDEX_NAME
: Nama tampilan indeks.LOCATION_ID
: Region Google Cloud indeks.CONTENT_URI
: URI bucket Cloud Storage yang berisi penyematan, yang digunakan untuk membuat indeks.DIMENSIONS
: Jumlah dimensi vektor input.NEIGHBORS_COUNT
: Tetangga yang akan ditemukan melalui perkiraan penelusuran sebelum pengurutan ulang dilakukan.LEAF_NODE_EMBEDDING_COUNT
: Jumlah penyematan pada setiap node daun. Nilai defaultnya adalah1000
, jika tidak ditetapkan.LEAF_NODE_TO_SEARCH
: Persentase default node daun tempat kueri apa pun dapat ditelusuri. Harus dalam rentang 1-100, inklusif. Nilai defaultnya adalah10
(berarti10%
), jika tidak ditetapkan.
Menelusuri tetangga terdekat
Bagian ini menjelaskan cara menelusuri tetangga terdekat menggunakan Vertex AI SDK untuk ABAP.
Sebelum memulai
Pastikan Anda atau administrator Anda telah menyelesaikan prasyarat berikut:
- Mengaktifkan Vertex AI API di project Google Cloud Anda.
- Siapkan autentikasi untuk mengakses Vertex AI API.
- Mengonfigurasi parameter Vector Search.
Membuat tujuan RFC
Anda perlu membuat tujuan RFC untuk endpoint indeks tempat Anda telah men-deploy indeks yang memiliki data perusahaan dalam bentuk file penyematan.
Ambil nama host untuk endpoint indeks:
-
Di SAP GUI, jalankan kode transaksi
/GOOG/SDK_IMG
.Atau, jalankan kode transaksi
SPRO
, lalu klik IMG Referensi SAP. - Klik ABAP SDK for Google Cloud > Utilities > Vertex AI SDK: Get RFC information for Feature Store and Vector Search.
- Pilih Dapatkan Detail Penelusuran Vektor.
Pilih salah satu opsi berikut:
- Tombol penelusuran
- ID endpoint indeks vektor
Jika Anda telah memilih opsi Kunci penelusuran, masukkan kunci penelusuran, yang dikonfigurasi di parameter Penelusuran Vektor.
Jika Anda telah memilih opsi ID endpoint indeks vektor, masukkan parameter berikut:
- Nama Kunci Google Cloud: Kunci klien untuk autentikasi ke Google Cloud.
- Lokasi: Region tempat endpoint indeks berada.
- Index Endpoint ID: Nama endpoint indeks.
Klik Execute untuk melihat detailnya. Catat endpoint terhadap label Host.
-
Di SAP GUI, jalankan kode transaksi
Buat tujuan RFC untuk endpoint indeks:
Di SAP GUI, jalankan kode transaksi
SM59
.Buat tujuan RFC baru. Untuk tujuan RFC yang Anda buat, pastikan Connection Type ditetapkan sebagai berikut:
G - HTTP connection to external server
.Buka tab Technical Settings dan masukkan detail berikut:
Target Host: Berikan nama host untuk endpoint indeks.
No.Service: Masukkan
443
. Nomor port ini digunakan untuk komunikasi yang aman.
Buka tab Logon & Security, lalu pastikan kolom SSL Certificate ditetapkan dengan opsi DFAULT SSL Client (Standard).
Simpan perubahan Anda.
Konfigurasikan tabel pemetaan layanan untuk Vertex AI API:
Di SAP GUI, jalankan kode transaksi
/GOOG/SDK_IMG
.Atau, jalankan kode transaksi
SPRO
, lalu klik IMG Referensi SAP.Klik ABAP SDK for Google Cloud > Basic Settings > Configure Service Mapping.
Klik New Entries.
Tentukan tujuan RFC untuk Vertex AI API:
Nama Nama Layanan RFC Destination Kunci klien untuk autentikasi. apiinvoker:v1
Nama tujuan RFC. Simpan entri baru.
Membuat instance class untuk Vector Search
Untuk memanggil Vector Search, Anda dapat membuat instance
class /GOOG/CL_VECTOR_SEARCH
. Anda membuat instance class dengan
meneruskan kunci penelusuran, yang dikonfigurasi di parameter Vektor Search.
DATA(lo_vector_search) = NEW /goog/cl_vector_search( iv_search_name = 'SEARCH_KEY' ).
Ganti SEARCH_KEY
dengan kunci penelusuran, yang dikonfigurasi di parameter Vektor Search.
Menelusuri menggunakan ID entitas
Untuk membuat kueri indeks vektor sehubungan dengan ID entity tertentu,
Anda dapat menggunakan metode FIND_NEIGHBORS_BY_ENTITY_ID
dari
class /GOOG/CL_VECTOR_SEARCH
.
ID entity sesuai dengan titik data yang disimpan dalam indeks vektor Anda.
lo_vector_search->find_neighbors_by_entity_id( iv_entity_id = 'ENTITY_ID'
iv_neighbor_count = 'NEIGHBOR_COUNT'
iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT' ).
Ganti kode berikut:
ENTITY_ID
: ID entity yang akan ditelusuri.NEIGHBOR_COUNT
: Jumlah tetangga terdekat yang akan diambil untuk kueri.RETURN_FULL_DATAPOINT
: Untuk menampilkan penyematan vektor untuk titik data yang diambil, tetapkan nilai parameter ini keABAP_TRUE
.
Menelusuri menggunakan string penelusuran
Untuk membuat kueri indeks vektor sehubungan dengan string penelusuran, Anda dapat menggunakan
metode FIND_NEIGHBORS_BY_STRING
dari class /GOOG/CL_VECTOR_SEARCH
.
SDK pertama-tama mengonversi string penelusuran Anda menjadi penyematan, lalu mengambil tetangga terdekat untuk kueri.
DATA(lo_response) = lo_vector_search->find_neighbors_by_string(
iv_search_string = 'SEARCH_STRING'
iv_embeddings_model_key = 'MODEL_KEY'
iv_neighbor_count = 'NEIGHBOR_COUNT'
iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT' ).
Ganti kode berikut:
SEARCH_STRING
: Input string penelusuran.MODEL_KEY
: Kunci model untuk membuat penyematan, yang dikonfigurasi di parameter pembuatan model.NEIGHBOR_COUNT
: Jumlah tetangga terdekat yang akan diambil untuk kueri.RETURN_FULL_DATAPOINT
: Untuk menampilkan penyematan vektor untuk titik data yang diambil, tetapkan nilai parameter ini keABAP_TRUE
.
Menelusuri menggunakan penyematan
Untuk mengkueri indeks vektor sehubungan dengan penyematan, Anda dapat menggunakan
metode FIND_NEIGHBORS_BY_EMBEDDING
dari class /GOOG/CL_VECTOR_SEARCH
.
DATA(lo_response) = lo_vector_search->find_neighbors_by_embeddings(
iv_neighbor_count = 'NEIGHBOR_COUNT'
iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT'
it_embeddings = 'EMBEDDINGS' ).
Ganti kode berikut:
NEIGHBOR_COUNT
: Jumlah tetangga terdekat yang akan diambil untuk kueri.RETURN_FULL_DATAPOINT
: Untuk menampilkan penyematan vektor untuk titik data yang diambil, tetapkan nilai parameter ini keABAP_TRUE
.EMBEDDINGS
: Input embedding.
Mendapatkan respons penelusuran
Untuk menerima respons yang diproses dari model dan menampilkannya dengan cara yang bermakna, SDK menyediakan class ABAP /GOOG/CL_VECTORSEARCH_RESPONSE
.
Respons yang diambil oleh class /GOOG/CL_VECTORSEARCH_RESPONSE
dirantai
ke permintaan yang dibuat melalui metode class /GOOG/CL_VECTOR_SEARCH
,
sehingga Anda dapat langsung mengakses respons dalam satu pernyataan tanpa memerlukan
variabel untuk menyimpan hasil perantara.
Mendapatkan tetangga terdekat untuk kueri penelusuran
Untuk menentukan tetangga terdekat yang ditemukan untuk kueri penelusuran yang dijalankan
sehubungan dengan titik data, string penelusuran, atau penyematan, Anda dapat menggunakan
metode GET_NEAREST_NEIGHBOR
dan GET_NEAREST_NEIGHBORS
dari class
/GOOG/CL_VECTORSEARCH_RESPONSE
.
Metode ini dapat dipanggil dalam rantai setelah menjalankan kueri penelusuran
menggunakan metode FIND_NEIGHBORS_BY_STRING
, FIND_NEIGHBORS_BY_EMBEDDING
,
dan FIND_NEIGHBORS_BY_ENTITY_ID
dari class /GOOG/CL_VECTOR_SEARCH
.
Untuk mendapatkan tetangga terdekat yang paling dekat dengan titik data, string, atau penyematan yang ditelusuri, panggil metode
GET_NEAREST_NEIGHBOR
. Respons metode ini mencantumkan ID titik data terdekat, jaraknya dari kueri penelusuran, dan vektor fitur yang terkait dengannya dalam indeks.Contoh kode berikut mengilustrasikan cara mendapatkan tetangga terdekat untuk string penelusuran:
DATA(ls_nearest_neighbor) = lo_vector_search->find_neighbors_by_string( iv_search_string = 'SEARCH_STRING' iv_embeddings_model_key = 'MODEL_KEY' iv_neighbor_count = 'NEIGHBOR_COUNT' iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT' )->get_nearest_neighbor( ).
Ganti kode berikut:
SEARCH_STRING
: Input string penelusuran.MODEL_KEY
: Kunci model untuk membuat penyematan, yang dikonfigurasi di parameter pembuatan model.NEIGHBOR_COUNT
: Jumlah tetangga terdekat yang akan diambil untuk kueri.RETURN_FULL_DATAPOINT
: Untuk menampilkan penyematan vektor untuk titik data yang diambil, tetapkan nilai parameter ini keABAP_TRUE
.
Untuk mendapatkan kumpulan tetangga terdekat yang paling dekat dengan titik data, string, atau penyematan yang ditelusuri, panggil metode
GET_NEAREST_NEIGHBORS
. Respons metode ini adalah tabel titik data terdekat, yang mencantumkan ID titik data, jaraknya dari kueri penelusuran, dan vektor fitur yang terkait dengan titik data tersebut dalam indeks.Contoh kode berikut mengilustrasikan cara mendapatkan tetangga terdekat untuk string penelusuran:
DATA(lt_nearest_neighbors) = lo_vector_search->find_neighbors_by_string( iv_search_string = 'SEARCH_STRING' iv_embeddings_model_key = 'MODEL_KEY' iv_neighbor_count = 'NEIGHBOR_COUNT' iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT' )->get_nearest_neighbors( ).
Ganti kode berikut:
SEARCH_STRING
: Input string penelusuran.MODEL_KEY
: Kunci model untuk membuat penyematan, yang dikonfigurasi di parameter pembuatan model.NEIGHBOR_COUNT
: Jumlah tetangga terdekat yang akan diambil untuk kueri.RETURN_FULL_DATAPOINT
: Untuk menampilkan penyematan vektor untuk titik data yang diambil, tetapkan nilai parameter ini keABAP_TRUE
.
Mendapatkan jarak tetangga yang diambil
Untuk menentukan jarak respons yang diambil dari kueri yang ditelusuri, Anda dapat
menggunakan metode GET_DATAPOINT_DISTANCE
dari class /GOOG/CL_VECTORSEARCH_RESPONSE
.
Jarak dalam respons penelusuran mewakili ukuran ketidaksamaan antara kueri (string, penyematan, atau ID entitas) dan vektor hasil yang diambil. Makna spesifik jarak bergantung pada "Ukuran Jarak" yang digunakan saat membuat indeks.
Nilai jarak membantu Anda memahami seberapa relevan setiap hasil penelusuran dengan kueri Anda. Hasil dengan jarak yang lebih rendah umumnya dianggap lebih mirip atau relevan, sedangkan hasil dengan jarak yang lebih tinggi kurang mirip atau relevan.
Contoh kode berikut mengilustrasikan cara mendapatkan jarak tetangga terdekat untuk string penelusuran:
DATA(lo_vectorsearch_response) = lo_vector_search->find_neighbors_by_string(
iv_search_string = 'SEARCH_STRING'
iv_embeddings_model_key = 'MODEL_KEY'
iv_neighbor_count = 'NEIGHBOR_COUNT'
iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT' ).
DATA(ls_nearest_neighbor) = lo_vectorsearch_response->get_nearest_neighbor( ).
DATA(lv_distance) = lo_vectorsearch_response->get_datapoint_distance( iv_datapoint_id = ls_nearest_neighbor-datapoint_id ).
Ganti kode berikut:
SEARCH_STRING
: Input string penelusuran.MODEL_KEY
: Kunci model untuk membuat penyematan, yang dikonfigurasi di parameter pembuatan model.NEIGHBOR_COUNT
: Jumlah tetangga terdekat yang akan diambil untuk kueri.RETURN_FULL_DATAPOINT
: Untuk menampilkan penyematan vektor untuk titik data yang diambil, tetapkan nilai parameter ini keABAP_TRUE
.
Mendapatkan vektor embedding dari tetangga yang diambil
Untuk menentukan vektor penyematan respons yang diambil dari
kueri yang ditelusuri, Anda dapat menggunakan metode GET_DATAPOINT_FEATURE_VECTOR
dari class /GOOG/CL_VECTORSEARCH_RESPONSE
.
Untuk mendapatkan vektor penyematan, parameter IV_RETURN_FULL_DATAPOINT
dari metode
FIND_NEIGHBORS_BY_STRING
, FIND_NEIGHBORS_BY_EMBEDDING
,
dan FIND_NEIGHBORS_BY_ENTITY_ID
harus ditetapkan ke ABAP_TRUE
.
Contoh kode berikut menggambarkan cara mendapatkan vektor fitur tetangga terdekat untuk string penelusuran:
DATA(lo_vectorsearch_response) = lo_vector_search->find_neighbors_by_string(
iv_search_string = 'SEARCH_STRING'
iv_embeddings_model_key = 'MODEL_KEY'
iv_neighbor_count = 'NEIGHBOR_COUNT'
iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT' ).
DATA(ls_nearest_neighbor) = lo_vectorsearch_response->get_nearest_neighbor( ).
DATA(lt_feature_vector) = lo_vectorsearch_response->get_datapoint_feature_vector( iv_datapoint_id = ls_nearest_neighbor-datapoint_id ).
Ganti kode berikut:
SEARCH_STRING
: Input string penelusuran.MODEL_KEY
: Kunci model untuk membuat penyematan, yang dikonfigurasi di parameter pembuatan model.NEIGHBOR_COUNT
: Jumlah tetangga terdekat yang akan diambil untuk kueri.RETURN_FULL_DATAPOINT
: Untuk menampilkan penyematan vektor untuk titik data yang diambil, tetapkan nilai parameter ini keABAP_TRUE
.
Langkah selanjutnya
Pelajari terminologi Vector Search.
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.