Insight LLM di Tempat: BigQuery & Gemini untuk Analisis Data Terstruktur & Tidak Terstruktur

1. Pengantar

Set data yang besar menyimpan insight yang berharga, tetapi mengekstrak pemahaman yang bermakna bisa menjadi tugas yang menantang. Alat analisis tradisional sering kali kurang berfungsi dalam memberikan penjelasan yang rumit dan mirip manusia, yang membantu kita benar-benar memahami cerita dalam data kita. Data warehouse menyimpan semakin banyak data yang 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 banyak lagi. Dengan munculnya model multimodal (dan kemampuan untuk menyimpan data objek seperti gambar dan video di BigQuery melalui tabel Objek), mengintegrasikan LLM yang 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 menggambar insight LLM dari data perusahaan Anda, dan menskalakan insight tersebut menjadi ribuan baris dalam BigQuery:

Metode 1: Pemanggilan Model Jarak Jauh

  • Panggil Gemini 1.0 Pro dari dalam BigQuery menggunakan ML.GENERATE_TEXT dalam kueri SELECT.
  • Gunakan pendekatan ini saat model sudah tersedia sebagai model jarak jauh di BigQuery dan Anda ingin menggunakannya secara langsung. Periksa status model yang ingin Anda gunakan dalam dokumentasi BigQuery.

Metode 2: Implementasi Fungsi Jarak Jauh

  • Panggil Cloud Function yang mengimplementasikan panggilan Gemini 1.0 Pro Vision, yang ditampilkan sebagai fungsi jarak jauh di BigQuery.
  • Gunakan pendekatan ini ketika model yang ingin Anda gunakan tidak tersedia siap pakai sebagai model jarak jauh atau Anda menginginkan lebih banyak fleksibilitas dan penyesuaian dalam kasus penggunaan Anda.

Yang akan Anda bangun

  • Untuk metode Pemanggilan Model Jarak Jauh, Anda akan membangun ringkasan lokasi untuk set data buku arsip internet (yang tersedia untuk publik di BigQuery) dengan memanggil model jarak jauh untuk Gemini 1.0 Pro dalam konstruksi ML.GENERATE_TEXT di BigQuery.

Diagram alir untuk pemanggilan model jarak jauh

  • Untuk metode Penerapan Fungsi Jarak Jauh, Anda akan membuat validator gambar untuk memvalidasi gambar pengujian terhadap gambar dasar pengukuran. Untuk itu, Anda akan membuat set data yang berisi screenshot gambar uji di tabel eksternal dan meminta Gemini 1.0 Pro Vision untuk memvalidasinya terhadap gambar dasar pengukuran. Kemudian, Anda akan membuat Java Cloud Function yang mengimplementasikan panggilan Gemini Pro Vision dan memanggilnya sebagai fungsi jarak jauh di BigQuery.

Diagram alir untuk penerapan fungsi jarak jauh

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 dari BigQuery yang siap digunakan. Namun, bahkan dalam kasus ketersediaan model jarak jauh, Anda selalu memiliki opsi untuk membangun penyesuaian lanjutan untuk kasus penggunaan Anda dengan Cloud Functions dan kemudian mengakses model ini sebagai fungsi jarak jauh dari BigQuery.

Mengapa harus BigQuery?

BigQuery adalah multi-cloud data warehouse serverless (tanpa server) yang dapat diskalakan dari byte hingga petabyte dengan overhead operasional minimal sehingga merupakan pilihan tepat untuk menyimpan data pelatihan ML. Dengan menggunakan BigQuery Machine Learning (BQML) bawaan dan kemampuan analitik, 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) yang terkelola sepenuhnya yang membantu pengguna menganalisis data terstruktur, semi-terstruktur, dan tidak terstruktur.

2. Persyaratan

  • Browser, seperti Chrome atau Firefox
  • Project Google Cloud dengan penagihan diaktifkan.

3. Sebelum memulai

  1. Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud.
  2. Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan diaktifkan pada sebuah project .
  3. Anda akan menggunakan Cloud Shell, yakni lingkungan command line yang berjalan di Google Cloud yang telah dilengkapi dengan bq. Klik Activate Cloud Shell di bagian atas Konsol Google Cloud.

Gambar tombol Aktifkan Cloud Shell

  1. Setelah terhubung ke Cloud Shell, Anda harus memastikan bahwa Anda sudah diautentikasi dan project ditetapkan ke project ID Anda menggunakan perintah berikut:
gcloud auth list
  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda.
gcloud config list project
  1. Jika project Anda belum ditetapkan, gunakan perintah berikut untuk menetapkannya:
gcloud config set project <YOUR_PROJECT_ID>
  1. Buka Gemini untuk Google Cloud Marketplace guna mengaktifkan API. Anda juga dapat menggunakan perintah berikut di terminal Cloud Shell:
gcloud services enable cloudaicompanion.googleapis.com --project PROJECT_ID
  1. Pastikan API berikut sudah diaktifkan:
  • BigQuery
  • Koneksi BigQuery
  • Cloud Function
  • Cloud Run
  • Vertex AI
  • Cloud Build
  • Cloud Storage API

