站內 LLM 深入分析:BigQuery &、Gemini 的結構化與非結構化資料分析

1. 簡介

巨量資料集蘊藏寶貴的洞察資訊,但要從中擷取有意義的理解內容,可能是一項艱鉅的任務。傳統的分析工具通常無法提供細緻且類似人類的說明,協助我們真正掌握資料中的故事。資料倉儲保存的非結構化資料越來越多,但這些資料不一定能用來取得洞察資訊。非結構化文字、圖片和影片含有寶貴資訊,有助於業務發展。LLM 提供強大的新方式來解讀資料,包括說明、情緒分析、物件偵測等。隨著多模態模型問世 (以及透過物件資料表在 BigQuery 中儲存圖片和影片等物件資料的功能),將 Gemini 1.0 Pro (用於文字分析) 和 Gemini 1.0 Pro Vision (用於文字和圖片/影片分析) 等強大的 LLM 整合至 BigQuery,可徹底改變您分析資料的方式。

在本程式碼研究室中,我們將探討從企業資料中擷取 LLM 洞察資訊的兩種方法,並將這些洞察資訊擴展至 BigQuery 中的數千列資料:

方法 1:遠端模型叫用

  • SELECT 查詢中使用 ML.GENERATE_TEXT,從 BigQuery 呼叫 Gemini 1.0 Pro。
  • 如果模型已在 BigQuery 中以遠端模型的形式提供,且您想直接使用,請採用這種方法。在 BigQuery 說明文件中,查看要使用的模型狀態。

方法 2:遠端實作函式

建構項目

  • 對於遠端模型呼叫方法,您將在 BigQuery 的 ML.GENERATE_TEXT 建構函式中,呼叫 Gemini 1.0 Pro 的遠端模型,為網際網路封存書籍資料集 (BigQuery 中公開提供) 建構位置摘要工具。

遠端模型叫用流程圖

  • 如要使用「遠端函式實作」方法,請建構圖片驗證器,根據基準圖片驗證測試圖片。為此,您將在外部資料表中建立包含測試圖片螢幕截圖的資料集,並要求 Gemini 1.0 Pro Vision 根據基準圖片驗證該資料集。接著,您會建立 Java Cloud Function,實作 Gemini Pro Vision 呼叫,並在 BigQuery 中以遠端函式形式叫用。

遠端函式實作流程圖

注意:

BigQuery 可能會提供更多 Vertex AI 生成式 AI 模型做為遠端模型。也就是說,您可以直接透過 BigQuery 的 ML.GENERATE_TEXT 建構函式存取這些模型。不過,即使有遠端模型可用,您還是可以選擇使用 Cloud Functions 為用途建構進階自訂項目,然後從 BigQuery 以遠端函式存取這些模型。

選用 BigQuery 的理由

BigQuery 是無伺服器多雲端資料倉儲,可從位元擴充至 PB 級,作業管理負擔極小,因此非常適合儲存機器學習訓練資料。您可以使用內建的 BigQuery 機器學習 (BQML) 和分析功能,只透過 SQL 查詢就能建立無程式碼預測。此外,您還能透過聯合查詢存取外部來源的資料,不必使用複雜的 ETL 管道。

BigQuery 是全代管的雲端資料倉儲,可協助使用者分析結構化、半結構化和非結構化資料。

2. 需求條件

  • ChromeFirefox 瀏覽器
  • 已啟用計費功能的 Google Cloud 專案。

3. 事前準備

  1. Google Cloud 控制台的專案選取器頁面中,選取或建立 Google Cloud 專案
  2. 確認 Cloud 專案已啟用計費功能。瞭解如何檢查專案是否已啟用計費功能
  3. 您將使用 Cloud Shell,這是 Google Cloud 中執行的指令列環境,預先載入了 bq。點選 Google Cloud 控制台頂端的「啟用 Cloud Shell」。

「啟用 Cloud Shell」按鈕圖片

  1. 連至 Cloud Shell 後,請使用下列指令確認驗證已完成,專案也已設為獲派的專案 ID:
gcloud auth list
  1. 在 Cloud Shell 中執行下列指令,確認 gcloud 指令已瞭解您的專案。
gcloud config list project
  1. 如果未設定專案,請使用下列指令來設定:
gcloud config set project <YOUR_PROJECT_ID>
  1. 前往 Gemini for Google Cloud Marketplace 啟用 API。您也可以在 Cloud Shell 終端機中使用下列指令:
