Pembuatan embedding otonom

Dokumen ini menjelaskan cara menggunakan pembuatan embedding otonom untuk data Anda, yang memungkinkan BigQuery mempertahankan kolom embedding pada tabel berdasarkan kolom sumber. Kolom sumber harus memiliki jenis data STRING atau ObjectRef. Saat Anda menambahkan atau mengubah data di kolom sumber, BigQuery akan otomatis membuat atau memperbarui kolom embedding untuk data tersebut menggunakan model embedding Agent Platform. Hal ini berguna jika Anda ingin mengizinkan BigQuery mengelola embedding saat data sumber diperbarui secara berkala.

Embedding berguna untuk aplikasi AI generatif modern seperti Retrieval Augmented Generation (RAG), tetapi dapat menjadi rumit untuk dibuat, dikelola, dan dikueri. Anda dapat menggunakan pembuatan embedding otonom untuk menyederhanakan proses pembuatan, pemeliharaan, dan pembuatan kueri embedding untuk digunakan dalam penelusuran kemiripan dan aplikasi AI generatif lainnya.

Misalnya, Anda dapat menggunakan kueri yang mirip dengan kueri berikut untuk membuat tabel dengan pembuatan embedding otonom yang diaktifkan, menyisipkan data, lalu melakukan penelusuran semantik:

CREATE TABLE mydataset.products (
  name STRING,
  description STRING,
  description_embedding STRUCT<result ARRAY<FLOAT64>, status STRING>
    GENERATED ALWAYS AS (
      AI.EMBED(description, connection_id => 'us.example_connection',
        endpoint => 'text-embedding-005')
      # Alternatively, you can use the syntax for a built-in model.
      # AI.EMBED(description, model => 'embeddinggemma-300m')
    ) STORED OPTIONS( asynchronous = TRUE ));

# Values in the description_embedding column are automatically generated.
INSERT INTO mydataset.products (name, description) VALUES
  ('Super slingers', 'An exciting board game for the whole family'), ...;

SELECT * FROM AI.SEARCH(TABLE mydataset.products, 'description', 'A really fun toy');

Sebelum memulai

Untuk mengaktifkan pembuatan embedding otonom pada tabel, Anda harus memiliki izin dan koneksi yang diperlukan, serta mengaktifkan Vertex AI API untuk project Anda.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk mengaktifkan pembuatan embedding otonom, minta administrator untuk memberi Anda peran IAM berikut:

  • Untuk menggunakan resource koneksi: BigQuery Connections User (roles/bigquery.connectionUser) pada koneksi
  • Untuk membuat atau mengubah tabel: BigQuery Data Editor (roles/bigquery.dataEditor) pada tabel
  • Berikan peran berikut ke akun layanan koneksi agar dapat mengakses model yang dihosting di endpoint Agent Platform: Agent Platform User (roles/aiplatform.user) pada project yang memiliki koneksi

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Membuat koneksi dan memberikan izin ke akun layanan

Untuk mengaktifkan pembuatan embedding otonom pada tabel, Anda harus membuat koneksi resource Cloud. Kemudian, berikan peran Agent Platform User (roles/aiplatform.user) ke akun layanan yang dibuat saat Anda membuat koneksi.

Membuat kolom embedding yang dibuat secara otomatis

Anda dapat membuat kolom embedding yang dihasilkan secara otomatis dalam tabel baru atau menambahkannya ke tabel yang sudah ada.

Saat Anda menentukan fungsi AI.EMBED untuk kolom embedding yang dibuat secara otomatis, jika Anda tidak menentukan argumen task_type dan model Anda mendukung task_type, BigQuery akan menetapkan task_type ke RETRIEVAL_DOCUMENT secara default. Saat Anda mengkueri tabel menggunakan fungsi AI.SEARCH atau fungsi VECTOR_SEARCH, BigQuery akan menghasilkan embedding kueri secara langsung menggunakan perilaku task_type berikut:

  • Jika kolom embedding tabel menggunakan RETRIEVAL_DOCUMENT, baik secara default maupun ditentukan secara eksplisit, BigQuery akan menggunakan RETRIEVAL_QUERY untuk menyematkan kueri penelusuran.
  • Jika tidak, BigQuery akan menggunakan task_type yang sama yang dikonfigurasi untuk kolom embedding tabel.

