1. Pengantar
Set data besar menyimpan insight berharga, tetapi mengekstrak pemahaman yang bermakna bisa menjadi tugas yang sulit. Alat analisis tradisional sering kali tidak dapat memberikan penjelasan yang bernuansa dan seperti manusia yang membantu kita benar-benar memahami kisah dalam data kita. Data warehouse menyimpan semakin banyak data tidak terstruktur, tetapi data tersebut tidak selalu dapat diakses untuk mendapatkan insight. Teks, gambar, dan video yang tidak terstruktur menyimpan informasi berharga untuk mengembangkan bisnis Anda. LLM menawarkan cara baru yang efektif untuk memahami data Anda dengan memberikan penjelasan, analisis sentimen, deteksi objek, dan lainnya. Dengan munculnya model multimodal (dan kemampuan untuk menyimpan data objek seperti gambar dan video di BigQuery melalui Tabel objek), mengintegrasikan LLM canggih seperti Gemini 1.0 Pro (untuk analisis berbasis teks) dan Gemini 1.0 Pro Vision (untuk analisis teks dan gambar/video) dengan BigQuery dapat mengubah cara Anda menganalisis data.
Dalam codelab ini, kita akan melihat dua metode berikut untuk mendapatkan insight LLM dari data perusahaan Anda, dan menskalakan insight tersebut ke ribuan baris dalam BigQuery:
Metode 1: Pemanggilan Model Jarak Jauh
- Panggil Gemini 1.0 Pro dari dalam BigQuery menggunakan
ML.GENERATE_TEXTdalam kueriSELECT. - Gunakan pendekatan ini jika model sudah tersedia sebagai model jarak jauh di BigQuery dan Anda ingin menggunakannya langsung. Periksa status model yang ingin Anda gunakan dalam dokumentasi BigQuery.
Metode 2: Penerapan Fungsi Jarak Jauh
- Panggil Cloud Function yang menerapkan panggilan Gemini 1.0 Pro Vision, yang diekspos sebagai fungsi jarak jauh di BigQuery.
- Gunakan pendekatan ini jika model yang ingin Anda gunakan tidak tersedia langsung sebagai model jarak jauh atau Anda menginginkan lebih banyak fleksibilitas dan penyesuaian dalam kasus penggunaan Anda.
Yang akan Anda build
- Untuk metode Pemanggilan Model Jarak Jauh, Anda akan membuat perangkum lokasi untuk set data buku arsip internet (yang tersedia secara publik di BigQuery) dengan memanggil model jarak jauh untuk Gemini 1.0 Pro dalam konstruksi ML.GENERATE_TEXT di BigQuery.

- Untuk metode Implementasi Fungsi Jarak Jauh, Anda akan membuat validator gambar untuk memvalidasi gambar pengujian terhadap gambar dasar. Untuk melakukannya, Anda akan membuat set data yang berisi screenshot gambar pengujian dalam tabel eksternal dan meminta Gemini 1.0 Pro Vision untuk memvalidasinya terhadap gambar dasar. Kemudian, Anda akan membuat Java Cloud Function yang menerapkan panggilan Gemini Pro Vision dan memanggilnya sebagai fungsi jarak jauh di BigQuery.

Catatan:
Mungkin ada lebih banyak model AI Generatif Vertex AI yang tersedia sebagai model jarak jauh di BigQuery. Artinya, Anda dapat mengakses model ini dengan konstruksi ML.GENERATE_TEXT langsung dari BigQuery. Namun, bahkan jika model jarak jauh tersedia, Anda selalu memiliki opsi untuk membuat penyesuaian lanjutan untuk kasus penggunaan Anda dengan Cloud Functions, lalu mengakses model ini sebagai fungsi jarak jauh dari BigQuery.
Mengapa harus BigQuery?
BigQuery adalah multi-cloud data warehouse serverless yang dapat diskalakan dari byte hingga petabyte dengan overhead operasional minimal, sehingga merupakan pilihan tepat untuk menyimpan data pelatihan ML. Dengan kemampuan analitik dan BigQuery Machine Learning (BQML) bawaan, Anda dapat membuat prediksi tanpa kode hanya dengan menggunakan kueri SQL. Selain itu, Anda dapat mengakses data dari sumber eksternal dengan kueri gabungan, sehingga menghilangkan kebutuhan akan pipeline ETL yang rumit.
BigQuery adalah cloud data warehouse (CDW) terkelola sepenuhnya yang membantu pengguna menganalisis data terstruktur, semi-terstruktur, dan tidak terstruktur.
2. Persyaratan
3. Sebelum memulai
- Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud.
- Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project .
- Anda akan menggunakan Cloud Shell, lingkungan command line yang berjalan di Google Cloud yang telah dilengkapi dengan bq. Klik Activate Cloud Shell di bagian atas konsol Google Cloud.