Alternatif untuk menggunakan perintah gcloud adalah melalui konsol menggunakan link ini.

Baca dokumentasi untuk mempelajari perintah gcloud dan penggunaannya.

4. Membuat set data BigQuery dan koneksi eksternal

Mari kita mulai dengan membuat set data dan koneksi resource Cloud.

Set data di BigQuery adalah container untuk semua tabel dan objek untuk aplikasi Anda.

Untuk membuat set data, lakukan hal berikut:

  1. Buka halaman BigQuery di Konsol Google Cloud.
  2. Di panel Explorer, pilih project tempat Anda ingin membuat set data.
  3. Luaskan opsi Actions (ikon elipsis vertikal), lalu klik Create dataset.

Gambar menu Tindakan dan opsi set data Buat

  1. Klik Create dataset.
  2. Masukkan gemini_bq_fn di kolom ID set data.
  3. Tetapkan jenis lokasi Anda sebagai Multi-region dan terima nilai default, yaitu US(multiple regions in United States.
  4. Klik Create dataset.
  5. Periksa apakah set data telah 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 langkah berikut:

  1. Klik Add di panel Explorer di halaman BigQuery.

Konsol BigQuery dengan tombol ADD yang ditandai untuk menambahkan koneksi eksternal

  1. Klik Koneksi ke sumber data eksternal.
  2. Dari menu Connection type, pilih Vertex AI remote models, remote functions and BigLake (Cloud Resource).
  3. Di kolom Connection ID, masukkan nama koneksi Anda sebagai gemini-bq-conn.
  4. Tetapkan jenis lokasi Anda sebagai Multi-region dan terima nilai default, yaitu US(multiple regions in United States.
  5. Klik Create connection.
  6. Klik Go to connection, lalu salin ID akun layanan di panel Connection info.

Screenshot info koneksi

  1. Buka halaman IAM & Admin, lalu klik Grant access.
  2. Tempelkan ID akun layanan di kolom Prinsip baru.
  3. Pilih peran Vertex AI user dari daftar peran, lalu klik Simpan.

Memberikan akses ke screenshot Akun Layanan

Anda kini 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 Anda membuat set data dan koneksi, mari kita buat model di BigQuery berdasarkan model dasar Vertex AI Gemini Pro. Pada akhir latihan ini, Anda akan menjalankan aplikasi LLM dengan 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 data dari tabel bigquery-public-data.gdelt_internetarchivebooks.1905 dalam set data Internet Archive Books yang disediakan untuk umum digunakan 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 di set data Anda. Untuk melakukannya, jalankan DDL berikut dari panel Editor SQL BigQuery:

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 tersebut.

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:

Hasil kueri ML.GENERATE_TEXT di BigQuery

Selamat! Anda telah berhasil mendemonstrasikan cara menggunakan model jarak jauh (berdasarkan model gemini-pro) dengan fungsi ML.GENERATE_TEXT untuk menganalisis data teks di tabel BigQuery.

Sekarang, mari kita coba model Vertex AI lain menggunakan fungsi jarak jauh BigQuery. Misalnya Anda ingin menambahkan lebih banyak penyesuaian dan fleksibilitas pada cara menggunakan model dari jarak jauh di BigQuery. Model yang didukung tercantum dalam dokumentasi BigQuery.

6. Kasus penggunaan #2 Penerapan Fungsi Jarak Jauh: Menyiapkan implementasi 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 setiap eksekusi fungsi jarak jauh di BigQuery.

Mari kita mulai.

Langkah 1: Buat Java Cloud Function

Anda akan membangun Cloud Function Gen 2 di Java untuk memvalidasi image pengujian terhadap image dasar. Gambar dasar pengukuran 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). Selanjutnya, Anda akan men-deploy Java Cloud Function ke endpoint REST.

Ikuti langkah-langkah berikut:

  1. Buka Cloud Shell Editor.
  2. Jika Anda menggunakan Editor Lama, klik Coba Editor baru.
  3. Di status bar, klik Cloud Code - Sign In.
  4. Jika diminta untuk mengizinkan Cloud Shell Editor untuk melakukan panggilan Google Cloud API, klik Authorize. Ikuti petunjuk untuk login ke Akun Google Anda. Anda kini terhubung ke Google Cloud.
  5. 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 dimuat dan menjadi project aktif di Cloud Shell Editor.
  6. Di status bar Cloud Code, klik nama project yang aktif. Di menu Pilih Cepat yang muncul, pilih Aplikasi Baru.
  7. Pada dialog Create New Application, pilih Cloud Functions application.

Halaman pop-up Buat Aplikasi Baru 1

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

Halaman pop-up Create New Application 2

  1. Masukkan Gemini-BQ-Function sebagai nama project Anda di jalur project. Struktur project muncul di tampilan Cloud Shell Editor baru.

Struktur project aplikasi Java Cloud Function baru

  1. Tambahkan dependensi yang diperlukan dalam tag <dependencies>... </dependencies> atau salin dependensi dari contoh file pom.xml.
  2. Ubah nama class Anda dari HelloWorld.java menjadi sesuatu yang lebih bermakna. Misalnya GeminiBigQueryFunction.java. Ubah nama paket sebagaimana mestinya.
  3. Ganti kode placeholder di file GeminiBigQueryFunction.Java dengan kode contoh yang disediakan di repositori GitHub. Pastikan untuk mengganti variabel <YOUR_PROJECT_ID> dengan project ID Anda di kode contoh.
  4. Buka terminal Cloud Shell. Pastikan Anda sudah berada di direktori project. Jika tidak, buka direktori project dengan menjalankan perintah berikut:
cd Gemini-BQ-Function
  1. 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-nya adalah URL REST dalam format berikut:

https://us-central1-YOUR_PROJECT_ID.cloudfunctions.net/gemini-bq-fn
  1. 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:

String Respons JSON dari Cloud Function

Keren! Implementasi model Cloud Function umum untuk Gemini Pro Vision sudah siap. Mari kita gunakan endpoint ini langsung di data BigQuery dari dalam fungsi jarak jauh BigQuery.

Langkah 2: Buat tabel objek BigQuery dan fungsi jarak jauh

Prasyarat

Anda memerlukan bucket Cloud Storage untuk bagian latihan ini. Ikuti langkah-langkah berikut untuk membuat bucket Cloud Storage:

  1. Untuk membuat bucket, buka konsol Cloud Storage dan klik Create.
  2. Masukkan demo-bq-gemini-public-image sebagai nama bucket Anda, lalu klik Create.
  3. Hapus centang 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 seperti yang diwajibkan dalam kasus penggunaan perusahaan Anda.
  4. Setelah bucket dibuat, buka tab Izin untuk melihat dan mengubah izin.
  5. Untuk menambahkan akun utama, klik Grant access. Tentukan ID akun layanan untuk memberikan izin ke akun tertentu, atau tentukan allUsers untuk memberikan akses publik ke bucket Anda.
  6. Pilih peran Storage Object Viewer, lalu klik Simpan. Jika diminta, pilih untuk mengizinkan akses publik.
  7. Buka tab Objects dan upload gambar dasar pengukuran dan gambar pengujian untuk dibandingkan. Untuk codelab ini, Anda dapat mengupload objek berikut yang tersedia untuk 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 telah 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"]);

Pastikan tabel objek baru yang disebut image_validation telah dibuat di set data Anda.

Membuat Fungsi Jarak Jauh BigQuery

Buat fungsi jarak jauh di BigQuery untuk memanggil Java Cloud Function yang mengimplementasikan model Gemini Pro Vision. Buat ini dalam {i>dataset<i} yang sama. Untuk melakukannya, jalankan DDL berikut dari panel editor SQL 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. Langkah ini akan menciptakan 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 di langkah sebelumnya. Parameter terakhir adalah perintah ke model (Gemini Pro Vision). Anda dapat merujuk ke 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 guna memvalidasi gambar terhadap 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:

Screenshot BigQuery Remote Function Result

Berikut gambar untuk referensi Anda:

Gambar Dasar Pengukuran

Gambar Referensi Dasar Pengukuran untuk Kasus Pengujian

Gambar Pengujian

Gambar Pengujian 1 untuk kasus pengujian

Perhatikan bahwa kedua gambar ini mirip karena memiliki tampilan konsol cloud Duet AI, tetapi teks di keduanya berbeda karena ditampilkan oleh model dalam format JSON.

Dengan ini, Anda telah berhasil menguji implementasi 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 menambah kompleksitas. 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 sedikit upaya kode.

Penerapannya banyak sekali. Pertimbangkan skenario di 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 yang relatif rendah, sumber daya, dan bahasa serta alat pilihan yang familier.

8. Pembersihan

Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam posting ini, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Manage resource.
  2. Dalam daftar project, pilih project yang ingin dihapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
  4. Jika Anda ingin menyimpan project, lewati langkah-langkah di atas dan hapus Cloud Function dengan membuka Cloud Functions. Dari daftar fungsi, centang fungsi yang ingin dihapus, lalu klik Delete.

9. Selamat

Selamat. Dengan model Gemini yang diintegrasikan ke BigQuery, Anda tidak lagi hanya perlu menganalisis data, melainkan juga menjadi pendongeng data. Anda dapat menghasilkan narasi tersembunyi dalam set data dan mengubah cara Anda memahami insight. Mulai bereksperimen Terapkan teknik ini ke dalam {i>dataset<i} Anda dan temukan cerita-cerita dalam data tersebut. Dengan BigQuery yang mendukung data tidak terstruktur dalam tabel objek ( External Tables), coba gunakan Gemini Pro Vision untuk membuat insight generatif tentang data gambar. Baca dokumentasi untuk Vertex AI, BigQuery Remote Functions, dan Cloud Functions untuk mendapatkan panduan yang lebih mendalam. Berikut adalah repositori github untuk project ini. Beri tahu kami apa yang Anda bangun dengan pembelajaran ini.