Membuat tabel dengan kolom embedding yang dibuat secara otomatis

Anda dapat menggunakan pembuatan embedding otonom untuk membuat embedding menggunakan fungsi AI.EMBED dalam pernyataan CREATE TABLE.

SQL

Gunakan pernyataan CREATE TABLE untuk membuat tabel dengan kolom embedding yang dibuat secara otomatis. Untuk membuat tabel, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    CREATE TABLE DATASET_ID.TABLE (
      [COLUMN, ...]
      SOURCE_COL { STRING | ObjectRef },
      EMBEDDING_COL_NAME STRUCT<result ARRAY<FLOAT64>, status STRING>
        GENERATED ALWAYS AS (
          AI.EMBED(
            SOURCE_COL,
            {
              connection_id => CONNECTION_ID,
              endpoint => ENDPOINT |
              model => MODEL
            })
        )
        STORED OPTIONS (asynchronous = TRUE)
    );

    Ganti kode berikut:

    • DATASET_ID: nama set data tempat Anda ingin membuat tabel.
    • TABLE: nama tabel tempat membuat pembuatan embedding otonom.
    • COLUMN, ...: kolom apa pun yang harus ada dalam tabel Anda selain kolom yang ingin Anda sematkan secara otomatis.
    • SOURCE_COL: nama kolom STRING atau ObjectRef yang ingin Anda sematkan secara otomatis.
    • EMBEDDING_COL_NAME: nama kolom embedding yang dibuat secara otomatis.
    • CONNECTION_ID: nilai STRING yang berisi nama koneksi yang akan digunakan, seperti my_project.us.example_connection. Anda harus memberikan peran Agent Platform User ke akun layanan koneksi dalam project tempat Anda membuat tabel.
    • ENDPOINT: nilai STRING yang menentukan endpoint model embedding teks Agent Platform yang didukung untuk digunakan pada model embedding teks. Nilai endpoint yang Anda tentukan harus menyertakan versi model, misalnya, text-embedding-005. Jika Anda menentukan nama model, bukan URL, BigQuery ML akan otomatis mengidentifikasi model dan menggunakan endpoint lengkap model.
    • MODEL (Pratinjau): nilai STRING yang menentukan model embedding teks bawaan. Satu-satunya nilai yang didukung adalah model embeddinggemma-300m. Jika Anda menentukan parameter ini, Anda tidak dapat menentukan parameter endpoint atau connection_id. Saat Anda menentukan parameter MODEL, data Anda tetap berada di BigQuery dan slot Anda digunakan untuk membuat embedding; tidak ada data yang dikirim ke Agent Platform dan tidak ada biaya yang dikenakan di Agent Platform.

  3. Klik Run.

Untuk mengetahui informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

bq

Untuk membuat tabel dengan kolom embedding yang dibuat secara otomatis menggunakan alat command line bq, gunakan perintah bq mk dengan file skema JSON yang menentukan skema tabel:

  1. Buat file skema JSON. Contoh berikut menunjukkan skema yang membuat kolom embedding berdasarkan kolom sumber. Contoh ini menggunakan endpoint Agent Platform untuk pembuatan embedding.

    [
      {
        "name": "SOURCE_COL",
        "type": "STRING"
      },
      {
        "fields": [
          {
            "mode": "REPEATED",
            "name": "result",
            "type": "FLOAT"
          },
          {
            "name": "status",
            "type": "STRING"
          }
        ],
        "generatedColumn": {
          "generationExpressionInfo": {
            "asynchronous": true,
            "generationExpression": "AI.EMBED(SOURCE_COL, connection_id => 'CONNECTION_ID', endpoint => 'ENDPOINT')",
            "stored": true
          },
          "generatedMode": "GENERATED_ALWAYS"
        },
        "name": "EMBEDDING_COL_NAME",
        "type": "RECORD"
      }
    ]
    

    Jika Anda menggunakan model bawaan, bukan endpoint Agent Platform, gunakan sintaksis yang mirip dengan berikut ini untuk generationExpression: "AI.EMBED(SOURCE_COL, model => 'MODEL')"

    Untuk mengetahui informasi tentang nilai yang akan digunakan, lihat deskripsi untuk SOURCE_COL, EMBEDDING_COL_NAME, CONNECTION_ID, ENDPOINT, dan MODEL di tab SQL.

  2. Simpan skema ke file seperti schema.json.

  3. Buat tabel menggunakan perintah bq mk --table:

    bq mk --table DATASET_ID.TABLE schema.json
    