gcloud services enable cloudaicompanion.googleapis.com --project PROJECT_ID
  1. 確認已啟用下列 API:
  • BigQuery
  • BigQuery 連線
  • Cloud 函式
  • Cloud Run
  • Vertex AI
  • Cloud Build
  • Cloud Storage API

除了使用 gcloud 指令,您也可以透過這個連結前往控制台。

如要瞭解 gcloud 指令和用法,請參閱說明文件

4. 建立 BigQuery 資料集和外部連線

首先,請建立資料集和 Cloud 資源連線。

BigQuery 中的資料集是應用程式所有資料表和物件的容器。

如要建立資料集,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「BigQuery」頁面
  2. 在「Explorer」面板中,選取要建立資料集的專案。
  3. 展開「動作」選項 (垂直刪節號圖示),然後點選「建立資料集」

「動作」選單和「建立資料集」選項的圖片

  1. 點選「建立資料集」
  2. 在「Dataset ID」欄位中輸入 gemini_bq_fn
  3. 將位置類型設為 Multi-region,並接受預設值 US(multiple regions in United States.
  4. 點選「建立資料集」
  5. 確認資料集已建立,並列在「Explorer」窗格的專案 ID 下方。

您必須建立 BigQuery 連線,才能與 Cloud Function 互動。如要建立遠端函式,必須先建立 BigQuery 連線。在本程式碼研究室中,我們將使用 BigLake 連線,透過 Cloud Function 從 BigQuery 存取模型。BigLake 連線有助於連結外部資料來源,同時保留精細的 BigQuery 存取權控管和安全性,在本例中為 Vertex AI Gemini Pro API。

如要建立 BigLake 連線,請按照下列步驟操作:

  1. 在 BigQuery 頁面的「Explorer」窗格中,按一下「新增」

BigQuery 控制台,並醒目顯示「新增」按鈕,可新增外部連結

  1. 按一下「連線至外部資料來源」
  2. 從「連線類型」選單中,選取「Vertex AI 遠端模型、遠端函式和 BigLake (Cloud 資源)」
  3. 在「連線 ID」欄位中,輸入連線名稱 gemini-bq-conn
  4. 將位置類型設為 Multi-region,並接受預設值 US(multiple regions in United States.
  5. 點選「建立連線」
  6. 按一下「前往連線」,然後複製「連線資訊」窗格中的服務帳戶 ID。

連線資訊螢幕截圖

  1. 前往「IAM 與管理」頁面,然後按一下「授予存取權」
  2. 將服務帳戶 ID 貼到「新增主體」欄位。
  3. 從角色清單中選取 Vertex AI user 角色,然後按一下「儲存」

授予服務帳戶存取權的螢幕截圖

您已成功建立資料集和 BigQuery 連線。接著,您將完成遠端模型叫用所需的步驟。

5. 應用實例 1:遠端模型叫用:設定遠端模型叫用

建立資料集和連線後,我們將以 Vertex AI Gemini Pro 基礎模型為基礎,在 BigQuery 中建立模型。完成本練習後,您就能只使用 SQL 查詢,讓 LLM 應用程式開始運作。

步驟 1:建立 BigQuery 資料表 ,其中包含遠端模型的輸入資料

在資料集中建立名為 books 的資料表,其中可存放來自 Internet Archive Books 資料集 (由 BigQuery 取得,供大眾使用) 中 bigquery-public-data.gdelt_internetarchivebooks.1905 資料表的約 50 筆記錄。

如要執行這項操作,請從 BigQuery SQL 編輯器窗格執行下列 DDL (資料定義語言) 陳述式:

create or replace table gemini_bq_fn.books as (
select *
from
bigquery-public-data.gdelt_internetarchivebooks.1905 limit 50)

步驟 2:建立 BigQuery 模型

在資料集中建立模型。如要執行這項操作,請從 BigQuery SQL 編輯器窗格執行下列 DDL:

CREATE MODEL `gemini_bq_fn.gemini_remote_model`
REMOTE WITH CONNECTION `us.gemini-bq-conn`
OPTIONS(ENDPOINT = 'gemini-pro');

請注意,模型已建立,並提供檢視模型的選項。

步驟 3:測試新的生成式 AI 應用程式

SELECT 查詢中使用 ML.GENERATE_TEXT 函式,將要求傳送至遠端模型。

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));

畫面上應會顯示下列結果:

BigQuery 中的 ML.GENERATE_TEXT 查詢結果

恭喜!您已成功示範如何使用遠端模型 (以 gemini-pro 模型為基礎) 和 ML.GENERATE_TEXT 函式,分析 BigQuery 資料表中的文字資料。

