arrow_back

在 BigQuery 使用遠端模型分析電影海報

登录 加入
Get access to 700+ labs and courses

在 BigQuery 使用遠端模型分析電影海報

实验 1 小时 universal_currency_alt 5 积分 show_chart 中级
info 此实验可能会提供 AI 工具来支持您学习。
Get access to 700+ labs and courses

GSP1247

總覽

在本實驗室,您將瞭解如何使用「BigQuery 機器學習推論」功能,運用遠端模型 (Gemini AI 模型) 來分析電影海報圖片並生成摘要,做為概念驗證專案的一環。

BigQuery 是支援 AI 的全代管資料分析平台,專為多引擎、跨格式和多雲端的環境而設計,可充分發揮資料價值。「BigQuery 機器學習推論」是 BigQuery 的一項重要功能,讓您能使用 GoogleSQL 查詢建立及執行機器學習模型。

Gemini 是由 Google DeepMind 開發的一系列生成式 AI 模型,專為多模態用途而設計。您可以透過 Gemini API 使用 Gemini Pro Vision 和 Gemini Pro 模型。

使用 GoogleSQL 查詢執行機器學習模型

一般來說,要對大型資料集執行機器學習或人工智慧 (AI) 技術,需要進行大量程式設計,並具備機器學習框架的知識。因此每間公司只有少數人員能開發解決方案。這些人還不包含資料分析師,因為分析師雖然瞭解資料,但機器學習和程式設計專業知識有限。有了「BigQuery 機器學習推論」功能,SQL 使用者就能運用現有的 SQL 工具和技能來建構模型,並以 LLM 和 Cloud AI API 生成結果。

目標

本實驗室的內容包括:

  • 為環境和帳戶進行使用 API 的相關設定。
  • 在 BigQuery 建立 Cloud 資源連線。
  • 在 BigQuery 為電影海報圖片建立資料集和物件資料表。
  • 在 BigQuery 建立 Gemini 遠端模型。
  • 提示 Gemini 為每張海報提供電影摘要。
  • 根據每張海報代表的電影生成文字嵌入。
  • 使用 BigQuery VECTOR_SEARCH 函式,找出資料集中與電影海報圖片高度相關的電影。

設定和需求

瞭解以下事項後,再點選「Start Lab」按鈕

請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。

您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。

為了順利完成這個實驗室,請先確認:

  • 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
  • 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。

如何開始研究室及登入 Google Cloud 控制台

  1. 點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:

    • 「Open Google Cloud console」按鈕
    • 剩餘時間
    • 必須在這個研究室中使用的臨時憑證
    • 完成這個實驗室所需的其他資訊 (如有)
  2. 點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」

    接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。

    提示:您可以在不同的視窗中並排開啟分頁。

    注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」
  3. 如有必要,請將下方的 Username 貼到「登入」對話方塊。

    {{{user_0.username | "Username"}}}

    您也可以在「Lab Details」窗格找到 Username。

  4. 點選「下一步」

  5. 複製下方的 Password,並貼到「歡迎使用」對話方塊。

    {{{user_0.password | "Password"}}}

    您也可以在「Lab Details」窗格找到 Password。

  6. 點選「下一步」

    重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。 注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
  7. 按過後續的所有頁面:

    • 接受條款及細則。
    • 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
    • 請勿申請免費試用。

Google Cloud 控制台稍後會在這個分頁開啟。

注意:如要使用 Google Cloud 產品和服務,請點選「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。

工作 1:為環境和專案進行使用 API 的相關設定

在這項工作,您會設定實驗室環境,以便在專案使用 Gemini 的 Cloud AI Companion API 和 Vertex AI Platform API。