Ganti kode berikut:

  • DATASET_ID: Nama set data tempat Anda ingin membuat tabel.
  • TABLE: Nama tabel tempat membuat pembuatan embedding otonom.
  • COLUMN, ...: Kolom apa pun yang harus ada dalam tabel selain kolom yang ingin Anda sematkan secara otomatis.
  • STRING_COL: Nama kolom STRING yang ingin Anda sematkan secara otomatis.
  • EMBEDDING_COL_NAME: Nama kolom embedding yang dibuat secara otomatis.
  • CONNECTION_ID: Nilai STRING yang berisi nama koneksi yang akan digunakan, seperti my_project.us.example_connection. Anda harus memberikan peran Agent Platform User ke akun layanan koneksi dalam project tempat Anda membuat tabel.
  • ENDPOINT: nilai STRING yang menentukan endpoint model embedding teks Agent Platform yang didukung untuk digunakan pada model embedding teks. Nilai endpoint yang Anda tentukan harus menyertakan versi model, misalnya text-embedding-005. Jika Anda menentukan nama model, bukan URL, BigQuery ML akan otomatis mengidentifikasi model dan menggunakan endpoint lengkap model.
  • MODEL (Pratinjau): nilai STRING yang menentukan model embedding teks bawaan. Satu-satunya nilai yang didukung adalah model embeddinggemma-300m. Jika menentukan parameter ini, Anda tidak dapat menentukan parameter endpoint atau connection_id.

    Saat Anda menentukan parameter MODEL, data Anda tetap berada di BigQuery dan slot Anda digunakan untuk membuat embedding; tidak ada data yang dikirim ke Agent Platform dan tidak ada biaya yang dikenakan di Agent Platform.

Menambahkan kolom embedding yang dibuat otomatis ke tabel yang ada

Anda juga dapat menambahkan kolom embedding yang dibuat secara otomatis ke tabel yang ada menggunakan pernyataan ALTER TABLE ADD COLUMN.

SQL

Gunakan pernyataan ALTER TABLE ADD COLUMN untuk menambahkan kolom embedding yang dibuat secara otomatis ke tabel yang ada. Untuk menambahkan kolom, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    ALTER TABLE DATASET_ID.TABLE
      ADD COLUMN EMBEDDING_COL_NAME
        STRUCT<result ARRAY<FLOAT64>, status STRING>
        GENERATED ALWAYS AS (
          AI.EMBED(
            SOURCE_COL,
            {
              connection_id => CONNECTION_ID,
              endpoint => ENDPOINT |
              model => MODEL
            })
        )
        STORED OPTIONS (asynchronous = TRUE)
    ;

    Ganti kode berikut:

    • DATASET_ID: nama set data yang berisi tabel.
    • TABLE: nama tabel tempat Anda ingin menambahkan kolom embedding yang dibuat secara otomatis.
    • EMBEDDING_COL_NAME: nama kolom embedding yang dibuat secara otomatis.
    • SOURCE_COL: nama kolom STRING atau ObjectRef yang ingin Anda sematkan secara otomatis.
    • CONNECTION_ID: nilai STRING yang berisi nama koneksi yang akan digunakan, seperti my_project.us.example_connection.
    • ENDPOINT: nilai STRING yang menentukan endpoint model embedding teks Agent Platform yang didukung untuk digunakan pada model embedding teks.
    • MODEL (Pratinjau): nilai STRING yang menentukan model embedding teks bawaan. Satu-satunya nilai yang didukung adalah model embeddinggemma-300m. Jika Anda menentukan parameter ini, Anda tidak dapat menentukan parameter endpoint atau connection_id. Saat Anda menentukan parameter MODEL, data Anda tetap berada di BigQuery dan slot Anda digunakan untuk membuat embedding; tidak ada data yang dikirim ke Agent Platform dan tidak ada biaya yang dikenakan di Agent Platform.

  3. Klik Run.

