Tutorial ini menunjukkan cara menggunakan kueri SQL, fungsi AI.GENERATE, fungsi AI.EMBED, dan
BigQuery DataFrames untuk
menganalisis data multimodal dari
set data publik toko hewan peliharaan Cymbal.
Fungsi AI.GENERATE memungkinkan Anda menganalisis kombinasi data terstruktur dan
tidak terstruktur, dan fungsi AI.EMBED memungkinkan Anda membuat
embedding
dari data teks atau gambar di BigQuery.
Anda dapat menemukan gambar serupa menggunakan fungsi VECTOR_SEARCH. Fungsi VECTOR_SEARCH memungkinkan Anda melakukan penelusuran semantik atau penelusuran campuran pada embedding untuk menemukan entity yang serupa.
Tutorial ini menggunakan tabel objek persisten
yang menyimpan nilai ObjectRef.
Tujuan
- Gunakan nilai
ObjectRefuntuk menyimpan data gambar bersama dengan data terstruktur dalam tabel BigQuery. - Gunakan fungsi
AI.GENERATEuntuk memperkaya data Anda. - Gunakan fungsi
AI.EMBEDuntuk membuat embedding berdasarkan data gambar. - Gunakan fungsi
VECTOR_SEARCHuntuk menemukan gambar serupa. - Gunakan array nilai
ObjectRefuntuk meringkas panduan pengguna.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
- BigQuery: you incur costs for the data that you process in BigQuery.
- Cloud Storage: you incur costs for reading the objects stored in Cloud Storage.
- Gemini Enterprise Agent Platform: you incur costs for calls to Agent Platform models.
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Untuk mengetahui informasi selengkapnya tentang biaya, lihat halaman harga berikut:
Sebelum memulai
-
Di konsol Google Cloud , pada halaman pemilih project, pilih atau buat project Google Cloud .
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
-
Aktifkan BigQuery, BigQuery Connection, Cloud Storage, dan Agent Platform API.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tutorial ini, minta administrator Anda untuk memberi Anda peran IAM berikut:
-
Membuat set data dan tabel:
BigQuery Data Owner (
roles/bigquery.dataOwner) -
Menjalankan tugas BigQuery:
BigQuery Job User (
roles/bigquery.jobUser) -
Membuat koneksi:
BigQuery Connection Admin (
roles/bigquery.connectionAdmin) -
Memberikan izin ke akun layanan koneksi:
Project IAM Admin (
roles/resourcemanager.projectIamAdmin) -
Buat URL yang memungkinkan Anda membaca dan mengubah objek Cloud Storage:
Admin ObjectRef BigQuery (
roles/bigquery.objectRefAdmin)
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 set data, tabel, model, dan koneksi
Di bagian ini, Anda akan membuat set data, koneksi, tabel, dan model yang digunakan dalam tutorial ini.
Membuat set data
Buat set data BigQuery untuk memuat objek yang Anda buat dalam tutorial ini dengan memilih salah satu opsi berikut:
Konsol
Di konsol Google Cloud , buka halaman BigQuery.
Di panel kiri, klik Explorer:

Jika Anda tidak melihat panel kiri, klik Luaskan panel kiri untuk membuka panel.
Di Explorer, luaskan project Anda, lalu klik Datasets.
Di halaman Set Data, klik Buat set data.
Di halaman Create dataset, lakukan hal berikut:
Untuk Dataset ID, masukkan
cymbal_pets.Untuk Lokasi data, pilih Amerika Serikat.
Jangan ubah setelan default yang tersisa, lalu klik Create dataset.
SQL
Gunakan pernyataan CREATE SCHEMA.
Di konsol Google Cloud , buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
CREATE SCHEMA
PROJECT_ID.cymbal_pets OPTIONS ( description = 'Dataset for BigQuery ML tutorial', location = 'US');Ganti
PROJECT_IDdengan project ID Anda.Klik Run.
Untuk mengetahui informasi selengkapnya tentang cara menjalankan kueri, lihat artikel Menjalankan kueri interaktif.
Anda akan menerima pesan konfirmasi yang mirip dengan berikut ini: The dataset
named cymbal_pets was created.
Membuat koneksi
Buat koneksi resource Cloud dan dapatkan akun layanan koneksi. BigQuery menggunakan koneksi untuk mengakses objek di Cloud Storage.
Di panel kiri, klik Explorer:

Di panel Explorer, klik Connections.
Di halaman Connections, klik Create connection.
Di halaman External data source, lakukan hal berikut:
Untuk Connection type, pilih Vertex AI remote models, remote functions, Lakehouse and Spanner (Cloud Resource).
Di kolom Connection ID, ketik
cymbal_conn.Tetap gunakan nilai default untuk setelan lainnya, lalu klik Buat koneksi.
Di halaman Connections, klik
cymbal_conn.Di panel Connection info, salin nilai ID akun layanan. Diperlukan untuk langkah-langkah berikut.
Memberikan izin untuk menggunakan model Agent Platform
Berikan peran Agent Platform User kepada akun layanan koneksi untuk mengakses model jarak jauh di Agent Platform. Anda harus memberikan
peran ini di project yang sama dengan yang Anda buat atau pilih sebelumnya. Memberikan
peran dalam project yang berbeda akan menyebabkan error
bqcx-1234567890-abcd@gcp-sa-bigquery-condel.iam.gserviceaccount.com
does not have the permission to access resource.
Untuk memberikan akses akun layanan agar dapat menggunakan model Agent Platform, ikuti langkah-langkah berikut:
Buka halaman IAM & Admin.
Klik Grant access.
Dalam dialog Berikan akses, lakukan hal berikut:
Di kolom New principals, masukkan ID akun layanan yang Anda salin sebelumnya.
Di kolom Select a role, pilih atau cari Agent Platform User.
Klik Simpan.
Buat tabel products
Untuk membuat tabel standar yang berisi informasi produk hewan peliharaan Cymbal, ikuti langkah-langkah berikut untuk memuat data dari Cloud Storage:
Di konsol Google Cloud , buka halaman Studio.
Untuk membuat tabel
products, pilih salah satu opsi berikut:SQL
Tempel perintah ini ke editor kueri, lalu klik Jalankan:
LOAD DATA OVERWRITE cymbal_pets.products FROM FILES( format = 'avro', uris = [ 'gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/tables/products/products_*.avro']);
Anda akan menerima pesan konfirmasi yang mirip dengan berikut ini:
Data was successfully loaded into managed table.BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal.
Buat tabel product_images
Untuk membuat tabel objek (product_images) yang berisi gambar produk hewan peliharaan Cymbal, pilih salah satu opsi berikut:
* { SQL }
Paste this command into the query editor, and then click
<span class="material-icons" aria-hidden="true">play_circle</span>
**Run**:
<pre class="lang-googlesql notranslate prettyprint devsite-click-to-copy">
CREATE OR REPLACE EXTERNAL TABLE cymbal_pets.product_images
WITH CONNECTION `us.cymbal_conn`
OPTIONS (
object_metadata = 'SIMPLE',
uris = ['gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/images/*.png'],
max_staleness = INTERVAL 30 MINUTE,
metadata_cache_mode = AUTOMATIC);
</pre>
You receive a confirmation message similar to the following: `This
statement created a new table named product_images.`
* { BigQuery DataFrames }
Before trying this sample, follow the BigQuery DataFrames
setup instructions in the BigQuery quickstart
using BigQuery DataFrames.
For more information, see the
BigQuery DataFrames reference documentation.
To authenticate to BigQuery, set up Application Default Credentials.
For more information, see Set
up ADC for a local development environment.
Membuat model
Petunjuk SQL dalam tutorial ini menunjukkan cara memanggil fungsi AI yang tidak mengharuskan Anda membuat model. Jika Anda mengikuti petunjuk BigQuery DataFrames, pilih opsi tersebut untuk membuat model jarak jauh yang merepresentasikan model Gemini dan model embedding multimodal.
SQL
Anda dapat melewati langkah ini.
BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames.
Untuk mengetahui informasi selengkapnya, lihat
dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan
ADC untuk lingkungan pengembangan lokal.
Membuat tabel products_mm dengan data multimodal
Buat tabel products_mm yang berisi kolom image yang diisi dengan
gambar produk dari tabel objek product_images. Kolom image yang dibuat adalah kolom STRUCT yang menggunakan nilai ObjectRef untuk menyimpan data gambar bersama data terstruktur dalam tabel standar BigQuery.
Nilai ObjectRef adalah jenis STRUCT dengan skema standar yang mereferensikan objek Cloud Storage untuk analisis multimodal.
Nilai ObjectRef dapat diproses oleh fungsi OBJ,
fungsi AI, atau
fungsi yang ditentukan pengguna Python.
Untuk membuat dan mengisi tabel products_mm, ikuti langkah-langkah berikut:
Untuk membuat tabel products_mm, pilih salah satu opsi berikut:
SQL
Tempel perintah ini ke editor kueri, lalu klik
Jalankan:
CREATE OR REPLACE TABLE cymbal_pets.products_mm
AS
SELECT products.* EXCEPT (uri), ot.ref AS image FROM cymbal_pets.products
INNER JOIN cymbal_pets.product_images ot
ON ot.uri = products.uri;
Anda akan menerima pesan konfirmasi yang mirip dengan berikut ini: This
statement created a new table named products_mm.
BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames.
Untuk mengetahui informasi selengkapnya, lihat
dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan
ADC untuk lingkungan pengembangan lokal.
Untuk melihat data kolom image, pilih salah satu opsi berikut:
SQL
Tempel perintah ini ke editor kueri, lalu klik
Jalankan:
SELECT product_name, image
FROM cymbal_pets.products_mm
BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames.
Untuk mengetahui informasi selengkapnya, lihat
dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan
ADC untuk lingkungan pengembangan lokal.
Hasilnya akan mirip seperti berikut:
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
| product_name | image.uri | image.version | image.authorizer | image.details |
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
| AquaClear Aquarium Background | gs://cloud-samples-data/bigquery/ | 1234567891011 | myproject.region.myconnection | {"gcs_metadata":{"content_type":"image/png", |
| | tutorials/cymbal-pets/images/ | | | "md5_hash":"494f63b9b137975ff3e7a11b060edb1d", |
| | aquaclear-aquarium-background.png | | | "size":1282805,"updated":1742492680017000}} |
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
| AquaClear Aquarium | gs://cloud-samples-data/bigquery/ | 2345678910112 | myproject.region.myconnection | {"gcs_metadata":{"content_type":"image/png", |
| Gravel Vacuum | tutorials/cymbal-pets/images/ | | | "md5_hash":"b7bfc2e2641a77a402a1937bcf0003fd", |
| | aquaclear-aquarium-gravel-vacuum.png | | | "size":820254,"updated":1742492682411000}} |
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
| ... | ... | ... | | ... |
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
Membuat informasi produk
Gunakan fungsi AI.GENERATE
untuk menghasilkan data berikut untuk produk toko hewan peliharaan:
- Tambahkan kolom
image_description ke tabel products_mm.
- Isi kolom
animal_type, search_keywords, dan subcategory
pada tabel products_mm.
- Jalankan kueri yang menampilkan deskripsi setiap merek produk dan juga jumlah produk dari merek tersebut. Deskripsi merek dibuat dengan menganalisis informasi produk untuk semua produk dari merek tersebut, termasuk gambar produk.
Dengan fungsi AI.GENERATE, Anda dapat memilih untuk membuat teks atau
output terstruktur
sesuai dengan skema kustom yang Anda tentukan. Fungsi ini bekerja dengan mengirimkan permintaan ke model Gemini dan menampilkan struct yang berisi data yang dihasilkan, respons model lengkap, dan status.
Untuk membuat data produk, ikuti langkah-langkah berikut:
Untuk membuat informasi produk menggunakan AI.GENERATE, pilih salah satu opsi berikut:
SQL
Untuk membuat dan mengisi kolom image_description, tempel kode berikut
ke editor kueri, lalu klik
Run:
-- Add the column to the existing table
ALTER TABLE bqml_tutorial.products_mm
ADD COLUMN IF NOT EXISTS image_description STRING;
-- Populate the new column using the AI.GENERATE function
UPDATE bqml_tutorial.products_mm
SET image_description = AI.GENERATE(
('Describe the following image: ', image),
endpoint => 'gemini-3.5-flash'
).result
WHERE image_description IS NULL;
Anda akan menerima pesan konfirmasi yang mirip dengan berikut ini: This
statement altered the table named products_mm.
BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames.
Untuk mengetahui informasi selengkapnya, lihat
dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan
ADC untuk lingkungan pengembangan lokal.
Untuk melihat konten kolom image_description, tempelkan perintah berikut ke editor kueri, lalu klik Jalankan:
SELECT product_name, image_description
FROM cymbal_pets.products_mm;
Hasilnya akan mirip seperti berikut:
+--------------------------------+-------------------------------------+
| product_name | image_description |
+--------------------------------+-------------------------------------+
| AquaClear Aquarium Background | The image shows a colorful coral |
| | reef backdrop. The background is a |
| | blue ocean with a bright light... |
| | |
| | |
+--------------------------------+-------------------------------------+
| AquaClear Aquarium | The image shows a long, clear |
| Gravel Vacuum | plastic tube with a green hose |
| | attached to one end. The tube... |
| | |
| | |
+--------------------------------+-------------------------------------+
| ... | ... |
+--------------------------------+-------------------------------------+
Untuk memperbarui kolom animal_type, search_keywords, dan subcategory
dengan data yang dihasilkan, pilih salah satu opsi berikut:
SQL
Tempelkan kode berikut ke editor kueri, lalu klik
Run:
UPDATE cymbal_pets.products_mm t
SET
animal_type = r.animal_type,
search_keywords = SPLIT(r.search_keywords, ','),
subcategory = r.subcategory
FROM (
SELECT
product_id,
g.* EXCEPT(full_response, status)
FROM bqml_tutorial.products_mm,
UNNEST([AI.GENERATE(
('For the image and description of a pet product, concisely generate the following metadata: 1) animal_type and 2) 5 SEO search keywords (comma separated), and 3) product subcategory. ', image, description),
endpoint => 'gemini-3.5-flash',
output_schema => 'animal_type STRING, search_keywords STRING, subcategory STRING'
)]) AS g
) r
WHERE t.product_id = r.product_id;
Anda akan menerima pesan konfirmasi yang mirip dengan berikut ini: This
statement modified 205 rows in products_mm.
BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames.
Untuk mengetahui informasi selengkapnya, lihat
dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan
ADC untuk lingkungan pengembangan lokal.
Untuk melihat data yang dihasilkan, pilih salah satu opsi berikut:
SQL
Tempelkan kode berikut ke editor kueri, lalu klik
Run:
SELECT
product_name,
image_description,
animal_type,
search_keywords,
subcategory,
FROM cymbal_pets.products_mm;
BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames.
Untuk mengetahui informasi selengkapnya, lihat
dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan
ADC untuk lingkungan pengembangan lokal.
Hasilnya akan mirip seperti berikut:
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
| product_name | image_description | animal_type | search_keywords | subcategory |
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
| AquaClear Aquarium Background | The image shows a colorful coral | fish | aquarium background | aquarium decor |
| | reef backdrop. The background is a | | fish tank backdrop | |
| | blue ocean with a bright light... | | coral reef decor | |
| | | | underwater scenery | |
| | | | aquarium decoration | |
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
| AquaClear Aquarium | The image shows a long, clear | fish | aquarium gravel vacuum | aquarium |
| Gravel Vacuum | plastic tube with a green hose | | aquarium cleaning | cleaning |
| | attached to one end. The tube... | | aquarium maintenance | |
| | | | fish tank cleaning | |
| | | | gravel siphon | |
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
| ... | ... | ... | ... | ... |
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
Untuk membuat deskripsi setiap merek produk dan jumlah produk dari merek tersebut, pilih salah satu opsi berikut:
SQL
Tempelkan kode berikut ke editor kueri, lalu klik
Run:
SELECT
brand,
COUNT(*) AS cnt,
AI.GENERATE(('Use the images and text to give one concise brand description ',
'for a website brand page. Return the description only.',
ARRAY_AGG(image LIMIT 10), ARRAY_AGG(description), ARRAY_AGG(category),
ARRAY_AGG(subcategory)),
endpoint => 'gemini-2.5-pro').result AS brand_description
FROM
cymbal_pets.products_mm
GROUP BY brand
ORDER BY cnt DESC;
BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames.
Untuk mengetahui informasi selengkapnya, lihat
dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan
ADC untuk lingkungan pengembangan lokal.
Hasilnya akan mirip seperti berikut:
+--------------+-------------------------------------+-----+
| brand | brand_description | cnt |
+--------------+-------------------------------------+-----+
| AquaClear | AquaClear is a brand of aquarium | 33 |
| | and pond care products that offer | |
| | a wide range of solutions for... | |
+--------------+-------------------------------------+-----+
| Ocean | Ocean Bites is a brand of cat food | 28 |
| Bites | that offers a variety of recipes | |
| | and formulas to meet the specific.. | |
+--------------+-------------------------------------+-----+
| ... | ... |... |
+--------------+-------------------------------------+-----+
Membuat embedding dan melakukan penelusuran vektor
Buat embedding dari data gambar, lalu gunakan embedding untuk menampilkan gambar serupa menggunakan penelusuran vektor.
Dalam skenario produksi, sebaiknya buat
indeks vektor
sebelum menjalankan penelusuran vektor. Indeks vektor memungkinkan Anda melakukan penelusuran vektor dengan lebih cepat, dan menampilkan hasil yang lebih mendekati, tetapi perolehan berkurang.
Untuk membuat sematan dan melakukan penelusuran vektor, ikuti langkah-langkah berikut:
Untuk membuat tabel products_embeddings, pilih salah satu opsi berikut:
SQL
Tempelkan kode berikut ke editor kueri, lalu klik
Run:
CREATE OR REPLACE TABLE cymbal_pets.products_embedding
AS (
SELECT
product_id,
AI.EMBED(image, endpoint => 'gemini-embedding-2').result AS embedding,
image
FROM cymbal_pets.products_mm
);
Anda akan menerima pesan konfirmasi yang mirip dengan berikut ini: This
statement created a new table named products_embedding.
BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames.
Untuk mengetahui informasi selengkapnya, lihat
dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan
ADC untuk lingkungan pengembangan lokal.
Untuk melakukan penelusuran vektor yang menampilkan gambar produk yang mirip dengan
gambar input yang diberikan, pilih salah satu opsi berikut:
SQL
Tempelkan kode berikut ke editor kueri, lalu klik
Run:
SELECT *
FROM
VECTOR_SEARCH(
TABLE cymbal_pets.products_embedding,
'embedding',
query_value => AI.EMBED(
OBJ.MAKE_REF('gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/images/cozy-naps-cat-scratching-post-with-condo.png'),
endpoint => 'gemini-embedding-2').result);
BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames.
Untuk mengetahui informasi selengkapnya, lihat
dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan
ADC untuk lingkungan pengembangan lokal.
Hasilnya akan mirip seperti berikut:
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
| query.embedding | base.product_id | base.embedding | base.image.uri | base.image.version | base.image.authorizer | base.image.details | distance |
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
| -0.0112330541 | 181 | -0.0112330541 | gs://cloud-samples-data/bigquery/ | 12345678910 | myproject.region.myconnection | {"gcs_metadata":{"content_type": | 0.0 |
| 0.0142525584 | | 0.0142525584 | tutorials/cymbal-pets/images/ | | | "image/png","md5_hash":"21234567hst16555w60j", | |
| 0.0135886827 | | 0.0135886827 | cozy-naps-cat-scratching-post-with-condo.png | | | "size":828318,"updated":1742492688982000}} | |
| 0.0149955815 | | 0.0149955815 | | | | | |
| ... | | ... | | | | | |
| | | | | | | | |
| | | | | | | | |
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
| -0.0112330541 | 187 | -0.0190353896 | gs://cloud-samples-data/bigquery/ | 23456789101 | myproject.region.myconnection | {"gcs_metadata":{"content_type": | 0.4216330832.. |
| 0.0142525584 | | 0.0116206668 | tutorials/cymbal-pets/images/ | | | "image/png","md5_hash":"7328728fhakd9937djo4", | |
| 0.0135886827 | | 0.0136198215 | cozy-naps-cat-scratching-post-with-bed.png | | | "size":860113,"updated":1742492688774000}} | |
| 0.0149955815 | | 0.0173457414 | | | | | |
| ... | | ... | | | | | |
| | | | | | | | |
| | | | | | | | |
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
| ... | ... | ... | ... | ... | ... | ... | ... |
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
Memproses data multimodal yang diurutkan menggunakan array nilai ObjectRef
Bagian ini menunjukkan cara meringkas panduan pengguna dengan memproses data multimodal yang diurutkan menggunakan array nilai ObjectRef. BigQuery dapat menganalisis beberapa file tidak terstruktur secara bersamaan menggunakan array.
Anda akan menyelesaikan tugas-tugas berikut:
Buat tabel product_manuals sehingga berisi file PDF untuk
manual produk Crittercuisine Pro 5000, dan file PDF untuk setiap halaman
manual tersebut.
Buat tabel yang memetakan manual ke bagian-bagiannya. Manual lengkap dan halaman manual masing-masing disimpan dalam kolom ObjectRef.
Menganalisis array nilai ObjectRef secara bersamaan untuk menampilkan satu nilai yang dihasilkan.
Analisis array nilai ObjectRef secara terpisah dan tampilkan nilai yang dihasilkan untuk setiap nilai array.
Untuk memproses data multimodal yang diurutkan menggunakan nilai ObjectRef, ikuti langkah-langkah berikut:
Untuk membuat tabel product_manuals, pilih salah satu opsi berikut:
SQL
Tempelkan kode berikut ke editor kueri, lalu klik
Run:
CREATE OR REPLACE EXTERNAL TABLE `cymbal_pets.product_manuals`
WITH CONNECTION `us.cymbal_conn`
OPTIONS (
object_metadata = 'SIMPLE',
uris = [
'gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/documents/*.pdf',
'gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/document_chunks/*.pdf']);
Anda akan menerima pesan konfirmasi yang mirip dengan berikut ini: This
statement created a new table named product_manuals.
BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames.
Untuk mengetahui informasi selengkapnya, lihat
dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan
ADC untuk lingkungan pengembangan lokal.
Untuk menulis data PDF ke tabel map_manual_to_chunks, pilih salah satu opsi berikut:
SQL
Tempelkan kode berikut ke editor kueri, lalu klik
Run:
-- Extract the file and chunks into a single table.
-- Store the chunks in the chunks column as array of ObjectRefs (ordered by page number)
CREATE OR REPLACE TABLE cymbal_pets.map_manual_to_chunks
AS
SELECT ARRAY_AGG(m1.ref)[0] manual, ARRAY_AGG(m2.ref ORDER BY m2.ref.uri) chunks
FROM cymbal_pets.product_manuals m1
JOIN cymbal_pets.product_manuals m2
ON
REGEXP_EXTRACT(m1.uri, r'.*/([^.]*).[^/]+')
= REGEXP_EXTRACT(m2.uri, r'.*/([^.]*)_page[0-9]+.[^/]+')
GROUP BY m1.uri;
Anda akan menerima pesan konfirmasi yang mirip dengan berikut ini: This
statement created a new table named map_manual_to_chunks.
BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames.
Untuk mengetahui informasi selengkapnya, lihat
dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan
ADC untuk lingkungan pengembangan lokal.
Untuk melihat data PDF dalam tabel map_manual_to_chunks, pilih salah satu opsi berikut:
SQL
Tempelkan kode berikut ke editor kueri, lalu klik
Run:
SELECT *
FROM cymbal_pets.map_manual_to_chunks;
BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames.
Untuk mengetahui informasi selengkapnya, lihat
dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan
ADC untuk lingkungan pengembangan lokal.
Hasilnya akan mirip seperti berikut:
+-------------------------------------+--------------------------------+-----------------------------------+------------------------------------------------------+-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
| manual.uri | manual.version | manual.authorizer | manual.details | chunks.uri | chunks.version | chunks.authorizer | chunks.details |
+-------------------------------------+--------------------------------+-----------------------------------+------------------------------------------------------+-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
| gs://cloud-samples-data/bigquery/ | 1742492785900455 | myproject.region.myconnection | {"gcs_metadata":{"content_type":"application/pef", | gs://cloud-samples-data/bigquery/ | 1745875761227129 | myproject.region.myconnection | {"gcs_metadata":{"content_type":"application/pdf", |
| tutorials/cymbal-pets/documents/ | | | "md5_hash":"c9032b037693d15a33210d638c763d0e", | tutorials/cymbal-pets/documents/ | | | "md5_hash":"5a1116cce4978ec1b094d8e8b49a1d7c", |
| crittercuisine_5000_user_manual.pdf | | | "size":566105,"updated":1742492785941000}} | crittercuisine_5000_user_manual_page1.pdf | | | "size":504583,"updated":1745875761266000}} |
| | | | +-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
| | | | | crittercuisine_5000_user_manual_page1.pdf | 1745875760613874 | myproject.region.myconnection | {"gcs_metadata":{"content_type":"application/pdf", |
| | | | | tutorials/cymbal-pets/documents/ | | | "md5_hash":"94d03ec65d28b173bc87eac7e587b325", |
| | | | | crittercuisine_5000_user_manual_page2.pdf | | | "size":94622,"updated":1745875760649000}} |
| | | | +-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
| | | | | ... | ... | ... | ... |
+-------------------------------------+--------------------------------+-----------------------------------+------------------------------------------------------+-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
Untuk menghasilkan satu respons dari model Gemini berdasarkan analisis array nilai ObjectRef, pilih salah satu opsi berikut:
SQL
Tempelkan kode berikut ke editor kueri, lalu klik
Run:
SELECT
AI.GENERATE((
'''Can you provide a page by page summary for the first 3 pages of the attached manual?
Only write one line for each page. The pages are provided in serial order''',
chunks),
endpoint => 'gemini-3.5-flash').result AS Response,
FROM cymbal_pets.map_manual_to_chunks;
BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames.
Untuk mengetahui informasi selengkapnya, lihat
dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan
ADC untuk lingkungan pengembangan lokal.
Hasilnya akan mirip seperti berikut:
+---------------------------------------------------------------------------+
| Response |
+---------------------------------------------------------------------------+
| Here is a one-line summary for each of the first 3 pages: |
| |
| Page 1 introduces the CritterCuisine Pro 5000 automatic pet feeder and |
| presents the initial part of the manual's Table of Contents. |
| Page 2 lists the items included with the feeder and details important |
| safety precautions for its use. |
| Page 3 describes the feeder's key features, provides assembly and initial |
| setup instructions, and begins the programming guide with clock setting. |
+---------------------------------------------------------------------------+
Untuk membuat beberapa respons dari model Gemini berdasarkan analisis serangkaian nilai ObjectRef, pilih salah satu opsi berikut:
SQL
Tempelkan kode berikut ke editor kueri, lalu klik
Run:
WITH results AS (
SELECT
AI.GENERATE((
'''Can you provide a page by page summary for the first 3 pages of the attached manual?
Only write one line for each page. The pages are provided in serial order''',
chunks),
endpoint => 'gemini-3.5-flash',
output_schema => 'page1_summary STRING, page2_summary STRING, page3_summary STRING').*
FROM cymbal_pets.map_manual_to_chunks)
SELECT page1_summary, page2_summary, page3_summary
FROM results;
BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames.
Untuk mengetahui informasi selengkapnya, lihat
dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan
ADC untuk lingkungan pengembangan lokal.
Hasilnya akan mirip seperti berikut:
+-----------------------------------------------+-------------------------------------------+----------------------------------------------------+
| page1_summary | page2_summary | page3_summary |
+-----------------------------------------------+-------------------------------------------+----------------------------------------------------+
| This manual provides an overview of the | This section explains how to program | This page covers connecting the feeder to Wi-Fi |
| CritterCuisine Pro 5000 automatic pet feeder, | the feeder's clock, set feeding | using the CritterCuisine Connect app, remote |
| including its features, safety precautions, | schedules, copy and delete meal settings, | feeding, managing feeding schedules, viewing |
| assembly instructions, and initial setup. | manually feed your pet, record | feeding logs, receiving low food alerts, |
| | a voice message, and understand | updating firmware, creating multiple pet profiles, |
| | the low food level indicator. | sharing access with other users, and cleaning |
| | | and maintaining the feeder. |
+-----------------------------------------------+-------------------------------------------+----------------------------------------------------+
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
- Di konsol Google Cloud , buka halaman Manage resources.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Atau, untuk mempertahankan project dan menghapus resource yang digunakan dalam tutorial ini, ikuti langkah-langkah berikut:
Buka halaman BigQuery.
Di panel kiri, luaskan project Anda, lalu klik Set Data.
Untuk set data
bqml_tutorial, klik Open actions > Delete.Di dialog Hapus set data, klik Hapus untuk mengonfirmasi.
Di panel kiri, klik Connections.
Untuk koneksi
cymbal_conn, klik Buka tindakan > Hapus.Di dialog Hapus koneksi, masukkan
delete, lalu klik Hapus untuk mengonfirmasi.
Langkah berikutnya
- Untuk mengetahui informasi selengkapnya tentang cara bekerja dengan data multimodal, lihat Menganalisis data multimodal di BigQuery.
- Untuk mengetahui informasi selengkapnya tentang nilai
ObjectRef, lihat Menangani nilai ObjectRef. - Untuk mempelajari cara menganalisis data multimodal dengan SQL dan fungsi
OBJ.LIST, lihat Menganalisis data multimodal dengan SQL.
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2026-09-17 UTC.