Dokumen ini menjelaskan cara menggunakan Vertex AI Vector Search untuk melakukan kesamaan vektor penelusuran, dengan menggunakan Vertex AI SDK untuk ABAP. Dengan Penelusuran Vektor, Anda dapat menemukan titik data yang mirip secara semantik dalam {i>dataset<i} besar dengan menggunakan dimensi vektor. 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 Anda untuk meningkatkan efisiensi, meningkatkan pengalaman pelanggan, dan mendapatkan keunggulan kompetitif. Ini dapat membawa nilai yang signifikan bagi lingkungan SAP, memberikan manfaat seperti hal berikut:
Meningkatkan kemampuan penelusuran: Meningkatkan akurasi dan relevansi penelusuran hasil di sejumlah besar data SAP, termasuk data terstruktur dan informasi tidak terstruktur yang tersebar di berbagai sistem yang berbeda. Ini mengarahkan untuk pengambilan informasi yang lebih cepat dan efektif dari data perusahaan yang relevan.
Mendapatkan insight dari data tidak terstruktur: Memanfaatkan Vector Search untuk mengekstrak wawasan 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.
Menyederhanakan proses bisnis: Optimalkan proses internal menggunakan Penelusuran Vektor untuk menemukan informasi yang relevan, mengidentifikasi pola, dan membuat keputusan berdasarkan data.
Mempercepat inovasi: Menggabungkan Vector Search 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 Penelusuran Vektor dapat disederhanakan menjadi langkah-langkah berikut:
- Buat representasi embedding dari data perusahaan.
- Upload penyematan ke bucket Cloud Storage.
Buat indeks vektor dan kaitkan indeks vektor dengan atribut Bucket Cloud Storage yang berisi embedding. Anda dapat membuat dua jenis indeks, tergantung pada bagaimana Anda berencana untuk memperbaruinya dengan data terbaru:
- Indeks batch: Indeks batch adalah saat Anda ingin memperbarui indeks secara file, dengan data yang telah disimpan selama jangka waktu tertentu, seperti data yang diproses secara mingguan atau bulanan.
- Indeks streaming: Indeks streaming digunakan saat Anda ingin data indeks diperbarui segera setelah data baru ditambahkan ke datastore Anda.
Membuat endpoint indeks dan men-deploy indeks vektor ke endpoint untuk menjalankan kueri untuk mendapatkan rekomendasi atau hasil. Endpoint indeks berfungsi sebagai 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 ini Vertex AI Vector Search untuk Anda untuk membangun Vertex AI aplikasi Vector Search berbasis di lingkungan ABAP Anda.
Membuat dan mengelola indeks vektor
Bagian ini menjelaskan cara membuat dan mengelola vektor indeks dengan 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 embedding Anda ke Cloud Storage
Upload embedding Anda ke bucket Cloud Storage agar dapat mengaitkan embedding dengan indeks vektor. Bahkan jika Anda telah membuat file penyematan di luar Google Cloud, Anda dapat dan mengupload file yang menyematkan tersebut ke bucket Cloud Storage.
Untuk mengetahui informasi tentang cara mengirim embedding yang dihasilkan dengan Vertex AI SDK untuk ABAP ke bucket Cloud Storage, lihat Menyimpan embedding 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
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 untuk menyimpan indeks. Untuk mengetahui informasi tentang lokasi yang tersedia, lihat Lokasi Vertex AI.CONTENT_URI
: URI bucket Cloud Storage berisi embeddings, 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 perhitungan jarak antara titik data dan vektor kueri. Untuk mengetahui informasi selengkapnya, lihat Jenis pengukuran jarak.SHARD_SIZE
: Ukuran setiap shard. Jika indeks berukuran besar, indeks tersebut akan di-sharding berdasarkan ukuran shard yang ditentukan. Selama penayangan, setiap shard disajikan pada node terpisah dan diskalakan secara independen.LEAF_NODE_EMBEDDING_COUNT
: Jumlah embedding pada setiap node daun. Nilai defaultnya adalah1000
, jika tidak ditetapkan.LEAF_NODE_TO_SEARCH
: Persentase default node daun bahwa kueri apa pun dapat ditelusuri. Harus dalam rentang 1-100, inklusif. Nilai defaultnya adalah10
(berarti10%
), jika tidak ditetapkan.ETAG
: Nilai ETag untuk melakukan update baca-modifikasi-tulis yang konsisten.KEY_FOR_ENCRYPTION
: Cloud KMS ID resource 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, lalu tetapkan nilai parameter ini keABAP_TRUE
.ETAG
: Nilai ETag untuk melakukan pembaruan baca-ubah-tulis yang konsisten.KEY_FOR_ENCRYPTION
: Cloud KMS ID resource 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 untuk 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 membuat ulang indeks vektor
Untuk mendapatkan hasil Penelusuran Vektor 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 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 memiliki embedding untuk data perusahaan terbaru.LOCATION_ID
: Region Google Cloud pada 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
dari 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 pada indeks.ENTITY_ID
: ID entity yang akan diupdate dan dimasukkan.EMBEDDINGS
: Embeddings 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 pada indeks.ENTITY_ID
: ID entity yang akan dihapus.
Operasi pembaruan dan penghapusan dilakukan secara real time untuk indeks.
Anda dapat menggunakan contoh alur arsitektur berikut untuk mengupdate aliran data dengan data SAP:
- Mengidentifikasi placeholder dalam solusi SAP perusahaan Anda, seperti BADI, keluar, peningkatan, dan logika SAP kustom, yang merupakan titik untuk perubahan data SAP.
- Picu operasi pembaruan dan penghapusan untuk data SAP dari indeks aliran data menggunakan
metode
UPSERT_DATAPOINTS
danREMOVE_DATAPOINTS
dari/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 mengilustrasikan 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 memiliki embedding untuk data perusahaan terbaru.LOCATION_ID
: Region Google Cloud pada indeks.IS_COMPLETE_OVERWRITE
: Untuk menimpa sepenuhnya indeks dengan data di bucket Cloud Storage tertentu, tetapkan parameter ini nilai 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 operasinya.
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 pada indeks.
Mendapatkan ID resource artefak Vertex AI
Untuk menentukan ID resource dari indeks yang dibuat, buat endpoint indeks,
indeks yang di-deploy, ID indeks yang patch-nya dipicu, Anda dapat menggunakan
Metode GET_ID
dari class /GOOG/CL_VECTORINDEX_RESPONSE
.
Setelah mengeksekusi 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 pada indeks.CONTENT_URI
: URI bucket Cloud Storage berisi embeddings, yang digunakan untuk membuat indeks.DIMENSIONS
: Jumlah dimensi vektor input.NEIGHBORS_COUNT
: Tetangga untuk mencari melalui perkiraan sebelum mengurutkan ulang dilakukan.LEAF_NODE_EMBEDDING_COUNT
: Jumlah embedding pada setiap node daun. Nilai defaultnya adalah1000
, jika tidak ditetapkan.LEAF_NODE_TO_SEARCH
: Persentase default node daun bahwa 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 mungkin 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 mengeksekusi tugas, Anda dapat memanggil 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 pada indeks.CONTENT_URI
: URI bucket Cloud Storage berisi embeddings, yang digunakan untuk membuat indeks.DIMENSIONS
: Jumlah dimensi vektor input.NEIGHBORS_COUNT
: Tetangga untuk mencari melalui perkiraan sebelum mengurutkan ulang dilakukan.LEAF_NODE_EMBEDDING_COUNT
: Jumlah embedding pada setiap node daun. Nilai defaultnya adalah1000
, jika tidak ditetapkan.LEAF_NODE_TO_SEARCH
: Persentase default node daun bahwa kueri apa pun dapat ditelusuri. Harus dalam rentang 1-100, inklusif. Nilai defaultnya adalah10
(berarti10%
), jika tidak ditetapkan.
Telusuri tetangga terdekat
Bagian ini menjelaskan cara menelusuri tetangga terdekat dengan 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 GUI SAP, jalankan kode transaksi
/GOOG/SDK_IMG
.Atau, jalankan kode transaksi
SPRO
, lalu klik SAP Reference IMG. - Klik ABAP SDK for Google Cloud > Utilitas > Vertex AI SDK: Dapatkan informasi RFC untuk Feature Store dan Vector Search.
- Pilih Dapatkan Detail Penelusuran Vektor.
Pilih salah satu opsi berikut:
- Tombol penelusuran
- ID endpoint indeks vektor
Jika telah memilih opsi Tombol penelusuran, masukkan kunci penelusuran yang dikonfigurasi di Parameter Penelusuran Vektor.
Jika Anda telah memilih opsi Vector index endpoint ID, masukkan parameter berikut:
- Nama Kunci Google Cloud: Kunci klien untuk autentikasi ke Google Cloud.
- Lokasi: Region tempat endpoint indeks berada.
- ID Endpoint Indeks: Nama endpoint indeks.
Klik Execute untuk melihat detailnya. Catat endpoint terhadap label Host.
-
Di GUI SAP, 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.
Nomor Layanan: Masukkan
443
. Nomor port ini digunakan untuk komunikasi yang aman.
Buka jendela Logon & Keamanan dan pastikan bahwa Sertifikat SSL ditetapkan dengan opsi DFAULT SSL Client (Standard).
Simpan perubahan Anda.
Konfigurasi tabel pemetaan layanan untuk Vertex AI API:
Di GUI SAP, jalankan kode transaksi
/GOOG/SDK_IMG
.Atau, jalankan kode transaksi
SPRO
, lalu klik SAP Reference IMG.Klik ABAP SDK for Google Cloud > Setelan Dasar > Konfigurasi Pemetaan Layanan.
Klik New Entries.
Tentukan tujuan RFC untuk Vertex AI API:
Nama Nama Layanan Tujuan RFC 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.
Telusuri menggunakan ID entitas
Untuk melakukan kueri indeks vektor sehubungan dengan ID entitas tertentu,
Anda dapat menggunakan metode FIND_NEIGHBORS_BY_ENTITY_ID
Class /GOOG/CL_VECTOR_SEARCH
.
ID entitas 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 entitas yang akan ditelusuri.NEIGHBOR_COUNT
: Jumlah tetangga terdekat yang akan yang diambil untuk kueri.RETURN_FULL_DATAPOINT
: Untuk menampilkan embedding vektor untuk titik data yang diambil, tetapkan nilai parameter ini keABAP_TRUE
.
Menelusuri menggunakan string penelusuran
Untuk melakukan kueri indeks vektor sehubungan dengan string penelusuran, Anda dapat menggunakan
Metode FIND_NEIGHBORS_BY_STRING
dari class /GOOG/CL_VECTOR_SEARCH
.
Pertama-tama, SDK mengonversi string penelusuran menjadi embedding, dan kemudian 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
: Memasukkan string penelusuran.MODEL_KEY
: Kunci model untuk menghasilkan embeddings, yang dikonfigurasi di parameter pembuatan model.NEIGHBOR_COUNT
: Jumlah tetangga terdekat yang akan diambil untuk kueri.RETURN_FULL_DATAPOINT
: Untuk menampilkan embedding 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 embedding vektor untuk titik data yang diambil, tetapkan nilai parameter ini keABAP_TRUE
.EMBEDDINGS
: Penyematan input.
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 mengharuskan
variabel untuk menyimpan hasil menengah.
Memperoleh tetangga terdekat untuk kueri penelusuran
Untuk menentukan tetangga terdekat yang ditemukan untuk kueri penelusuran yang dieksekusi
sehubungan dengan titik data, string pencarian, atau embedding, Anda dapat menggunakan
Metode class GET_NEAREST_NEIGHBOR
dan GET_NEAREST_NEIGHBORS
/GOOG/CL_VECTORSEARCH_RESPONSE
.
Metode ini dapat dipanggil dalam rantai setelah menjalankan penelusuran
kueri dengan 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, {i>string<i}, atau {i>embedding<i} yang dicari, panggil metode
GET_NEAREST_NEIGHBOR
. Respons dari 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 menghasilkan embeddings, yang dikonfigurasi di parameter pembuatan model.NEIGHBOR_COUNT
: Jumlah tetangga terdekat yang akan diambil untuk kueri.RETURN_FULL_DATAPOINT
: Untuk menampilkan embedding vektor untuk titik data yang diambil, tetapkan nilai parameter ini keABAP_TRUE
.
Untuk mendapatkan kumpulan tetangga terdekat yang terdekat ke titik data, string, atau embedding yang ditelusuri, panggil
GET_NEAREST_NEIGHBORS
. Respons dari metode ini adalah tabel yang berisi titik data terdekat, dengan daftar ID titik data, jaraknya dari pencarian kueri dan vektor fitur yang terkait dengannya pada 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
: Memasukkan string penelusuran.MODEL_KEY
: Kunci model untuk menghasilkan embeddings, 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 menunjukkan ukuran perbedaan antara kueri (string, embedding, atau ID entitas) dan vektor hasil yang diambil. Arti spesifik dari jarak bergantung pada "Ukuran Jarak" digunakan saat membuat indeks.
Nilai jarak membantu Anda memahami seberapa relevan setiap hasil penelusuran sesuai dengan kueri Anda. Hasil dengan jarak yang lebih rendah umumnya dianggap lebih serupa atau relevan, sedangkan mereka dengan jaraknya kurang mirip atau tidak 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
: Memasukkan 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 embedding vektor untuk titik data yang diambil, tetapkan nilai parameter ini keABAP_TRUE
.
Mendapatkan vektor embedding dari tetangga yang diambil
Untuk menentukan vektor embedding dari respons yang diambil dari
kueri yang ditelusuri, Anda dapat menggunakan metode GET_DATAPOINT_FEATURE_VECTOR
dari class /GOOG/CL_VECTORSEARCH_RESPONSE
.
Untuk mendapatkan vektor embedding, parameter IV_RETURN_FULL_DATAPOINT
dari elemen
FIND_NEIGHBORS_BY_STRING
, FIND_NEIGHBORS_BY_EMBEDDING
,
dan FIND_NEIGHBORS_BY_ENTITY_ID
harus ditetapkan ke ABAP_TRUE
.
Contoh kode berikut mengilustrasikan 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
: Memasukkan 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 embedding vektor untuk titik data yang diambil, tetapkan nilai parameter ini keABAP_TRUE
.
Langkah selanjutnya
Pelajari terminologi Penelusuran Vektor.
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 di Forum Cloud.