使用 Gemini 模型分析圖片
本教學課程說明如何建立以 gemini-2.5-flash
模型為基礎的 BigQuery ML 遠端模型,然後使用該模型和 ML.GENERATE_TEXT
函式分析一組電影海報圖片。
本教學課程涵蓋下列工作:
- 在 Cloud Storage bucket 中,針對圖片資料建立 BigQuery 物件資料表。
- 建立以 Vertex AI
gemini-2.5-flash
模型為目標的 BigQuery ML 遠端模型。 - 使用
ML.GENERATE_TEXT
函式搭配遠端模型,找出與一組電影海報相關聯的電影。
電影海報資料位於公開的 Cloud Storage bucket gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters
。
必要的角色
如要執行本教學課程,您需要下列 Identity and Access Management (IAM) 角色:
- 建立及使用 BigQuery 資料集、連線和模型:
BigQuery 管理員 (
roles/bigquery.admin
)。 - 將權限授予連線的服務帳戶:專案 IAM 管理員 (
roles/resourcemanager.projectIamAdmin
)。
這些預先定義的角色具備執行本文中工作所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
- 建立資料集:
bigquery.datasets.create
- 建立、委派及使用連線:
bigquery.connections.*
- 設定預設連線:
bigquery.config.*
- 設定服務帳戶權限:
resourcemanager.projects.getIamPolicy
和resourcemanager.projects.setIamPolicy
- 建立物件資料表:
bigquery.tables.create
和bigquery.tables.update
- 建立模型並執行推論:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
費用
在本文件中,您會使用 Trusted Cloud by S3NS的下列計費元件:
- BigQuery ML: You incur costs for the data that you process in BigQuery.
- Vertex AI: You incur costs for calls to the Vertex AI model that is represented by the BigQuery remote model.
如要根據預測用量估算費用,請使用 Pricing Calculator。
如要進一步瞭解 BigQuery 定價,請參閱 BigQuery 說明文件中的「BigQuery 定價」一文。
如要進一步瞭解 Vertex AI 生成式 AI 定價,請參閱 Vertex AI 定價頁面。
事前準備
-
In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.
-
Verify that billing is enabled for your Trusted Cloud project.
-
Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.
建立資料集
建立 BigQuery 資料集來儲存機器學習模型。
控制台
前往 Trusted Cloud 控制台的「BigQuery」頁面。
在「Explorer」窗格中,按一下專案名稱。
依序點按
「View actions」(查看動作) >「Create dataset」(建立資料集)。在「建立資料集」頁面中,執行下列操作:
在「Dataset ID」(資料集 ID) 中輸入
bqml_tutorial
。針對「Location type」(位置類型) 選取「Multi-region」(多區域),然後選取「US (multiple regions in United States)」(us (多個美國區域))。
其餘設定請保留預設狀態,然後按一下「Create dataset」(建立資料集)。
bq
如要建立新的資料集,請使用 bq mk
指令搭配 --location
旗標。如需可能的完整參數清單,請參閱 bq mk --dataset
指令參考資料。
建立名為「
bqml_tutorial
」的資料集,並將資料位置設為「US
」,以及說明設為「BigQuery ML tutorial dataset
」:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
這個指令採用
-d
捷徑,而不是使用--dataset
旗標。如果您省略-d
和--dataset
,該指令預設會建立資料集。確認資料集已建立完成:
bq ls
API
請呼叫 datasets.insert
方法,搭配已定義的資料集資源。
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
BigQuery DataFrames
在嘗試這個範例之前,請按照使用 BigQuery DataFrames 的 BigQuery 快速入門導覽課程中的 BigQuery DataFrames 設定說明操作。 詳情請參閱 BigQuery DataFrames 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定 ADC」。
建立物件資料表
在公開的 Cloud Storage bucket 中,為電影海報圖片建立物件資料表。有了物件資料表,您就能分析圖片,不必將圖片從 Cloud Storage 移出。
前往 Trusted Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中執行下列查詢,建立物件資料表:
CREATE OR REPLACE EXTERNAL TABLE `bqml_tutorial.movie_posters` WITH CONNECTION DEFAULT OPTIONS ( object_metadata = 'SIMPLE', uris = ['gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters/*']);
建立遠端模型
建立代表 Vertex AI gemini-2.5-flash
模型的遠端模型:
前往 Trusted Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中執行下列查詢,建立遠端模型:
CREATE OR REPLACE MODEL `bqml_tutorial.gemini-vision` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT = 'gemini-2.5-flash');
查詢作業會在幾秒內完成,完成後,
gemini-vision
模型會顯示在「Explorer」(探索工具) 窗格的bqml_tutorial
資料集中。由於查詢是使用CREATE MODEL
陳述式建立模型,因此不會有查詢結果。
分析電影海報
使用遠端模型分析電影海報,判斷每張海報代表的電影,然後將這項資料寫入表格。
前往 Trusted Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中執行下列查詢,分析電影海報圖片:
CREATE OR REPLACE TABLE `bqml_tutorial.movie_posters_results` AS ( SELECT uri, ml_generate_text_llm_result FROM ML.GENERATE_TEXT( MODEL `bqml_tutorial.gemini-vision`, TABLE `bqml_tutorial.movie_posters`, STRUCT( 0.2 AS temperature, 'For the movie represented by this poster, what is the movie title and year of release? Answer in JSON format with two keys: title, year. title should be string, year should be integer.' AS PROMPT, TRUE AS FLATTEN_JSON_OUTPUT)));
在查詢編輯器中執行下列陳述式,即可查看資料表資料:
SELECT * FROM `bqml_tutorial.movie_posters_results`;
輸出結果會與下列內容相似:
+--------------------------------------------+----------------------------------+ | uri | ml_generate_text_llm_result | +--------------------------------------------+----------------------------------+ | gs://cloud-samples-data/vertex-ai/dataset- |
json | | management/datasets/classic-movie- | { | | posters/little_annie_rooney.jpg | "title": "Little Annie Rooney", | | | "year": 1912 | | | } | | |
| +--------------------------------------------+----------------------------------+ | gs://cloud-samples-data/vertex-ai/dataset- |json | | management/datasets/classic-movie- | { | | posters/mighty_like_a_mouse.jpg | "title": "Mighty Like a Moose", | | | "year": 1926 | | | } | | |
| +--------------------------------------------+----------------------------------+ | gs://cloud-samples-data/vertex-ai/dataset- |json | | management/datasets/classic-movie- | { | | posters/brown_of_harvard.jpeg | "title": "Brown of Harvard", | | | "year": 1926 | | | } | | |
| +--------------------------------------------+----------------------------------+
設定模型輸出內容格式
格式化模型傳回的電影分析資料,讓電影名稱和年份資料更容易閱讀。
前往 Trusted Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中執行下列查詢,即可格式化資料:
CREATE OR REPLACE TABLE `bqml_tutorial.movie_posters_results_formatted` AS ( SELECT uri, JSON_QUERY(RTRIM(LTRIM(results.ml_generate_text_llm_result, " ```json"), "```"), "$.title") AS title, JSON_QUERY(RTRIM(LTRIM(results.ml_generate_text_llm_result, " ```json"), "```"), "$.year") AS year FROM `bqml_tutorial.movie_posters_results` results );
在查詢編輯器中執行下列陳述式,即可查看資料表資料:
SELECT * FROM `bqml_tutorial.movie_posters_results_formatted`;
輸出結果會與下列內容相似:
+--------------------------------------------+----------------------------+------+ | uri | title | year | +--------------------------------------------+----------------------------+------+ | gs://cloud-samples-data/vertex-ai/dataset- | "Barque sortant du port" | 1895 | | management/datasets/classic-movie- | | | | posters/barque_sortant_du_port.jpeg | | | +--------------------------------------------+----------------------------+------+ | gs://cloud-samples-data/vertex-ai/dataset- | "The Great Train Robbery" | 1903 | | management/datasets/classic-movie- | | | | posters/the_great_train_robbery.jpg | | | +--------------------------------------------+----------------------------+------+ | gs://cloud-samples-data/vertex-ai/dataset- | "Little Annie Rooney" | 1912 | | management/datasets/classic-movie- | | | | posters/little_annie_rooney.jpg | | | +--------------------------------------------+----------------------------+------+
清除所用資源
- In the Trusted Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.