Melakukan penelusuran vektor di BigQuery

BigQuery AI dan ML SDK untuk ABAP memungkinkan Anda melakukan penelusuran vektor pada data perusahaan yang di-vektorisasi di BigQuery melalui string penelusuran berbasis bahasa alami, dan menampilkan kembali hasilnya, dari agen atau aplikasi berbasis ABAP.

BigQuery Vector Search memungkinkan Anda menggunakan GoogleSQL untuk melakukan penelusuran semantik menggunakan indeks vektor untuk hasil perkiraan. Dengan Vector Search, Anda dapat menemukan titik data yang serupa secara semantik dalam set data besar menggunakan vektor atau penyematan berdimensi tinggi. Anda dapat menyimpan penyematan vektor di BigQuery, sehingga BigQuery menjadi database vektor Anda dan menerapkan penelusuran kemiripan vektor di dalamnya menggunakan fungsi BigQuery VECTOR_SEARCH.

Sebelum memulai

Sebelum menggunakan BigQuery AI dan ML SDK untuk ABAP dengan model Gemini, pastikan Anda atau administrator telah menyelesaikan prasyarat berikut:

Harga

BigQuery AI dan ML SDK untuk ABAP ditawarkan tanpa biaya. Namun, Anda bertanggung jawab atas tagihan untuk pernyataan CREATE VECTOR INDEX dan fungsi VECTOR_SEARCH, yang menggunakan harga komputasi BigQuery.

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.

Untuk mengetahui informasi selengkapnya tentang harga BigQuery, lihat halaman harga BigQuery.

Melakukan penelusuran vektor di BigQuery

Bagian ini menjelaskan cara melakukan penelusuran semantik vektor pada data perusahaan Anda yang disimpan di BigQuery dari aplikasi ABAP menggunakan BigQuery AI dan ML SDK untuk ABAP.

Membuat instance class pemanggil penelusuran vektor BigQuery

Untuk melakukan penelusuran vektor menggunakan string penelusuran, Anda membuat instance class /GOOG/CL_BQ_VECTOR_SEARCH.

TRY.
    DATA(lo_bq_vector_search) = NEW /goog/cl_bq_vector_search( iv_key = 'CLIENT_KEY' ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
    cl_demo_output=>display( lo_cx_sdk->get_text( ) ).

ENDTRY.

Ganti CLIENT_KEY dengan kunci klien yang telah Anda konfigurasikan untuk autentikasi ke Google Cloud selama penyiapan autentikasi.

Menemukan item serupa untuk string penelusuran

Untuk menjalankan kueri guna melakukan penelusuran vektor dengan fungsi BigQuery VECTOR_SEARCH, gunakan metode FIND_NEAREST_NEIGHBORS dari class /GOOG/CL_BQ_VECTOR_SEARCH.

Objek class /GOOG/CL_BQ_QUERY yang ditetapkan dengan kueri diteruskan sebagai input ke metode.

lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query ).

LO_BQ_QUERY adalah referensi class /GOOG/CL_BQ_QUERY setelah menetapkan kueri. Anda dapat meneruskan string penelusuran dari teks kueri.

Mengganti parameter penelusuran vektor

Anda dapat menentukan parameter penelusuran vektor (di bagian definisi fungsi VECTOR_SEARCH) dalam kueri tersimpan di BigQuery atau teks kueri yang diteruskan. Namun, jika perlu mengganti parameter untuk kueri yang sama dari logika aplikasi ABAP, Anda dapat menggunakan metode SET_SEARCH_PARAMETERS dari class /GOOG/CL_BQ_VECTOR_SEARCH untuk melakukannya. Parameter penelusuran dalam kueri awal sepenuhnya diganti dengan parameter yang diteruskan melalui metode ini.

lo_bq_vector_search->set_search_parameters( iv_top_k            = TOP_K
    iv_distance_type            = DISTANCE_TYPE
    iv_fraction_lists_to_search = 'FRACTION_LISTS_TO_SEARCH' ).

Ganti kode berikut:

  • TOP_K: Nilai INT64 yang menentukan jumlah tetangga terdekat yang akan ditampilkan.
  • DISTANCE_TYPE: Nilai string yang menentukan jenis metrik yang akan digunakan untuk menghitung jarak antara dua vektor, cari kemungkinan nilai dari argumen DISTANCE_TYPE di bagian definisi untuk fungsi VECTOR_SEARCH.
  • FRACTION_LISTS_TO_SEARCH: Nilai string yang menentukan persentase daftar yang akan ditelusuri, cari kemungkinan nilai dari argumen FRACTION_LISTS_TO_SEARCH di bagian opsi definisi fungsi VECTOR_SEARCH.

Mendapatkan respons penelusuran vektor

Untuk menerima respons yang diproses dari BigQuery ML untuk kueri penelusuran vektor dan menampilkannya dengan cara yang bermakna, gunakan class /GOOG/CL_BQ_SEARCH_RESPONSE.

Respons yang diambil oleh class /GOOG/CL_BQ_SEARCH_RESPONSE dirantai ke permintaan yang dibuat melalui metode class /GOOG/CL_BQ_VECTOR_SEARCH, sehingga Anda dapat langsung mengakses respons dalam satu pernyataan tanpa memerlukan variabel untuk menyimpan hasil perantara.

Mendapatkan tetangga terdekat untuk string penelusuran

Untuk mendapatkan tetangga terdekat untuk string penelusuran, gunakan metode GET_NEAREST_NEIGHBORS. Jumlah tetangga yang ditampilkan bergantung pada nilai yang ditentukan atau ditetapkan dalam parameter TOP_K fungsi VECTOR_SEARCH dalam kueri yang dipanggil.

DATA(lt_search_response) = lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query
                                             )->get_nearest_neighbors( ).

LT_SEARCH_RESPONSE juga berisi jarak item respons penelusuran dari string penelusuran untuk menunjukkan tingkat kesamaan.

Mendapatkan tetangga terdekat untuk string penelusuran

Untuk mendapatkan tetangga terdekat untuk string penelusuran, gunakan metode GET_NEAREST_NEIGHBOR. Dengan demikian, hanya tetangga terdekat yang diambil berdasarkan string penelusuran, terlepas dari nilai yang ditentukan atau ditetapkan dalam parameter TOP_K dari fungsi VECTOR_SEARCH dalam kueri yang dipanggil.

DATA(ls_search_response) = lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query
                                             )->get_nearest_neighbor( ).

LS_SEARCH_RESPONSE juga berisi jarak respons penelusuran dari string penelusuran untuk menunjukkan tingkat kesamaan.