- Setelah terhubung ke Cloud Shell, Anda dapat memeriksa bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke project ID Anda menggunakan perintah berikut:
gcloud auth list
- Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda.
gcloud config list project
- Jika project Anda belum ditetapkan, gunakan perintah berikut untuk menetapkannya:
gcloud config set project <YOUR_PROJECT_ID>
- Buka Marketplace Gemini for Google Cloud untuk mengaktifkan API. Anda juga dapat menggunakan perintah berikut di terminal Cloud Shell:
gcloud services enable cloudaicompanion.googleapis.com --project PROJECT_ID
- Pastikan API berikut diaktifkan:
- BigQuery
- Koneksi BigQuery
- Cloud Function
- Cloud Run
- Vertex AI
- Cloud Build
- Cloud Storage API
Alternatif untuk menggunakan perintah gcloud adalah membuka konsol menggunakan link ini.
Baca dokumentasi untuk mempelajari perintah gcloud dan penggunaannya.
4. Membuat set data dan koneksi eksternal BigQuery
Mari kita mulai dengan membuat set data dan koneksi resource Cloud.
Set data di BigQuery adalah penampung untuk semua tabel dan objek aplikasi Anda.
Untuk membuat set data, lakukan hal berikut:
- Buka halaman BigQuery di konsol Google Cloud.
- Di panel Explorer, pilih project tempat Anda ingin membuat set data.
- Luaskan opsi Actions (ikon elipsis vertikal), lalu klik Create dataset.