現在,我們來試試使用 BigQuery 遠端函式的另一個 Vertex AI 模型。假設您想在 BigQuery 中以遠端方式使用模型,並進一步自訂及彈性運用模型,如要查看支援的模型,請參閱 BigQuery 說明文件

6. 用途 #2 實作遠端函式:設定遠端函式實作

在本練習中,您將根據實作 Gemini 1.0 Pro Vision 基礎模型的 Java Cloud Function,在 BigQuery 中建立函式。首先,您會建立並部署 Java Cloud Function,使用 Gemini 1.0 Pro Vision 模型比較圖片,然後在 BigQuery 中建立遠端函式,叫用已部署的 Cloud Function。請注意,在 BigQuery 中執行任何遠端函式時,都可以按照相同程序操作。

現在就開始吧!

步驟 1:建立 Java Cloud Function

您將在 Java 中建構第 2 代 Cloud Function,根據基準圖片驗證測試圖片。基準圖片儲存在資料集中,其中包含 BigQuery 外部資料表中的測試圖片螢幕截圖。您將使用 Gemini Pro Vision 模型 (Java SDK) 驗證圖片。接著,您會將 Java Cloud Function 部署至 REST 端點。

步驟如下:

  1. 啟動 Cloud Shell 編輯器
  2. 如果使用舊版編輯器,請按一下「試用新版編輯器」
  3. 點按狀態列上的「Cloud Code - Sign In」
  4. 如果系統提示您授權 Cloud Shell 編輯器發出 Google Cloud API 呼叫,請按一下「Authorize」(授權)。按照提示登入 Google 帳戶。您已連結到 Google Cloud。
  5. 如果 Cloud Code 狀態列未顯示專案,請按一下「Cloud Code - Sign In」>「Select a Google Cloud project」。選擇要建立 Cloud Functions 的 Google Cloud 專案。專案會載入,並成為 Cloud Shell 編輯器中的現有專案。
  6. 在 Cloud Code 狀態列中,按一下有效專案名稱。在隨即顯示的「快速挑選」選單中,選取「New Application」(新增應用程式)
  7. 在「Create New Application」對話方塊中,選取「Cloud Functions application」

建立新應用程式彈出式視窗第 1 頁

  1. 系統提示選取範本時,請選取「Java: Hello World」

建立新應用程式彈出式視窗第 2 頁

  1. 在專案路徑中輸入 Gemini-BQ-Function 做為專案名稱。專案結構會顯示在新的 Cloud Shell 編輯器檢視畫面中。

新的 Java Cloud Functions 應用程式專案結構

  1. <dependencies>... </dependencies> 標記中新增必要的依附元件,或從範例 pom.xml複製依附元件
  2. 將類別名稱從 HelloWorld.java 改為更有意義的名稱。假設是 GeminiBigQueryFunction.java。並重新命名套件。
  3. GeminiBigQueryFunction.Java 檔案中的預留位置程式碼,替換為 GitHub 存放區提供的範例程式碼。請務必在範例程式碼中,將變數 <YOUR_PROJECT_ID> 替換為您的專案 ID。
  4. 前往 Cloud Shell 終端機,確認您位於專案目錄中。如果沒有,請執行下列指令,前往專案目錄:
cd Gemini-BQ-Function
  1. 執行下列陳述式,建構及部署 Cloud 函式:
gcloud functions deploy gemini-bq-fn --gen2 --runtime java17 --trigger-http --entry-point cloudcode.helloworld.GeminiBigQueryFunction --allow-unauthenticated --source .

將指令中的進入點替換為函式的進入點。輸出內容為 REST 網址,格式如下:

https://us-central1-YOUR_PROJECT_ID.cloudfunctions.net/gemini-bq-fn
  1. 如要測試這項 Cloud 函式,請在終端機中執行下列指令:
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"]]}'

隨機樣本提示的回覆:

Cloud Function 傳回的 JSON 回應字串

太棒了!Gemini Pro Vision 模型實作的通用 Cloud Function 已準備就緒。我們直接在 BigQuery 遠端函式中,對 BigQuery 資料使用這個端點。

步驟 2:建立 BigQuery 物件資料表和遠端函式

必要條件

