Menangani error kuota dengan memanggil ML.GENERATE_EMBEDDING secara berulang

Tutorial ini menunjukkan cara menggunakan prosedur tersimpan publik bqutil.procedure.bqml_generate_embeddings BigQuery untuk melakukan iterasi melalui panggilan ke fungsi ML.GENERATE_EMBEDDING. Memanggil fungsi secara berulang memungkinkan Anda mengatasi error yang dapat dicoba ulang yang terjadi karena melebihi kuota dan batas yang berlaku untuk fungsi tersebut.

Untuk meninjau kode sumber bqutil.procedure.bqml_generate_embeddings prosedur tersimpan di GitHub, lihat bqml_generate_embeddings.sqlx. Untuk mengetahui informasi selengkapnya tentang parameter dan penggunaan prosedur tersimpan, lihat file README.

Tutorial ini memandu Anda melakukan tugas-tugas berikut:

  • Membuat model jarak jauh melalui model text-embedding-005.
  • Melakukan iterasi melalui panggilan ke fungsi ML.GENERATE_EMBEDDING, menggunakan model jarak jauh dan tabel data publik bigquery-public-data.bbc_news.fulltext dengan prosedur tersimpan bqutil.procedure.bqml_generate_embeddings.

Izin yang diperlukan

Untuk menjalankan tutorial ini, Anda memerlukan peran Identity and Access Management (IAM) berikut:

  • Membuat dan menggunakan set data, koneksi, dan model BigQuery: Admin BigQuery (roles/bigquery.admin).
  • Memberikan izin ke akun layanan koneksi: Project IAM Admin (roles/resourcemanager.projectIamAdmin).

Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk melakukan tugas dalam dokumen ini. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

  • Buat set data: bigquery.datasets.create
  • Membuat, mendelegasikan, dan menggunakan koneksi: bigquery.connections.*
  • Menetapkan koneksi default: bigquery.config.*
  • Tetapkan izin akun layanan: resourcemanager.projects.getIamPolicy dan resourcemanager.projects.setIamPolicy
  • Buat model dan jalankan inferensi:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Biaya

Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:

  • BigQuery ML: You incur costs for the data that you process in BigQuery.
  • Vertex AI: You incur costs for calls to the Vertex AI model.

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

Pengguna Google Cloud baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

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

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

Sebelum memulai

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Google Cloud project.

  3. Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.

    Enable the APIs

Membuat set data

Buat set data BigQuery untuk menyimpan model dan data sampel Anda:

  1. Di Google Cloud konsol, buka halaman BigQuery.

    Buka halaman BigQuery

  2. Di panel Explorer, klik nama project Anda.

  3. Klik View actions > Create dataset.

  4. Di halaman Create dataset, lakukan hal berikut:

    1. Untuk Dataset ID, masukkan target_dataset.

    2. Untuk Location type, pilih Multi-region, lalu pilih US (multiple regions in United States).

    3. Jangan ubah setelan default yang tersisa, lalu klik Create dataset.

Membuat model pembuatan embedding teks

Buat model jarak jauh yang merepresentasikan model text-embedding-005 Vertex AI yang dihosting:

  1. Di Google Cloud konsol, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, jalankan pernyataan berikut:

    CREATE OR REPLACE MODEL `target_dataset.embedding_model`
      REMOTE WITH CONNECTION DEFAULT
      OPTIONS (ENDPOINT = 'text-embedding-005');

    Kueri memerlukan waktu beberapa detik untuk diselesaikan, setelah itu model embedding akan muncul di set data sample di panel Explorer. Karena kueri menggunakan pernyataan CREATE MODEL untuk membuat model, tidak akan ada hasil kueri.

Jalankan prosedur tersimpan

Jalankan prosedur tersimpan bqutil.procedure.bqml_generate_embeddings, yang melakukan iterasi melalui panggilan ke fungsi ML.GENERATE_EMBEDDING menggunakan model target_dataset.embedding_model dan tabel data publik bigquery-public-data.bbc_news.fulltext:

  1. Di Google Cloud konsol, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, jalankan pernyataan berikut:

    CALL `bqutil.procedure.bqml_generate_embeddings`(
        "bigquery-public-data.bbc_news.fulltext",            -- source table
        "PROJECT_ID.target_dataset.news_body_embeddings",  -- destination table
        "PROJECT_ID.target_dataset.embedding_model",       -- model
        "body",                                              -- content column
        ["filename"],                                        -- key columns
        '{}'                                                 -- optional arguments encoded as a JSON string
    );

    Ganti PROJECT_ID dengan project ID project yang Anda gunakan untuk tutorial ini.

    Prosedur tersimpan membuat tabel target_dataset.news_body_embeddings untuk berisi output fungsi ML.GENERATE_EMBEDDING.

  3. Setelah kueri selesai dijalankan, konfirmasi bahwa tidak ada baris dalam tabel target_dataset.news_body_embeddings yang berisi error yang dapat dicoba lagi. Di editor kueri, jalankan pernyataan berikut:

    SELECT *
    FROM `target_dataset.news_body_embeddings`
    WHERE ml_generate_embedding_status LIKE '%A retryable error occurred%';

    Kueri menampilkan pesan No data to display.

Pembersihan

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.