注意:如果不熟悉 Cloud Shell,請參閱「使用 Cloud Shell」一文。
  1. 使用實驗室憑證登入 Google Cloud 控制台,然後開啟 Cloud Shell 終端機視窗。

  2. 執行下列指令,在 Cloud Shell 設定專案 ID 和區域環境變數:

    PROJECT_ID=$(gcloud config get-value project) REGION={{{project_0.default_region|set at lab start}}} echo "PROJECT_ID=${PROJECT_ID}" echo "REGION=${REGION}"
  3. 執行下列指令,將已登入的 Google 使用者帳戶儲存在環境變數中:

    USER=$(gcloud config get-value account 2> /dev/null) echo "USER=${USER}"
  4. 啟用 Gemini 的 Cloud AI Companion API 和 Vertex AI API:

    gcloud services enable cloudaicompanion.googleapis.com --project ${PROJECT_ID} gcloud services enable aiplatform.googleapis.com --project ${PROJECT_ID}
  5. 為您的 Google Cloud Qwiklabs 使用者帳戶授予必要的 IAM 角色,以便使用 Gemini:

    gcloud projects add-iam-policy-binding ${PROJECT_ID} --member user:${USER} --role=roles/cloudaicompanion.user gcloud projects add-iam-policy-binding ${PROJECT_ID} --member user:${USER} --role=roles/serviceusage.serviceUsageViewer

    新增角色後,使用者即可透過 Gemini 取得協助。

點按「Check my progress」,確認目標已達成。啟用相關 API 並設定 IAM 角色。

工作 2:建立 Cloud 資源連線

在這項工作,您會在 BigQuery 建立 Cloud 資源連線,以便使用 Gemini Pro 和 Gemini Pro Vision 模型。

  1. 前往 Google Cloud 控制台,點選「導覽選單」中的「BigQuery」

  2. 點選歡迎彈出式視窗中的「完成」

  3. 為了建立連線,請依序點選「+ 新增」和「連線至外部資料來源」

  4. 在「連線類型」清單中,選取「Vertex AI 遠端模型、遠端函式和 BigLake (Cloud 資源)」

  5. 在「連線 ID」欄位為連線輸入 gemini_conn

  6. 「位置類型」請選取「多區域」,然後從下拉式選單中選取「US」這個多區域

  7. 其他設定均保留預設值。

  8. 點選「建立連線」

  9. 點選「前往連線」

  10. 在「連線資訊」窗格,將服務帳戶 ID 複製到文字檔案,方便在下一項工作中使用。在 BigQuery Explorer,您也會看到該連線已新增至專案的「外部連線」專區。

點選「Check my progress」,確認目標已達成。 建立 Cloud 資源連線

工作 3:將 IAM 權限授予連線的服務帳戶

在這項工作,您會為 Cloud 資源連線的服務帳戶指定角色,讓帳戶具備 IAM 權限,以便使用 Vertex AI 服務。

  1. 前往 Google Cloud 控制台,依序點選「導覽選單」和「IAM 與管理」

  2. 點選「授予存取權」。

  3. 在「新增主體」欄位,輸入先前複製的服務帳戶 ID。

  4. 在「請選擇角色」欄位輸入「Vertex AI」,然後選取「Vertex AI 使用者」角色。

  5. 點選「儲存」

    現在服務帳戶 ID 具備 Vertex AI 使用者角色。

點選「Check my progress」,確認目標已達成。 將 IAM 權限授予連線的服務帳戶。

工作 4:在 BigQuery 為電影海報圖片建立資料集和物件資料表

在這項工作,您會建立專案資料集,並在當中建立物件資料表來儲存海報圖片。

建立資料集

  1. 前往 Google Cloud 控制台,依序選取「導覽選單」圖示 和「BigQuery」

  2. 在「Explorer」面板,請選取 的「查看動作」圖示 ,然後選擇「建立資料集」

    透過建立資料集,您可以儲存資料庫物件,包括資料表和模型。

  3. 在「建立資料集」窗格,輸入以下資訊:

    欄位
    資料集 ID gemini_demo
    位置類型 選取「多區域」
    多區域 選取「US」

    其他欄位均保留預設值。

  4. 點選「建立資料集」

    系統就會建立 gemini_demo 資料集,並在 BigQuery Explorer 中列於專案下方。

建立物件資料表

