Membuat dan mengelola penyematan di BigQuery

BigQuery AI dan ML SDK untuk ABAP memungkinkan Anda membuat dan mengelola penyematan pada data perusahaan Anda di sumber di BigQuery.

BigQuery dapat berfungsi sebagai database vektor yang hemat biaya untuk menggunakan kemampuan penelusuran vektornya, sehingga Anda dapat menyimpan dan membuat kueri penyematan (representasi vektor data) langsung dalam data warehouse, yang berpotensi mengurangi kebutuhan infrastruktur database vektor terpisah. Anda dapat membuat penyematan untuk data perusahaan yang disimpan di set data BigQuery menggunakan fungsi BigQuery ML.GENERATE_EMBEDDING.

Model penyematan di Vertex AI dapat diakses dengan membuat model jarak jauh di BigQuery ML yang mewakili endpoint model Vertex AI. Setelah membuat model jarak jauh pada model Vertex AI yang ingin digunakan, Anda dapat mengakses kemampuan model tersebut dengan menjalankan fungsi BigQuery ML terhadap model jarak jauh.

Dengan BigQuery AI dan ML SDK untuk ABAP, Anda dapat menggunakan model penyematan untuk hal berikut:

  • Membuat dan menyimpan embedding untuk data teks
  • Membuat dan menyimpan embedding untuk data multimodal
  • Pastikan database vektor BigQuery Anda selalu diperbarui dengan data perusahaan terbaru

Sebelum memulai

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

Harga

BigQuery AI dan ML SDK untuk ABAP ditawarkan tanpa biaya. Namun, Anda bertanggung jawab atas biaya di platform BigQuery dan Vertex AI:

  • BigQuery ML: Anda akan dikenai biaya untuk data yang diproses di BigQuery.
  • Vertex AI: Anda dikenai biaya panggilan ke layanan Vertex AI yang direpresentasikan oleh model jarak jauh.

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

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

Untuk mengetahui informasi selengkapnya tentang harga Vertex AI, lihat halaman harga Vertex AI.

Membuat embedding di BigQuery

Bagian ini menjelaskan cara membuat penyematan untuk data perusahaan yang disimpan di BigQuery dari logika aplikasi ABAP Anda menggunakan BigQuery AI dan ML SDK untuk ABAP.

Membuat instance class pemanggil penyematan BigQuery

Untuk memanggil teks penyematan dan model multimodal di set data BigQuery, Anda membuat instance class /GOOG/CL_BQ_GENERATIVE_MODEL.

TRY.
    DATA(lo_bqml_embeddings_model) = NEW /goog/cl_bq_embeddings_model( 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.

Membuat embedding

Untuk menjalankan kueri guna membuat penyematan untuk data teks dan multimodal dengan fungsi BigQuery ML.GENERATE_EMBEDDING, gunakan metode GENERATE_EMBEDDINGS dari class /GOOG/CL_BQ_EMBEDDINGS_MODEL.

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

lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query ).

LO_BQ_QUERY adalah referensi class /GOOG/CL_BQ_QUERY setelah menetapkan kueri.

Mengganti parameter pembuatan model

Anda dapat menentukan parameter pembuatan model penyematan dalam kueri yang disimpan 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_GENERATION_CONFIG dari class /GOOG/CL_BQ_EMBEDDINGS_MODEL. Parameter pembuatan dalam kueri awal akan diganti dengan parameter yang diteruskan melalui metode ini.

lo_bqml_embeddings_model->set_generation_config( iv_flatten_json_output   = 'IS_FLATTEN_JSON_OUTPUT'
                                 iv_task_type             = 'TASK_TYPE'
         iv_output_dimensionality = 'OUTPUT_DIMENSIONALITY' ).

Ganti kode berikut:

  • IS_FLATTEN_JSON_OUTPUT: Nilai boolean yang menentukan apakah konten JSON yang ditampilkan oleh fungsi diuraikan menjadi kolom terpisah.
  • TASK_TYPE: Nilai yang menentukan aplikasi downstream yang dimaksudkan untuk membantu model menghasilkan penyematan dengan kualitas yang lebih baik, cari kemungkinan nilai dari argumen task_type di bagian sintaksis input untuk ML.GENERATE_EMBEDDING.
  • OUTPUT_DIMENSIONALITY: Nilai yang menentukan jumlah dimensi yang akan digunakan saat membuat penyematan, cari kemungkinan nilai dari argumen output_dimensionality di bagian sintaksis input untuk ML.GENERATE_EMBEDDING.

Mendapatkan hasil kueri untuk membuat penyematan

Untuk menerima respons yang diproses dari BigQuery ML guna membuat penyematan dan menampilkannya dengan cara yang bermakna, SDK menggunakan metode berantai di class /GOOG/CL_BQ_GENERATIVE_MODEL, sehingga Anda dapat langsung mengakses respons dalam satu pernyataan tanpa memerlukan variabel untuk menyimpan hasil perantara.

Mendapatkan vektor embedding teks

Untuk mendapatkan vektor penyematan teks untuk setiap baris dalam logika aplikasi ABAP, gunakan metode GET_TEXT_EMBEDDING_VECTORS.

DATA(lt_embeddings) = lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query
                                             )->get_text_embedding_vectors( ).

Mendapatkan status embedding teks

Untuk mendapatkan status setiap pembuatan penyematan teks untuk setiap baris, gunakan metode GET_TEXT_EMBEDDING_STATUS.

Jika operasi berhasil, statusnya akan kosong.

DATA(lt_embeddings_status) = lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query
                                                    )->get_text_embedding_status( ).

Mendapatkan status tugas kueri

Setiap kueri di BigQuery dijalankan sebagai tugas kueri.

Untuk mendapatkan status tugas kueri penyematan, gunakan metode GET_QUERY_JOB_STATUS.

lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query
                       )->get_query_job_status(
IMPORTING ev_job_complete          = DATA(lv_job_complete)
  ev_job_creation_reason   = DATA(lv_job_creation_reason)
  ev_job_id                = DATA(lv_job_id)
  ev_query_id              = DATA(lv_query_id)
  ev_total_bytes_processed = DATA(lv_total_bytes_processed)
  ev_total_rows            = DATA(lv_total_rows) ).

Metode ini menampilkan metrik status tugas berikut:

  • Apakah kueri telah selesai atau belum.
  • Alasan Tugas dibuat.
  • Referensi ke Tugas yang dibuat untuk menjalankan kueri.
  • ID yang dibuat otomatis untuk kueri.
  • Total jumlah byte yang diproses untuk kueri ini.
  • Jumlah total baris dalam kumpulan hasil kueri lengkap.

Mendapatkan error tugas kueri

Untuk mengambil error tugas kueri (jika ada), gunakan metode GET_QUERY_JOB_ERRORS.

DATA(lt_query_job_errors) = lo_bqml_embeddings_model->execute_query( io_query = lo_bq_query
                                                   )->get_query_job_errors( ).

Mendapatkan respons keseluruhan untuk embedding teks

Untuk mendapatkan tabel respons secara keseluruhan untuk kueri penyematan teks yang Anda jalankan, gunakan metode GET_TEXT_EMBEDDING_RESPONSE.

Respons hanya diisi jika parameter pembuatan model FLATTEN_JSON_OUTPUT ditetapkan ke TRUE dalam kueri.

DATA(lt_text_embeddings_response) = lo_bqml_embeddings_model->execute_query( io_query = lo_bq_query
                                                           )->get_text_embedding_response( ).