Untuk mengetahui informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

bq

Untuk menambahkan kolom embedding yang dibuat secara otomatis ke tabel yang ada menggunakan alat command line bq, gunakan perintah bq update dengan file skema JSON yang menentukan skema tabel yang diperbarui:

  1. Dapatkan skema tabel saat ini dan simpan ke file seperti schema.json:
    bq show --schema --format=prettyjson DATASET_ID.TABLE > schema.json
    
  2. Edit schema.json untuk menambahkan definisi untuk kolom embedding baru yang dibuat secara otomatis. Contoh berikut menunjukkan definisi untuk kolom embedding berdasarkan kolom sumber. Contoh ini menggunakan endpoint Agent Platform untuk pembuatan embedding.

    [
      {
        "name": "SOURCE_COL",
        "type": "STRING"
      },
      {
        "fields": [
          {
            "mode": "REPEATED",
            "name": "result",
            "type": "FLOAT"
          },
          {
            "name": "status",
            "type": "STRING"
          }
        ],
        "generatedColumn": {
          "generationExpressionInfo": {
            "asynchronous": true,
            "generationExpression": "AI.EMBED(SOURCE_COL, connection_id => 'CONNECTION_ID', endpoint => 'ENDPOINT')",
            "stored": true
          },
          "generatedMode": "GENERATED_ALWAYS"
        },
        "name": "EMBEDDING_COL_NAME",
        "type": "RECORD"
      }
    ]
    

    Jika Anda menggunakan model bawaan, bukan endpoint Agent Platform, gunakan sintaksis yang mirip dengan berikut ini untuk generationExpression: "AI.EMBED(SOURCE_COL, model => 'MODEL')"

    Untuk mengetahui informasi tentang nilai yang akan digunakan, lihat deskripsi untuk SOURCE_COL, EMBEDDING_COL_NAME, CONNECTION_ID, ENDPOINT, dan MODEL di tab SQL.

  3. Perbarui tabel menggunakan perintah bq update --table:

    bq update --table DATASET_ID.TABLE schema.json
    

    Ganti kode berikut:

    • DATASET_ID: nama set data yang berisi tabel.
    • TABLE: nama tabel tempat Anda ingin menambahkan kolom embedding yang dibuat secara otomatis.

Tugas pembuatan embedding latar belakang dimulai segera setelah tabel Anda dibuat atau diubah, atau setelah Anda memperbarui data di kolom sumber.

Untuk melacak progres pembuatan embedding, Anda dapat menggunakan kueri yang mirip dengan berikut ini:

SELECT
  COUNT(*) AS total_num_rows,
  COUNTIF(description_embedding IS NOT NULL
          AND description_embedding.status = '') AS total_num_generated_embeddings
FROM
  PROJECT_ID.DATASET_ID.TABLE;

Setelah memiliki tabel dengan embedding, Anda dapat membuat indeks vektor pada kolom STRUCT yang berisi embedding yang dibuat secara otomatis.

Contoh

Misalnya, Anda adalah retailer besar yang menjual berbagai macam produk. Anda memiliki tabel nama dan deskripsi produk, dan Anda ingin membantu pelanggan menemukan produk yang mereka cari. Kueri berikut menunjukkan cara menyiapkan pembuatan embedding otonom untuk membantu penelusuran semantik deskripsi produk Anda.

