跳至主要內容
ESC
Study Jam:數據與 AI 基礎 — 第 11/12 篇

在 BigQuery 中使用 Gemini 模型

GCP

課程概述

BigQuery 跟 Gemini 整合得很深,你可以直接在 SQL 查詢裡呼叫 Gemini 大語言模型。換句話說,資料表裡每一列文字都能拿來做 AI 分析,像是情感分類、內容摘要、實體抽取、翻譯,全部在 BigQuery 裡搞定,不用把資料搬出資料倉儲。這門課就帶你把 ML.GENERATE_TEXT 函式的用法摸熟。

你將學到

  • 在 BigQuery 中建立連接 Gemini 的遠端模型
  • 使用 ML.GENERATE_TEXT 對表格資料進行文字生成
  • 設計 SQL 內嵌 Prompt 進行批次分類與摘要
  • 處理 ML.GENERATE_TEXT 的回應結構與錯誤處理
  • 控制 Gemini 呼叫的成本與流量

核心概念

BigQuery + Gemini 的架構

在 BigQuery 裡用 Gemini,架構是這樣:

  1. 建立 Cloud Resource Connection(連接 Vertex AI)
  2. 建立 Remote Model 指向 Gemini Endpoint
  3. 使用 ML.GENERATE_TEXT 函式在 SQL 中呼叫模型

建立 Gemini 遠端模型

-- Step 1: 建立 BigQuery 與 Vertex AI 的連線
-- (需先在 BigQuery Admin 中建立 Cloud Resource Connection)

-- Step 2: 建立指向 Gemini 的遠端模型
CREATE OR REPLACE MODEL `dataset.gemini_model`
  REMOTE WITH CONNECTION `project.region.connection`
  OPTIONS(ENDPOINT = 'gemini-2.0-flash');  -- 亦可替換為 gemini-2.5-flash 等較新模型

ML.GENERATE_TEXT 函式

在 BigQuery 裡呼叫 Gemini,主要就靠這個函式:

SELECT
  ml_generate_text_llm_result,
  ml_generate_text_status,
  prompt
FROM ML.GENERATE_TEXT(
  MODEL `dataset.gemini_model`,
  (SELECT
    CONCAT('請將以下客戶評論分類為正面、中性或負面:', review_text) AS prompt
   FROM `dataset.customer_reviews`
   LIMIT 100),
  STRUCT(
    0.2 AS temperature,
    1024 AS max_output_tokens,
    TRUE AS flatten_json_output
  )
);

常見應用場景

場景Prompt 範例輸入資料
情感分類「將此評論分類為正面/中性/負面」客戶評論表
內容摘要「用 50 字摘要以下文章」新聞/文件表
實體抽取「從此文本中抽取人名、地名和組織名」非結構化文字
資料補全「根據產品名稱推測其分類」商品目錄表
翻譯「將以下內容翻譯為繁體中文」多語言資料表

回應結構

ML.GENERATE_TEXT 回傳的結果包含:

  • ml_generate_text_result — 完整的 JSON 回應(含內容與安全屬性,生成文字位於 predictions/content 元素內;flatten_json_output = FALSE 時回傳)
  • ml_generate_text_llm_result — Gemini 生成的純文字結果(STRING,flatten_json_output = TRUE 時回傳)
  • ml_generate_text_status — 呼叫狀態,空字串表示成功

建議把 flatten_json_output 設成 TRUE,輸出結構會簡單很多,後面用 SQL 接著處理也省事。

實作重點

  • 建立 Connection 後,須授予連線的服務帳戶 roles/aiplatform.user 角色
  • 批次處理大量資料時,先用 LIMIT 小量測試 Prompt 效果再擴大規模
  • 使用 SAFE.ML.GENERATE_TEXT 可避免單一失敗的列導致整個查詢中斷
  • 常見錯誤:忘記設定 flatten_json_output 導致需要手動解析巢狀 JSON
  • 成本控制:每次 ML.GENERATE_TEXT 呼叫都會算 Vertex AI API 的錢,所以記得加 LIMITWHERE 篩一下,別一口氣對整張大表打下去

Skill Badge 指引

Lab 連結Work with Gemini Models in BigQuery — 完成此 lab 可獲得 Skill Badge

延伸學習

Study Jam:數據與 AI 基礎 — 11/12 完成 查看系列全覽 →

留言討論

徽章解鎖!