您會使用 SQL 查詢來建立物件資料表。

  1. 點選「+」,建立新的 SQL 查詢

  2. 在查詢編輯器貼上以下查詢。

    CREATE OR REPLACE EXTERNAL TABLE `gemini_demo.movie_posters` WITH CONNECTION `us.gemini_conn` OPTIONS ( object_metadata = 'SIMPLE', uris = ['gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters/*'] );
  3. 執行查詢。

    系統就會將 movie_posters 物件資料表新增至 gemini_demo 資料集,並載入每張電影海報圖片的 URI (Cloud Storage 位置)。

  4. 在 Explorer 點選「movie_posters」,查看結構定義和詳細資料。如要查看特定記錄,可以查詢資料表。

點選「Check my progress」,確認目標已達成。 在 BigQuery 為電影海報圖片建立資料集和物件資料表。

工作 5:在 BigQuery 建立 Gemini 遠端模型

建立物件資料表後,即可開始使用。在這項工作,您會在 BigQuery 建立 Gemini Pro 及 Gemini Pro Vision 的遠端模型。

建立 Gemini Pro 模型

  1. 點選「+」圖示,建立新的 SQL 查詢。

  2. 在查詢編輯器,貼上並執行以下查詢。

    CREATE OR REPLACE MODEL `gemini_demo.gemini_pro` REMOTE WITH CONNECTION `us.gemini_conn` OPTIONS (endpoint = 'gemini-pro')

    系統就會建立 gemini_pro 模型,並新增至模型專區的 gemini_demo 資料集。

  3. 在 Explorer 點選「gemini_pro」模型,查看詳細資料和結構定義。

建立 Gemini Pro Vision 模型

  1. 點選「+」圖示,建立新的 SQL 查詢。

  2. 在查詢編輯器,貼上並執行以下查詢。

    CREATE OR REPLACE MODEL `gemini_demo.gemini_pro_vision` REMOTE WITH CONNECTION `us.gemini_conn` OPTIONS (endpoint = 'gemini-pro-vision')

    系統就會建立 gemini_pro_vision 模型,並新增至模型專區的 gemini_demo 資料集。

  3. 在 Explorer 點選「gemini_pro_vision」模型,查看詳細資料和結構定義。

點選「Check my progress」,確認目標已達成。 在 BigQuery 建立 Gemini 遠端模型。

工作 6:提示 Gemini 為每張海報提供電影摘要

在這項工作,您會使用 Gemini (您剛建立的 Gemini Pro 和 Vision 模型) 分析電影海報圖片,為每部電影生成摘要。