Pertama, buat set data:

CREATE SCHEMA mydataset;

Selanjutnya, buat tabel dengan pembuatan embedding otonom yang diaktifkan untuk menyimpan informasi produk Anda. Kolom yang dibuat secara otomatis disebut description_embedding dan didasarkan pada kolom description.

# Create a table of products and descriptions with a generated embedding column.
CREATE TABLE mydataset.products (
  name STRING,
  description STRING,
  description_embedding STRUCT<result ARRAY<FLOAT64>, status STRING>
    GENERATED ALWAYS AS (
      AI.EMBED(description, connection_id => 'us.example_connection',
        endpoint => 'text-embedding-005')
      # Alternatively, you can use the syntax for a built-in model.
      # AI.EMBED(description, model => 'embeddinggemma-300m')
    ) STORED OPTIONS( asynchronous = TRUE )
);

Kueri berikut menyisipkan beberapa nama produk dan deskripsi ke dalam tabel. Anda tidak menentukan nilai untuk description_embedding karena nilai tersebut dibuat secara otomatis.

# Insert product descriptions into the table.
# The description_embedding column is automatically updated.
INSERT INTO mydataset.products (name, description) VALUES
  ("Lounger chair", "A comfortable chair for relaxing in."),
  ("Super slingers", "An exciting board game for the whole family."),
  ("Encyclopedia set", "A collection of informational books.");

Anda dapat membuat indeks vektor pada tabel untuk mempercepat penelusuran. Indeks vektor memerlukan lebih dari tiga baris, sehingga kueri berikut mengasumsikan bahwa Anda telah menyisipkan data tambahan. Setiap kali Anda menyisipkan data, kolom description_embedding akan otomatis diperbarui.

CREATE VECTOR INDEX my_index
ON mydataset.products(description_embedding)
OPTIONS(index_type = 'IVF');

Terakhir, Anda dapat menggunakan fungsi AI.SEARCH untuk melakukan penelusuran semantik pada produk Anda untuk mainan yang menyenangkan:

# Search for products that are fun to play with.
SELECT base.name, base.description, distance
FROM AI.SEARCH(TABLE mydataset.products, 'description', "A really fun toy");

/*------------------+----------------------------------------------+----------------------+
 | name             | description                                  | distance             |
 +------------------+----------------------------------------------+----------------------+
 | Super slingers   | An exciting board game for the whole family. | 0.80954913893618929  |
 | Lounger chair    | A comfortable chair for relaxing in.         | 0.938933930620146    |
 | Encyclopedia set | A collection of informational books.         | 1.1119297739353384   |
 +------------------+----------------------------------------------+----------------------*/

Embedding yang dihasilkan dari ObjectRef kolom

Anda dapat menambahkan kolom embedding yang dihasilkan untuk kolom ObjectRef dalam tabel.

Contoh berikut menunjukkan cara membuat tabel dengan kolom ObjectRef, lalu menambahkan kolom embedding yang dihasilkan untuk kolom tersebut:

# Create a table with ObjectRef columns.
CREATE TABLE mydataset.images AS
SELECT
  REGEXP_EXTRACT(ref.uri, r'.*/(.*).jpg$') AS name,
  ref
FROM mydataset.object_table;

# Add a generated embedding column for the ObjectRef column.
ALTER TABLE mydataset.images
ADD COLUMN image_embedding STRUCT<result ARRAY<FLOAT64>, status STRING>
GENERATED ALWAYS AS (
  AI.EMBED(
    ref,
    connection_id => "us.my_connection",
    endpoint => "multimodalembedding@001")
)
STORED OPTIONS (asynchronous = true);

Mendapatkan informasi tentang kolom embedding yang dibuat secara otomatis

Untuk memverifikasi bahwa kolom adalah kolom embedding yang dibuat secara otomatis, buat kueri tampilan INFORMATION_SCHEMA.COLUMNS.

Kueri berikut menampilkan informasi tentang semua kolom embedding yang dibuat secara otomatis:

SELECT *
FROM PROJECT_ID.DATASET_ID.INFORMATION_SCHEMA.COLUMNS
WHERE is_generated = 'ALWAYS';

Kolom generation_expression menunjukkan panggilan ke fungsi AI.EMBED yang digunakan untuk membuat embedding pada kolom, termasuk argumen task_type => 'RETRIEVAL_DOCUMENT' default jika Anda tidak menentukan task_type untuk model yang mendukungnya.

Menggunakan pemesanan Anda sendiri

Secara default, BigQuery menggunakan slot on-demand untuk menangani pemrosesan yang diperlukan guna mempertahankan kolom embedding yang dihasilkan. Untuk memastikan performa yang dapat diprediksi dan konsisten, Anda dapat secara opsional membuat pemesanan dan menetapkan job_type ke BACKGROUND. Jika ada pemesanan latar belakang, BigQuery akan menggunakannya untuk mempertahankan kolom embedding yang dihasilkan.

Kuota

Saat Anda menggunakan endpoint Agent Platform untuk pembuatan embedding dengan menentukan parameter endpoint dalam fungsi AI.EMBED, BigQuery akan mengirim permintaan ke Agent Platform untuk membuat embedding. Permintaan ini tunduk pada kuota untuk Agent Platform. Kuota untuk permintaan per menit untuk model embedding Anda secara langsung memengaruhi throughput tugas pembuatan embedding latar belakang. Jika pembuatan embedding lambat, minta batas kuota yang lebih tinggi untuk Agent Platform dengan mengikuti petunjuk di bagian Meminta kuota yang lebih tinggi. Jika Anda menentukan parameter model dalam fungsi AI.EMBED, embedding akan dibuat dalam BigQuery dan tidak ada permintaan yang dikirim ke Agent Platform, sehingga kuota Agent Platform tidak berlaku.

Pemecahan masalah

Kolom embedding yang dihasilkan berisi dua kolom: result dan status. Jika terjadi error saat BigQuery mencoba membuat embedding untuk baris tertentu dalam tabel Anda, kolom result akan menjadi NULL dan kolom status akan menjelaskan error tersebut. Misalnya, jika kolom sumber adalah NULL, embedding result juga akan menjadi NULL dan statusnya adalah NULL value is not supported for embedding generation.

Error yang lebih parah dapat menghentikan pembuatan embedding. Dalam hal ini, Anda dapat membuat kueri kolom async_generation_status di tampilan INFORMATION_SCHEMA.COLUMNS untuk mengidentifikasi error pemblokiran.

Error pemblokiran dapat mencakup hal berikut:

  • Error izin ditolak
  • Error tidak ditemukan
  • Error endpoint model embedding yang tidak didukung
  • Error Vertex AI API tidak diaktifkan

Setelah tugas pembuatan embedding berikutnya berhasil, kolom async_generation_status akan dihapus.

Kueri berikut menunjukkan cara memeriksa error pemblokiran:

SELECT
  column_name,
  async_generation_status
FROM
  mydataset.INFORMATION_SCHEMA.COLUMNS
WHERE
  table_name = 'images';

Jika kolom image_embedding memiliki error pemblokiran, hasilnya akan mirip dengan berikut ini:

[
  {
    "column_name": "image_embedding",
    "async_generation_status": {
      "blocking_error": {
        "message": "<service_account> does not have the permission to access resources used by AI.EMBED. Please follow https://docs.cloud.google.com/bigquery/docs/permissions-for-ai-functions to set up permissions.",
        ...
      }
    }
  }
]

Anda juga dapat mengkueri tampilan INFORMATION_SCHEMA.JOBS untuk tugas latar belakang dan melihat informasi di kolom error_result. ID pekerjaan embedding latar belakang diawali dengan gc_. Misalnya, kueri berikut mengekstrak semua tugas latar belakang yang hasil error-nya bukan NULL:

SELECT * FROM `region-REGION.INFORMATION_SCHEMA.JOBS` j
WHERE EXISTS (
  SELECT 1
  FROM unnest(j.referenced_tables) t
  WHERE
    j.project_id = 'PROJECT_ID'
    AND t.dataset_id = 'DATASET_ID'
    AND t.table_id = 'TABLE'
)
AND starts_with(job_id, 'gc')
AND error_result IS NOT NULL
ORDER BY j.creation_time DESC;

Melacak biaya

Biaya pembuatan embedding otonom termasuk dalam kategori berikut.

Biaya DML latar belakang BigQuery

Embedding yang dihasilkan ditulis ke tabel Anda menggunakan tugas DML latar belakang. Secara default, BigQuery menggunakan slot on-demand untuk menangani tugas ini. Project tabel ditagih mengikuti model penagihan on-demand DML.

Atau, untuk memastikan performa yang dapat diprediksi dan konsisten, Anda dapat membuat pemesanan dan menetapkan job_type ke BACKGROUND. Jika ada pemesanan latar belakang, BigQuery akan menggunakannya untuk menjalankan tugas DML latar belakang. Dan pemesanan latar belakang akan ditagih untuk penggunaan waktu slot dari tugas DML latar belakang.

Untuk melacak nilai total_slot_ms dan total_bytes_billed untuk tugas DML latar belakang pada tabel, buat kueri tampilan INFORMATION_SCHEMA.JOBS untuk tugas dengan awalan job_id dari gc_:

SELECT
  job_id,
  creation_time,
  reservation_id,
  total_slot_ms,
  total_bytes_processed,
  total_bytes_billed
FROM
  `region-REGION.INFORMATION_SCHEMA.JOBS` j
WHERE
  EXISTS (
    SELECT 1
    FROM UNNEST(j.referenced_tables) t
    WHERE
      j.project_id = 'PROJECT_ID'
      AND t.dataset_id = 'DATASET_ID'
      AND t.table_id = 'TABLE'
  )
  AND STARTS_WITH(job_id, 'gc_')
ORDER BY
  j.creation_time DESC;

Ganti kode berikut:

  • REGION: region set data yang berisi tabel Anda, misalnya, us.
  • PROJECT_ID: ID project yang berisi tabel Anda.
  • DATASET_ID: nama set data yang berisi tabel Anda.
  • TABLE: nama tabel dengan pembuatan embedding otonom yang diaktifkan.

Jika Anda menentukan model embeddinggemma-300m bawaan menggunakan parameter model dalam fungsi AI.EMBED, BigQuery juga akan membuat embedding langsung dalam tugas DML latar belakang ini menggunakan slot BigQuery. Tidak ada permintaan yang dikirim ke Agent Platform dan tidak ada biaya Agent Platform yang dikenakan. Untuk mengetahui informasi selengkapnya, lihat Memilih model.

Biaya Gemini Enterprise Agent Platform

Saat Anda menentukan model Gemini Enterprise Agent Platform menggunakan parameter endpoint dalam fungsi AI.EMBED, pembuatan embedding otonom akan mengirimkan permintaan ke Gemini Enterprise Agent Platform, yang dapat menimbulkan biaya. Untuk melacak biaya Agent Platform yang timbul akibat tugas embedding latar belakang, ikuti langkah-langkah berikut:

  1. Lihat laporan penagihan Anda di Penagihan Cloud.
  2. Gunakan filter untuk mempersempit hasil.

    Untuk layanan, pilih Vertex AI.

  3. Untuk melihat biaya tugas tertentu, filter menurut label.

    Tetapkan kunci ke bigquery_ml_job dan nilai ke ID pekerjaan dari tugas embedding. Semua tugas embedding latar belakang memiliki awalan gc_.

Diperlukan waktu hingga 24 jam agar beberapa tagihan muncul di Penagihan Cloud.

