Dalam tutorial ini, Anda menggunakan model jarak jauh
dengan fungsi AI.GENERATE_EMBEDDING
untuk membuat embedding teks
dalam tabel BigQuery. Kemudian, Anda membuat indeks vektor
untuk mengindeks embedding guna meningkatkan performa penelusuran.
Anda menggunakan fungsi VECTOR_SEARCH
dengan embedding untuk menelusuri teks serupa. Penelusuran vektor adalah teknik untuk membandingkan objek serupa menggunakan embedding, yang merupakan vektor numerik berdimensi tinggi yang merepresentasikan entity tertentu, seperti teks.
Terakhir, Anda melakukan retrieval-augmented generation (RAG)
dengan membuat teks menggunakan fungsi AI.GENERATE_TEXT.
RAG adalah framework AI yang menggabungkan kekuatan sistem pengambilan informasi (seperti penelusuran dan database) dengan kemampuan model bahasa besar (LLM) generatif. Dengan menggabungkan data dan pengetahuan dasar Anda beserta keterampilan bahasa LLM, grounding akan memberikan hasil yang lebih akurat, aktual, dan relevan dengan kebutuhan spesifik Anda.
Tutorial ini menggunakan data dari set data publik Google Patents Research.
Tujuan
- Membuat model jarak jauh BigQuery ML melalui model embedding Gemini Enterprise Agent Platform.
- Menggunakan model jarak jauh dengan fungsi
AI.GENERATE_EMBEDDINGuntuk membuat embedding dari teks dalam tabel BigQuery. - Membuat indeks vektor untuk mengindeks embedding guna meningkatkan performa penelusuran.
- Menggunakan fungsi
VECTOR_SEARCHdengan embedding untuk menelusuri teks serupa. - Melakukan RAG dengan membuat teks menggunakan fungsi
AI.GENERATE_TEXT, dan menggunakan hasil penelusuran vektor untuk menambah input perintah dan meningkatkan hasil.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloud yang dapat ditagih berikut Google Cloud:
- BigQuery ML: You incur costs for the data that you process in BigQuery.
- Gemini Enterprise Agent Platform: You incur costs for calls to the Agent Platform service that's represented by the remote model.
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Untuk mengetahui informasi selengkapnya, lihat halaman harga berikut:
Sebelum memulai
-
Di Google Cloud konsol, pada halaman pemilih project, pilih atau buat Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Memilih 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.
-
Pastikan penagihan diaktifkan untuk Google Cloud project Anda.
-
Aktifkan BigQuery, Cloud Storage, dan Gemini Enterprise 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 Service Usage (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, tabel, dan model:
Pemilik Data BigQuery (
roles/bigquery.dataOwner) -
Menjalankan tugas BigQuery:
Pengguna Tugas BigQuery (
roles/bigquery.jobUser) -
Membuat dan mengelola koneksi:
Admin Koneksi BigQuery (
roles/bigquery.connectionAdmin)
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
Untuk membuat set data BigQuery, pilih salah satu opsi berikut:
Konsol
Di Google Cloud konsol, 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 Datasets, klik Create dataset.
Di panel Create dataset, lakukan hal berikut:
Untuk Dataset ID, masukkan
bqml_tutorial.Untuk Data location, pilih US.
Biarkan setelan default yang tersisa seperti apa adanya.
Klik Create dataset.
bq
Untuk membuat set data baru, gunakan perintah
bq mk --dataset.
Buat set data bernama
bqml_tutorialdengan lokasi data ditetapkan keUS:bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Pastikan set data telah dibuat:
bq ls
API
Panggil metode datasets.insert
dengan resource set data yang ditentukan:
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
Membuat model jarak jauh untuk pembuatan embedding teks
Di bagian ini, Anda akan membuat model jarak jauh yang merepresentasikan model pembuatan embedding teks Agent Platform yang dihosting.
Saat membuat model, Anda menggunakan koneksi DEFAULT
untuk memanggil Text embeddings API
guna mendapatkan embedding teks menggunakan model text-embedding-005. Jika Anda tidak memiliki koneksi default, pernyataan CREATE MODEL akan membuatnya untuk Anda.
Untuk membuat model embedding teks, ikuti langkah-langkah berikut:
Di Google Cloud konsol, buka halaman BigQuery.
Untuk membuat model, tempel perintah ini ke editor kueri, lalu klik Run:
CREATE OR REPLACE MODEL `bqml_tutorial.embedding_model` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT = 'text-embedding-005');
Kueri memerlukan waktu beberapa detik untuk diselesaikan, setelah itu model
embedding_modeldapat diakses melalui panel Explorer.Anda akan menerima pesan konfirmasi seperti berikut:
Successfully created model named embedding_model.
Membuat embedding teks
Buat embedding teks dari abstrak paten menggunakan fungsi
AI.GENERATE_EMBEDDING,
lalu tulis ke tabel BigQuery sehingga dapat di
telusuri.
Pembuatan embedding menggunakan fungsi
AI.GENERATE_EMBEDDINGmungkin gagal karena kuota LLM Agent Platform
atau ketidaktersediaan layanan.
Jika gagal, detail error akan ditampilkan di kolom status dalam hasil kueri.
Untuk metode pembuatan embedding teks alternatif di BigQuery, lihat tutorial Menyematkan teks dengan model TensorFlow yang telah dilatih sebelumnya.
Untuk membuat embedding teks, tempel perintah ini ke editor kueri, lalu klik Run:
CREATE OR REPLACE TABLEbqml_tutorial.embeddingsAS SELECT * FROM AI.GENERATE_EMBEDDING( MODELbqml_tutorial.embedding_model, ( SELECT *, abstract AS content FROMpatents-public-data.google_patents_research.publicationsWHERE LENGTH(abstract) > 0 AND LENGTH(title) > 0 AND country = 'Singapore' ) ) WHERE LENGTH(status) = 0;
Kueri ini memerlukan waktu beberapa menit untuk diselesaikan. Anda akan menerima pesan konfirmasi
seperti berikut:This statement created a new table named
embeddings.
Membuat indeks vektor
Jika Anda membuat indeks vektor di kolom embedding, penelusuran vektor yang dilakukan di kolom tersebut akan menggunakan teknik penelusuran Approximate Nearest Neighbor. Teknik ini meningkatkan performa penelusuran vektor dan menampilkan hasil yang lebih perkiraan, tetapi recall akan berkurang.
Untuk membuat indeks vektor, Anda menggunakan
CREATE VECTOR INDEX
pernyataan bahasa definisi data (DDL). Untuk memverifikasi bahwa indeks tersedia,
Anda membuat kueri tampilan INFORMATION_SCHEMA.VECTOR_INDEXES
untuk memverifikasi bahwa nilai kolom coverage_percentage lebih besar dari 0,
dan nilai kolom last_refresh_time bukan NULL.
Untuk membuat dan memverifikasi indeks vektor, ikuti langkah-langkah berikut:
Untuk membuat indeks vektor, tempel perintah ini ke editor kueri, dan lalu klik Run:
CREATE OR REPLACE VECTOR INDEX my_index ON `bqml_tutorial.embeddings`(embedding) OPTIONS(index_type = 'IVF', distance_type = 'COSINE', ivf_options = '{"num_lists":500}');
Anda akan menerima pesan konfirmasi seperti berikut:
The vector index creation on table bqml_tutorial.embeddings was initiated. Please query bqml_tutorial.INFORMATION_SCHEMA.VECTOR_INDEXES to check the progress of the index.Membuat indeks vektor biasanya hanya memerlukan waktu beberapa detik. Indeks vektor memerlukan waktu dua hingga tiga menit lagi untuk diisi secara asinkron.
Untuk memverifikasi bahwa indeks siap digunakan, tempel perintah ini ke editor kueri, lalu klik Jalankan:
SELECT table_name, index_name, index_status, coverage_percentage, last_refresh_time, disable_reason FROM `PROJECT_ID.bqml_tutorial.INFORMATION_SCHEMA.VECTOR_INDEXES`;
Ganti
PROJECT_IDdengan project ID Anda.Setelah Anda menjalankan kueri, indeks akan tersedia jika kolom
index_statusdalam hasil menunjukkan bahwa indeksACTIVE, dan jika nilaicoverage_percentageadalah100.
Melakukan penelusuran kemiripan teks menggunakan indeks vektor
Gunakan fungsi
VECTOR_SEARCHuntuk menelusuri paten relevan yang cocok dengan embedding yang dibuat dari kueri teks.
Argumen top_k menentukan jumlah kecocokan yang akan ditampilkan, dalam hal ini lima. Opsi fraction_lists_to_search menentukan persentase daftar indeks vektor yang akan ditelusuri.
Indeks vektor yang Anda buat memiliki 500 daftar, sehingga
nilai fraction_lists_to_search sebesar .01 menunjukkan bahwa penelusuran vektor ini
memindai lima daftar tersebut. Nilai fraction_lists_to_search yang lebih rendah seperti yang ditunjukkan
di sini memberikan
recall
yang lebih rendah dan performa yang lebih cepat.
Untuk mengetahui informasi selengkapnya tentang daftar indeks vektor, lihat num_lists
opsi indeks vektor.
Model yang Anda gunakan untuk membuat embedding dalam kueri ini harus sama dengan model yang Anda gunakan untuk membuat embedding dalam tabel yang Anda bandingkan, jika tidak, hasil penelusuran tidak akan akurat.
Untuk melakukan penelusuran kemiripan teks, tempel perintah ini ke editor kueri, lalu klik Run:
SELECT query.query, base.publication_number, base.title, base.abstract FROM VECTOR_SEARCH( TABLEbqml_tutorial.embeddings, 'embedding', ( SELECT embedding, content AS query FROM AI.GENERATE_EMBEDDING( MODELbqml_tutorial.embedding_model, (SELECT 'improving password security' AS content)) ), top_k => 5, options => '{"fraction_lists_to_search": 0.01}');
Outputnya mirip dengan hal berikut ini:
+-----------------------------+--------------------+-------------------------------------------------+-------------------------------------------------+ | query | publication_number | title | abstract | +-----------------------------+--------------------+-------------------------------------------------+-------------------------------------------------+ | improving password security | SG-120868-A1 | Data storage device security method and a... | Methods for improving security in data stora... | | improving password security | SG-10201610585W-A | Passsword management system and process... | PASSSWORD MANAGEMENT SYSTEM AND PROCESS ... | | improving password security | SG-148888-A1 | Improved system and method for... | IMPROVED SYSTEM AND METHOD FOR RANDOM... | | improving password security | SG-194267-A1 | Method and system for protecting a password... | A system for providing security for a... | | improving password security | SG-120868-A1 | Data storage device security... | Methods for improving security in data... | +-----------------------------+--------------------+-------------------------------------------------+-------------------------------------------------+
Membuat model jarak jauh untuk pembuatan teks
Untuk membuat model jarak jauh yang merepresentasikan model pembuatan teks Agent Platform yang dihosting, tempel perintah ini ke editor kueri, lalu klik Run:
CREATE OR REPLACE MODEL bqml_tutorial.text_model
REMOTE WITH CONNECTION DEFAULT
OPTIONS (ENDPOINT = 'gemini-2.5-flash');
Anda akan menerima pesan konfirmasi yang mirip dengan berikut ini:
Successfully created model named text_model.
Membuat teks yang ditambah dengan hasil penelusuran vektor
Berikan hasil penelusuran sebagai perintah untuk membuat teks dengan fungsi
AI.GENERATE_TEXT.
Untuk menambah hasil penelusuran vektor, tempel perintah ini ke editor kueri, lalu klik Run:
SELECT result AS generated, prompt FROM AI.GENERATE_TEXT( MODELbqml_tutorial.text_model, ( SELECT CONCAT( 'Propose some project ideas to improve user password security using the context below: ', STRING_AGG( FORMAT("patent title: %s, patent abstract: %s", base.title, base.abstract), ',\n') ) AS prompt, FROM VECTOR_SEARCH( TABLEbqml_tutorial.embeddings, 'embedding', ( SELECT embedding, content AS query FROM AI.GENERATE_EMBEDDING( MODELbqml_tutorial.embedding_model, (SELECT 'improving password security' AS content) ) ), top_k => 5, options => '{"fraction_lists_to_search": 0.01}') ), STRUCT(600 AS max_output_tokens));
Outputnya mirip dengan hal berikut ini:
+------------------------------------------------+------------------------------------------------------------+ | generated | prompt | +------------------------------------------------+------------------------------------------------------------+ | These patents suggest several project ideas to | Propose some project ideas to improve user password | | improve user password security. Here are | security using the context below: patent title: Active | | some, categorized by the patent they build | new password entry dialog with compact visual indication | | upon: | of adherence to password policy, patent abstract: | | | An active new password entry dialog provides a compact | | **I. Projects based on "Active new password | visual indication of adherence to password policies. A | | entry dialog with compact visual indication of | visual indication of progress towards meeting all | | adherence to password policy":** | applicable password policies is included in the display | | | and updated as new password characters are being... | +------------------------------------------------+------------------------------------------------------------+
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 Google Cloud konsol, buka halaman Manage resources.
- Pada daftar project, pilih project yang Anda ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Atau, untuk menyimpan project dan menghapus resource yang digunakan dalam tutorial ini, ikuti langkah-langkah berikut:
Buka halaman BigQuery.
Di panel kiri, luaskan project Anda, lalu klik Datasets.
Untuk set data
bqml_tutorial, klik Open actions > Delete.Di dialog Delete dataset, klik Delete untuk mengonfirmasi.
Di panel kiri, klik Connections.
Untuk koneksi
__default_cloudresource_connection__, klik Open actions > Delete.Di dialog Delete connection, masukkan
delete, lalu klik Delete untuk mengonfirmasi.
Langkah berikutnya
- Untuk mempelajari cara membuat pipeline RAG berdasarkan konten PDF yang diuraikan, lihat Mengurai PDF dalam pipeline retrieval-augmented generation.