- Klik Create dataset.
- Masukkan
gemini_bq_fndi kolom Dataset ID. - Tetapkan jenis lokasi Anda sebagai
Multi-regiondan setujui nilai defaultnya, yaituUS(multiple regions in United States. - Klik Create dataset.
- Periksa apakah set data dibuat dan dicantumkan di bagian project ID Anda di panel Explorer.
Koneksi BigQuery diperlukan untuk berinteraksi dengan Cloud Function Anda. Untuk membuat fungsi jarak jauh, Anda harus membuat koneksi BigQuery. Dalam codelab ini, kita akan menggunakan koneksi BigLake untuk mengakses model dari BigQuery melalui Cloud Function. Koneksi BigLake membantu menghubungkan sumber data eksternal sambil mempertahankan kontrol akses dan keamanan BigQuery yang mendetail, yang dalam kasus ini adalah Vertex AI Gemini Pro API.
Untuk membuat koneksi BigLake, lakukan hal berikut:
- Klik Tambahkan di panel Penjelajah di halaman BigQuery.

- Klik Koneksi ke sumber data eksternal.
- Dari menu Connection type, pilih Vertex AI remote models, remote functions and BigLake (Cloud Resource).
- Di kolom Connection ID, masukkan nama koneksi Anda sebagai
gemini-bq-conn. - Tetapkan jenis lokasi Anda sebagai
Multi-regiondan setujui nilai defaultnya, yaituUS(multiple regions in United States. - Klik Create connection.
- Klik Go to connection, lalu salin ID akun layanan di panel Connection info.

- Buka halaman IAM & Admin, lalu klik Grant access.
- Tempelkan ID akun layanan di kolom New principals.
- Pilih peran
Vertex AI userdari daftar peran, lalu klik Simpan.

Anda kini telah berhasil membuat set data dan koneksi BigQuery. Selanjutnya, Anda akan menyelesaikan langkah-langkah yang diperlukan untuk pemanggilan model jarak jauh.
5. Kasus penggunaan #1 Pemanggilan Model Jarak Jauh: Menyiapkan pemanggilan model jarak jauh
Setelah membuat set data dan koneksi, mari buat model di BigQuery berdasarkan model dasar Gemini Pro Vertex AI. Di akhir latihan ini, Anda akan memiliki aplikasi LLM yang aktif dan berjalan hanya menggunakan kueri SQL.
Langkah 1: Buat tabel BigQuery yang berisi data input untuk model jarak jauh
Buat tabel bernama books di set data Anda yang dapat menyimpan sekitar 50 rekaman dari tabel bigquery-public-data.gdelt_internetarchivebooks.1905 di set data Internet Archive Books yang bersumber untuk penggunaan publik oleh BigQuery.
Untuk melakukannya, jalankan pernyataan DDL (Data Definition Language) berikut dari panel editor SQL BigQuery:
create or replace table gemini_bq_fn.books as (
select *
from
bigquery-public-data.gdelt_internetarchivebooks.1905 limit 50)
Langkah 2 : Buat model BigQuery
Buat model dalam set data Anda. Untuk melakukannya, jalankan DDL berikut dari panel BigQuery SQL Editor:
CREATE MODEL `gemini_bq_fn.gemini_remote_model`
REMOTE WITH CONNECTION `us.gemini-bq-conn`
OPTIONS(ENDPOINT = 'gemini-pro');
Perhatikan bahwa model dibuat dengan opsi untuk melihat model.
Langkah 3 : Uji aplikasi AI Generatif baru Anda
Gunakan fungsi ML.GENERATE_TEXT dalam kueri SELECT untuk mengirim permintaan ke model jarak jauh.
SELECT ml_generate_text_llm_result as Gemini_Response, prompt as Prompt
FROM ML.GENERATE_TEXT(MODEL `gemini_bq_fn.gemini_remote_model`,
(select 'You are a text summarizer and standardizer. From the following text that contains address locations, standardize and print one standardized, consolidated address. You cannot return empty because you know how to pick up sensible data from the text in this field: ' ||
substring(locations, 0, 200) as prompt
from `gemini_bq_fn.books`),
STRUCT(
TRUE AS flatten_json_output));
Anda akan melihat hasil berikut:

Selamat! Anda telah berhasil mendemonstrasikan cara menggunakan model jarak jauh (berdasarkan model gemini-pro) dengan fungsi ML.GENERATE_TEXT untuk menganalisis data teks dalam tabel BigQuery.
Sekarang, mari kita coba model Vertex AI lain menggunakan fungsi jarak jauh BigQuery. Misalkan Anda ingin menambahkan lebih banyak penyesuaian dan fleksibilitas pada cara Anda dapat menggunakan model dari jarak jauh di BigQuery. Model yang didukung tercantum dalam dokumentasi BigQuery.
6. Kasus penggunaan #2 Penerapan Fungsi Jarak Jauh: Menyiapkan penerapan fungsi jarak jauh
Dalam latihan ini, Anda akan membuat fungsi di BigQuery berdasarkan Java Cloud Function yang menerapkan model dasar Gemini 1.0 Pro Vision. Pertama, Anda akan membuat dan men-deploy Java Cloud Function untuk membandingkan gambar menggunakan model Gemini 1.0 Pro Vision, lalu Anda akan membuat fungsi jarak jauh di BigQuery yang memanggil Cloud Function yang di-deploy. Ingatlah bahwa prosedur yang sama dapat diikuti untuk eksekusi fungsi jarak jauh apa pun di BigQuery.
Jadi, mari kita mulai!
Langkah 1: Buat Java Cloud Function
Anda akan membangun Cloud Function Gen 2 di Java untuk memvalidasi gambar pengujian terhadap gambar dasar. Gambar dasar disimpan dalam set data yang berisi screenshot gambar pengujian dalam tabel eksternal di BigQuery. Anda akan memvalidasi gambar menggunakan model Gemini Pro Vision (Java SDK). Kemudian, Anda akan men-deploy Java Cloud Function ke endpoint REST.
Ikuti langkah-langkah berikut:
- Buka Cloud Shell Editor.
- Jika Anda menggunakan Editor Lama, klik Try the new Editor.
- Di status bar, klik Cloud Code - Sign In.
- Jika diminta untuk memberikan otorisasi pada Cloud Shell Editor agar dapat melakukan panggilan Google Cloud API, klik Authorize. Ikuti petunjuk untuk login ke Akun Google Anda. Anda kini terhubung ke Google Cloud.
- Jika Anda tidak melihat project di status bar Cloud Code, klik Cloud Code - Sign In > Select a Google Cloud project. Pilih project Google Cloud tempat Anda ingin membuat Cloud Functions. Project ini akan dimuat dan menjadi project aktif di Cloud Shell Editor.
- Di status bar Cloud Code, klik nama project aktif. Di menu Pilih Cepat yang muncul, pilih Aplikasi Baru.
- Dalam dialog Create New Application, pilih Cloud Functions application.

- Pilih Java: Hello World saat diminta untuk memilih template.

- Masukkan
Gemini-BQ-Functionsebagai nama project Anda di jalur project. Struktur project akan muncul di tampilan Editor Cloud Shell baru.

- Tambahkan dependensi yang diperlukan dalam tag
<dependencies>... </dependencies>atau salin dependensi dari file pom.xml contoh. - Ubah nama class Anda dari
HelloWorld.javamenjadi sesuatu yang lebih bermakna. MisalnyaGeminiBigQueryFunction.java. Ganti nama paket yang sesuai. - Ganti kode placeholder dalam file GeminiBigQueryFunction.Java dengan kode contoh yang disediakan di repositori GitHub. Pastikan untuk mengganti variabel <YOUR_PROJECT_ID> dengan project ID Anda dalam kode contoh.
- Buka terminal Cloud Shell. Periksa apakah Anda berada di direktori project. Jika tidak, buka direktori project dengan menjalankan perintah berikut:
cd Gemini-BQ-Function
- Jalankan pernyataan berikut untuk membangun dan men-deploy Cloud Function:
gcloud functions deploy gemini-bq-fn --gen2 --runtime java17 --trigger-http --entry-point cloudcode.helloworld.GeminiBigQueryFunction --allow-unauthenticated --source .
Ganti titik entri dalam perintah dengan titik entri fungsi Anda. Output adalah URL REST dalam format berikut:
https://us-central1-YOUR_PROJECT_ID.cloudfunctions.net/gemini-bq-fn
- Uji Cloud Function ini dengan menjalankan perintah berikut dari terminal:
gcloud functions call gemini-bq-fn --region=us-central1 --gen2 --data '{"calls":[["https://storage.googleapis.com/img_public_test/image_validator/baseline/1.JPG", "https://storage.googleapis.com/img_public_test/image_validator/test/2.JPG", "PROMPT_ABOUT_THE_IMAGES_TO_GEMINI"]]}'
Respons untuk perintah sampel acak:

Keren! Implementasi model Cloud Function generik untuk model Gemini Pro Vision sudah siap. Mari kita gunakan endpoint ini secara langsung pada data BigQuery dari dalam fungsi jarak jauh BigQuery.
Langkah 2: Buat tabel objek dan fungsi jarak jauh BigQuery
Prasyarat
Anda memerlukan bucket Cloud Storage untuk bagian latihan ini. Ikuti langkah-langkah berikut untuk membuat bucket Cloud Storage:
- Untuk membuat bucket, buka konsol Cloud Storage, lalu klik Buat.
- Masukkan
demo-bq-gemini-public-imagesebagai nama bucket Anda, lalu klik Buat. - Hapus centang pada opsi
Enforce public access prevention on this bucket. Meskipun Anda membuat bucket ini untuk akses publik dalam latihan ini, sebaiknya cegah akses publik dan berikan izin ke akun layanan tertentu sesuai kebutuhan dalam kasus penggunaan perusahaan Anda. - Setelah bucket dibuat, buka tab Permissions untuk melihat dan mengubah izin.
- Untuk menambahkan akun utama, klik Grant access. Tentukan ID akun layanan untuk memberikan izin ke akun tertentu atau tentukan
allUsersuntuk memberikan akses publik ke bucket Anda. - Pilih peran
Storage Object Viewer, lalu klik Simpan. Jika diminta, pilih untuk mengizinkan akses publik. - Buka tab Objek, lalu upload gambar dasar dan gambar pengujian untuk dibandingkan. Untuk codelab ini, Anda dapat mengupload objek berikut yang tersedia secara publik: baseline.JPG, TEST1.JPG, dan TEST2.JPG.
Membuat tabel objek BigQuery
Buat tabel objek eksternal dari BigQuery untuk mengakses data tidak terstruktur di bucket menggunakan koneksi dan set data yang Anda buat sebelumnya. Untuk melakukannya, jalankan pernyataan DDL (Data Definition Language) berikut dari panel editor kueri BigQuery:
CREATE OR REPLACE EXTERNAL TABLE `gemini_bq_fn.image_validation`
WITH CONNECTION `us.gemini-bq-conn`
OPTIONS(object_metadata="SIMPLE", uris=["gs://demo-bq-gemini-public-image/*.JPG"]);
Periksa apakah tabel objek baru bernama image_validation dibuat di set data Anda.
Membuat Fungsi Jarak Jauh BigQuery
Buat fungsi jarak jauh di BigQuery untuk memanggil Java Cloud Function yang menerapkan model Gemini Pro Vision. Buat ini dalam set data yang sama. Untuk melakukannya, jalankan DDL berikut dari panel editor SQL di konsol BigQuery:
CREATE OR REPLACE FUNCTION `gemini_bq_fn.FN_IMAGE_VALIDATE` (baseline STRING, test STRING, prompt STRING) RETURNS STRING
REMOTE WITH CONNECTION `us.gemini-bq-conn`
OPTIONS (
endpoint = 'https://us-central1-<your project id>.cloudfunctions.net/gemini-bq-fn',
max_batching_rows = 1
);
URL endpoint adalah URL REST yang ditampilkan sebelumnya dalam latihan ini. Tindakan ini akan membuat fungsi jarak jauh di BigQuery. Ada tiga parameter dalam DDL di atas. Dua parameter pertama adalah URL ke gambar yang disimpan dalam tabel objek yang dibuat pada langkah sebelumnya. Parameter terakhir adalah perintah ke model (Gemini Pro Vision). Anda dapat melihat kode Java Cloud Functions yang digunakan untuk mengurai tanda tangan ini:
Gson().fromJson(request.getReader(), JsonObject.class);
JsonArray calls_array = requestJson.getAsJsonArray("calls");
JsonArray calls = (JsonArray) calls_array.get(0);
String baseline_url = calls.get(0).toString().replace("\"", "");
String test_url = calls.get(1).toString().replace("\"", "");
String prompt_string = calls.get(2).toString();
Memanggil Gemini dari BigQuery
Gunakan fungsi jarak jauh dalam kueri SELECT untuk menguji fungsi dalam memvalidasi gambar berdasarkan perintah.
select gemini_bq_fn.FN_IMAGE_VALIDATE(
'https://storage.googleapis.com/demo-bq-gemini-public-image/Baseline.JPG',
REPLACE(uri, 'gs://', 'https://storage.googleapis.com/') ,
'You are an expert image validator who can respond with JSON result. Find 2 images here. The first one is the reference image. The second image is the test image. Compare the second image to see if the second image is similar to the first in terms of the text present in the image. Respond ONLY in JSON Format with 3 attributes namely SIMILARITY which is a \"YES\" or \"NO\", SIMILARITY_SCORE which is a percentage and DIFFERENCE_COMMENT which is a string.' ) as IMAGE_VALIDATION_RESULT
from `gemini_bq_fn.image_validation`
where uri like '%TEST1%';
Coba kueri di atas dengan file objek TEST1 dan TEST2. Anda akan melihat hasil yang mirip dengan berikut ini:

Berikut gambar untuk referensi Anda:
Gambar Dasar

Gambar Pengujian

Perhatikan bahwa kedua gambar tersebut serupa karena memiliki tampilan konsol cloud Duet AI, tetapi teks di keduanya berbeda karena dihasilkan oleh model dalam format JSON.
Dengan demikian, Anda telah berhasil menguji penerapan fungsi jarak jauh.
7. Manfaat dan Kasus Penggunaan
Mari kita lihat beberapa manfaat mengintegrasikan BigQuery dan Gemini untuk analisis data terstruktur dan tidak terstruktur.
- Menghadirkan GenAI ke data Anda: Tidak perlu lagi memindahkan data, duplikasi, dan kompleksitas tambahan. Anda dapat menganalisis data dan menghasilkan insight dalam lingkungan BigQuery yang sama.
- Analisis yang ditingkatkan: Penjelasan bahasa alami Gemini menambahkan lapisan pemahaman baru pada data Anda dan Anda dapat mencapainya dengan menggunakan kueri SQL.
- Skalabilitas: Solusi ini menangani set data besar dan analisis kompleks dengan mudah serta upaya low-code.
Aplikasi untuk ini sangat banyak. Pertimbangkan skenario dalam bidang keuangan (analisis tren pasar), retail (sentimen pelanggan), layanan kesehatan (ringkasan laporan medis), dll. di mana tim analisis dan bisnis Anda dapat menerapkannya dengan upaya dan sumber daya yang relatif rendah serta bahasa dan alat pilihan yang sudah dikenal.
8. Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam posting ini, ikuti langkah-langkah berikut:
- Di konsol Google Cloud, buka halaman Manage resources.
- Dalam daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
- Jika Anda ingin mempertahankan project, lewati langkah-langkah di atas dan hapus Cloud Function dengan membuka Cloud Functions, lalu dari daftar fungsi, centang fungsi yang ingin Anda hapus dan klik Hapus.
9. Selamat
Selamat. Dengan model Gemini yang terintegrasi ke dalam BigQuery, Anda tidak hanya menganalisis data, tetapi juga menceritakan data. Anda dapat membuat narasi tersembunyi dalam set data dan mengubah cara Anda memahami insight. Mulai bereksperimen. Terapkan teknik ini ke set data Anda sendiri dan temukan kisah dalam data Anda. Dengan BigQuery yang mendukung data tidak terstruktur dalam tabel objek ( Tabel Eksternal), coba gunakan Gemini Pro Vision untuk membuat insight generatif pada data gambar. Lihat dokumentasi untuk Vertex AI, BigQuery Remote Functions, dan Cloud Functions untuk panduan yang lebih mendalam. Berikut adalah repo GitHub untuk project ini. Beri tahu kami apa yang Anda buat dengan pembelajaran ini.