您需要 Cloud Storage bucket 才能完成這部分練習。請按照下列步驟建立 Cloud Storage bucket:

  1. 如要建立 bucket,請前往 Cloud Storage 控制台,然後按一下「建立」
  2. 輸入 demo-bq-gemini-public-image 做為 bucket 名稱,然後按一下「建立」
  3. 取消勾選 Enforce public access prevention on this bucket 選項。雖然您要在本練習中建立可公開存取的值區,但我們建議您禁止公開存取,並視企業用途,為特定服務帳戶提供權限。
  4. 建立 bucket 後,請前往「Permissions」(權限) 分頁標籤,查看及變更權限。
  5. 如要新增主體,請按一下「授予存取權」。指定服務帳戶 ID,將權限授予特定帳戶,或指定 allUsers,將公開存取權授予值區。
  6. 選取 Storage Object Viewer 角色,然後按一下「儲存」。如果系統提示,請選擇允許公開存取。
  7. 前往「物件」分頁,上傳基準圖片和測試圖片進行比較。在本程式碼研究室中,您可以上傳下列公開物件:baseline.JPGTEST1.JPGTEST2.JPG

建立 BigQuery 物件資料表

從 BigQuery 建立外部物件資料表,使用您先前建立的連線和資料集,存取 bucket 中的非結構化資料。如要執行這項操作,請從 BigQuery 查詢編輯器窗格執行下列 DDL (資料定義語言) 陳述式:

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"]);

確認資料集中是否已建立名為 image_validation 的新物件資料表。

建立 BigQuery 遠端函式

在 BigQuery 中建立遠端函式,叫用實作 Gemini Pro Vision 模型的 Java Cloud Function。在同一個資料集中建立這個資料表。如要執行這項操作,請在 BigQuery 控制台的 SQL 編輯器窗格中執行下列 DDL:

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
 );

端點網址是本練習稍早傳回的 REST 網址。這會在 BigQuery 中建立遠端函式。上述 DDL 中有三個參數。前兩個參數是儲存在上一步驟建立的物件資料表中的圖片網址。最後一個參數是模型的提示 (Gemini Pro Vision)。您可以參考用於剖析這個簽章的 Java Cloud Functions 程式碼:

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();

從 BigQuery 叫用 Gemini

SELECT 查詢中使用遠端函式,測試函式是否能根據提示驗證圖片。

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%';  

請使用 TEST1TEST2 物件檔案,嘗試執行上述查詢。您會看到類似以下的結果:

BigQuery 遠端函式結果的螢幕截圖

以下圖片供您參考:

基準圖像

測試案例的基準參考圖片

測試圖片

測試案例的測試圖片 1

請注意,這兩張圖片的相似之處在於都顯示 Duet AI Cloud 控制台檢視畫面,但兩者中的文字不同,這是因為模型以 JSON 格式呈現。

這樣一來,您就成功測試了遠端函式實作。

7. 優點和應用實例

讓我們看看整合 BigQuery 和 Gemini,對結構化和非結構化資料分析有哪些好處。

  • 在資料中導入生成式 AI:不必再移動資料、重複資料,也不會增加複雜度。您可以在同一個 BigQuery 環境中分析資料及產生洞察資訊。
  • 強化數據分析:Gemini 的自然語言說明可讓您更深入瞭解資料,只要使用 SQL 查詢即可達成。
  • 可擴充性:這項解決方案可輕鬆處理大型資料集和複雜分析,且只需少量程式碼。

這項技術的應用範圍十分廣泛,以金融 (市場趨勢分析)、零售 (顧客情緒) 和醫療保健 (醫療報告摘要) 等情境為例,您的分析和業務團隊可以相對輕鬆地實作這些功能,並使用熟悉的語言和工具。

8. 清除所用資源

如要避免系統向您的 Google Cloud 帳戶收取本文章所用資源的費用,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中前往「管理資源」頁面。
  2. 在專案清單中選取要刪除的專案,然後點按「刪除」。
  3. 在對話方塊中輸入專案 ID,然後按一下「Shut down」(關閉) 即可刪除專案。
  4. 如要保留專案,請略過上述步驟,然後前往 Cloud Functions,在函式清單中勾選要刪除的函式,並按一下「刪除」

9. 恭喜

恭喜!有了整合至 BigQuery 的 Gemini 模型,您不再只是分析資料,而是資料說書人。您可以產生資料集中的隱藏敘事內容,並改變您解讀洞察的方式。快來試試!將這項技術套用至自己的資料集,發掘資料中的故事。BigQuery 支援物件資料表中的非結構化資料 ( 外部資料表),因此您可以嘗試使用 Gemini Pro Vision,針對圖片資料產生洞察。如需更深入的指引,請參閱 Vertex AIBigQuery 遠端函式Cloud Functions 的說明文件。這個專案的 GitHub 存放區位於這裡。歡迎與我們分享您運用所學知識打造的內容!