使用 Gemini Pro Vision 模型分析圖片

  1. 點選「+」圖示,建立新的 SQL 查詢。

  2. 在查詢編輯器,貼上並執行以下查詢。

    CREATE OR REPLACE TABLE `gemini_demo.movie_posters_results` AS ( SELECT uri, ml_generate_text_llm_result FROM ML.GENERATE_TEXT( MODEL `gemini_demo.gemini_pro_vision`, TABLE `gemini_demo.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)));

    系統就會建立 movie_posters_results 資料表。

  3. 在 Explorer 點選「movie_posters_results」資料表,查看結構定義和詳細資料。

  4. 點選「+」圖示,建立新的 SQL 查詢。

  5. 在查詢編輯器,貼上並執行以下查詢。

    SELECT * FROM `gemini_demo.movie_posters_results`

    在產生的資料表中,每張電影海報都有一個資料列,其中顯示 URI (電影海報圖片的 Cloud Storage 位置) 和 JSON 結果,包含 Gemini Pro Vision 模型生成的片名和上映年份。

    您可以使用下方查詢,以較方便人類閱讀的方式擷取資料:

  6. 點選「+」圖示,建立新的 SQL 查詢。

  7. 在查詢編輯器,貼上並執行以下查詢。

    CREATE OR REPLACE TABLE `gemini_demo.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 `gemini_demo.movie_posters_results` results )

    系統就會建立 movie_posters_result_formatted 資料表。

  8. 您可以對這個資料表執行以下查詢,查看建立的資料列。

    SELECT * FROM `gemini_demo.movie_posters_results_formatted`

    您會發現每列的 URI 欄結果維持不變,但 JSON 現已轉為片名欄和上映年份欄。

提示 Gemini Pro 提供電影摘要

  1. 您可以使用 Gemini Pro 執行以下查詢,為每張海報提供電影摘要。

    SELECT uri, title, year, prompt, ml_generate_text_llm_result FROM ML.GENERATE_TEXT( MODEL `gemini_demo.gemini_pro`, ( SELECT CONCAT('Provide a short summary of movie titled ',title, ' from the year ',year,'.') AS prompt, uri, title, year FROM `gemini_demo.movie_posters_results_formatted` LIMIT 20 ), STRUCT(0.2 AS temperature, TRUE AS FLATTEN_JSON_OUTPUT));

    請注意,結果與先前的查詢類似,但現在提示資料欄會顯示 Gemini 使用的提示,ml_generate_text_llm_result 欄位則含有該提示產生的結果,其中包括電影的簡短摘要。

點選「Check my progress」,確認目標已達成。 提示 Gemini 為每張海報提供電影摘要

工作 7:使用遠端模型生成文字嵌入

在這項工作,您會使用遠端模型生成文字嵌入,以便進一步分析。

建立遠端模型

您將需要使用端點上託管的 text-multilingual-embedding-002 遠端模型,生成文字嵌入。

  1. 點選「+」圖示,建立新的 SQL 查詢。

  2. 在查詢編輯器,貼上並執行以下查詢。

    CREATE OR REPLACE MODEL `gemini_demo.text_embedding` REMOTE WITH CONNECTION `us.gemini_conn` OPTIONS (endpoint = 'text-multilingual-embedding-002')

    系統就會建立 text_embedding 模型,並在 Explorer 中列於 gemini_demo 資料集下方。

為片名和上映年份生成文字嵌入

您需要建立資料表來儲存結果。

  1. 點選「+」圖示,建立新的 SQL 查詢。

  2. 在查詢編輯器,貼上並執行以下查詢。

    CREATE OR REPLACE TABLE `gemini_demo.movie_posters_results_embeddings` AS ( SELECT * FROM ML.GENERATE_EMBEDDING( MODEL `gemini_demo.text_embedding`, ( SELECT CONCAT('The movie titled ', title, ' from the year ', year,'.') AS content, title, year, uri FROM `gemini_demo.movie_posters_results_formatted` ), STRUCT(TRUE AS flatten_json_output)));

    系統就會產生 movie_poster_results_embeddings 資料表,內含根據 gemini_demo.movie_posters_results_formatted 資料表文字內容 (URI、片名和上映年份) 建立的嵌入。

    注意:ML.GENERATE_EMBEDDING 函式是用於生成嵌入,這個函式需要三個引數:
    • 第一個引數是用來生成嵌入的模型名稱。這次使用的模型名為 gemini_demo.text_embedding。
    • 第二個引數是子查詢,用來選取要嵌入的文字內容。本例中的子查詢會選取每部電影的名稱和上映年份,並將這些文字串連成一個字串。
    • 第三個引數是 struct,用來指定嵌入的輸出格式。這個範例將 flatten_json_output 欄位設為 TRUE,代表嵌入會扁平化為單一 JSON 物件。
  3. 您可以使用下面這個新查詢來查看結果:

    SELECT * FROM `gemini_demo.movie_posters_results_embeddings`

    您可以看到模型為每部電影生成的嵌入 (以數字表示的向量)。

為 IMDb 資料集的部分資料生成文字嵌入

您會建立新的 view,其中只包含資料集裡 1935 年以前上映的電影。

  1. 使用以下 SQL 陳述式建立及執行新的查詢。

    CREATE OR REPLACE VIEW `gemini_demo.imdb_movies` AS ( WITH reviews AS ( SELECT reviews.movie_id AS movie_id, title.primary_title AS title, title.start_year AS year, reviews.review AS review FROM `bigquery-public-data.imdb.reviews` reviews LEFT JOIN `bigquery-public-data.imdb.title_basics` title ON reviews.movie_id = title.tconst) SELECT DISTINCT(movie_id), title, year FROM reviews WHERE year < 1935)

    系統就會生成新的 view,其中涵蓋 bigquery-public-data.imdb.reviews 資料表中 1935 年以前上映的所有電影,並顯示各電影的 ID、片名和上映年份。

  2. 使用以下 SQL 陳述式建立及執行新的查詢。

    CREATE OR REPLACE TABLE `gemini_demo.imdb_movies_embeddings` AS ( SELECT * FROM ML.GENERATE_EMBEDDING( MODEL `gemini_demo.text_embedding`, ( SELECT CONCAT('The movie titled ', title, ' from the year ', year,'.') AS content, title, year, movie_id FROM `gemini_demo.imdb_movies` ), STRUCT(TRUE AS flatten_json_output) ) WHERE ml_generate_embedding_status = '' );

    系統就會生成資料表,內含 gemini_demo.imdb_movies 資料表的文字內容嵌入。

使用 BigQuery VECTOR_SEARCH 函式,為各電影海報圖片找出對應的 IMDb movie_id

  1. 使用以下 SQL 陳述式建立及執行新的查詢。

    SELECT query.uri AS poster_uri, query.title AS poster_title, query.year AS poster_year, base.title AS imdb_title, base.year AS imdb_year, base.movie_id AS imdb_movie_id, distance FROM VECTOR_SEARCH( TABLE `gemini_demo.imdb_movies_embeddings`, 'ml_generate_embedding_result', TABLE `gemini_demo.movie_posters_results_embeddings`, 'ml_generate_embedding_result', top_k => 1, distance_type => 'COSINE');

    查詢會使用 VECTOR_SEARCH 函式,為 gemini_demo.movie_posters_results_embeddings 資料表中的每個資料列,在 gemini_demo.imdb_movies_embeddings 資料表找出最鄰近的項目。系統會使用餘弦距離指標來找出最鄰近的項目,這個指標用來表示兩個嵌入的相似度。

    在前面的步驟,我們使用 Gemini Pro Vision 辨識出海報中的電影。這個查詢可根據 Gemini 辨識出的電影,在 IMDb 資料集找出最相似的電影。舉例來說,您可以使用這項查詢,根據 Gemini Pro Vision 從電影海報辨識出的片名《Au Secours!》,從 IMDb 公開資料集找出與最接近的電影。IMDb 是使用英文片名《Help!》來表示這部電影。

  2. 建立並執行新的查詢,以 join 的方式結合 IMDb 公開資料集裡額外的電影評分資訊。

    SELECT query.uri AS poster_uri, query.title AS poster_title, query.year AS poster_year, base.title AS imdb_title, base.year AS imdb_year, base.movie_id AS imdb_movie_id, distance, imdb.average_rating, imdb.num_votes FROM VECTOR_SEARCH( TABLE `gemini_demo.imdb_movies_embeddings`, 'ml_generate_embedding_result', TABLE `gemini_demo.movie_posters_results_embeddings`, 'ml_generate_embedding_result', top_k => 1, distance_type => 'COSINE') DATA LEFT JOIN `bigquery-public-data.imdb.title_ratings` imdb ON base.movie_id = imdb.tconst ORDER BY imdb.average_rating DESC

    這項查詢與剛才類似,系統仍會使用向量嵌入這種特殊數值表示法,找出與某個電影海報相似的電影。不過,這個資料集也從 IMDb 公開資料集的另一個資料表,以 join 的方式結合每部最相似電影的平均評分和投票數。

點選「Check my progress」,確認目標已達成。 為 IMDb 資料集的部分資料生成文字嵌入

恭喜!

您已成功在 BigQuery 建立海報圖片的物件資料表、建立遠端 Gemini 模型、使用模型提示 Gemini 分析圖片並提供電影摘要、為片名生成文字嵌入,並使用嵌入為圖片找出 IMDb 資料集裡的相關片名。

後續步驟/瞭解詳情

Google Cloud 教育訓練與認證

協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。

使用手冊上次更新日期:2024 年 10 月 4 日

實驗室上次測試日期:2024 年 5 月 23 日

Copyright 2025 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

Before you begin

  1. Labs create a Google Cloud project and resources for a fixed time
  2. Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
  3. On the top left of your screen, click Start lab to begin

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

One lab at a time

Confirm to end all existing labs and start this one

Use private browsing to run the lab

Use an Incognito or private browser window to run this lab. This prevents any conflicts between your personal account and the Student account, which may cause extra charges incurred to your personal account.