Batasan

  • Setiap tabel mendukung maksimal satu kolom embedding yang dibuat secara otomatis.
  • Operasi DML serentak dapat menyebabkan penundaan dan kegagalan sementara dalam pembuatan embedding. Untuk performa yang lebih baik dan mengurangi biaya, sebaiknya masukkan data dalam batch dan hindari update DML yang sering.
  • Jika Anda menggunakan streaming API lama untuk menyerap data, mungkin akan ada beberapa penundaan sebelum pembuatan embedding dimulai.
  • Saat menggunakan BigQuery Storage Write API (gRPC), tugas pembuatan embedding latar belakang mungkin gagal jika tugas penulisan streaming berjalan secara serentak. Jika hal ini terjadi, kuota Agent Platform dan biaya DML latar belakang akan terbuang sia-sia. Penggunaan Storage Write API (gRPC) juga menyebabkan tugas pembuatan embedding serentak pada tabel, tetapi hal ini ditangani oleh BigQuery dan tidak ada kuota Agent Platform atau biaya DML latar belakang yang terbuang.
  • Untuk throughput yang lebih tinggi di endpoint jarak jauh Agent Platform, sebaiknya gunakan model embedding teks, bukan model Gemini. Untuk mengetahui informasi selengkapnya, lihat Kuota.
  • Tidak ada indikasi bahwa kolom dibuat secara otomatis saat Anda melihat skema tabel menggunakan konsol Google Cloud atau kolom ddl dari tampilan INFORMATION_SCHEMA.TABLES.
  • Jika Anda membuat salinan, clone, atau snapshot tabel yang memiliki kolom embedding yang dihasilkan, hanya data yang akan disalin. Konfigurasi pembuatan tidak berlaku untuk tabel baru, dan pembaruan pada kolom sumber tabel baru tidak akan menghasilkan embedding baru.
  • Jika Anda memulihkan tabel yang mengaktifkan pembuatan embedding otonom dari snapshot, konfigurasi pembuatan embedding tidak akan dipulihkan.
  • Saat menggunakan BigQuery API, Anda hanya dapat menentukan properti generatedColumn saat membuat kolom baru. Anda tidak dapat menambahkan, memperbarui, atau menghapus properti generatedColumn pada kolom yang ada.
  • Setelah Anda membuat kolom embedding yang dihasilkan, batasan berikut akan berlaku:

    • Anda tidak dapat menghapus atau mengganti nama kolom sumber, tetapi Anda masih dapat menghapus atau mengganti nama kolom embedding yang dihasilkan. Jika Anda menghapus kolom embedding, Anda dapat menghapus atau mengganti nama kolom sumber.
    • Anda tidak dapat mengubah jenis data kolom sumber atau kolom embedding yang dihasilkan.
  • Anda tidak dapat menentukan nilai default untuk kolom embedding yang dibuat secara otomatis.

  • Anda tidak dapat menulis langsung ke kolom embedding yang dihasilkan menggunakan metode berikut:

    • DML
    • Penulisan streaming
    • bq insert
    • bq load
    • bq copy -a
  • Tabel dengan kolom embedding yang dihasilkan tidak mendukung kebijakan keamanan tingkat kolom apa pun, seperti tag kebijakan.

  • Saat Anda memanggil fungsi penelusuran, seperti VECTOR_SEARCH atau AI.SEARCH, baris dengan embedding yang tidak ada dalam tabel dasar akan dilewati selama penelusuran.

  • Anda tidak dapat membuat indeks vektor berpartisi pada tabel yang mengaktifkan pembuatan embedding otonom.

  • Jika Anda membuat indeks vektor pada kolom embedding yang dibuat secara otomatis, pelatihan indeks akan dimulai setelah setidaknya 80% baris menghasilkan embedding. Anda dapat memeriksa progres pembuatan embedding dengan mengikuti langkah-langkah berikut:

    Buat kueri persentase embedding di tabel Anda yang telah dibuat:

    SELECT
      COUNTIF(description_embedding IS NOT NULL
      AND description_embedding.status = '') * 100.0 / COUNT(*) AS percent
    FROM PROJECT_ID.DATASET_ID.TABLE;
    

Langkah berikutnya