使用 BigQuery DataFrames 在 Python 中分析多模態資料
本教學課程將說明如何使用 BigQuery DataFrames 類別和方法,在 Python 筆記本中分析多模態資料。
本教學課程使用公開的 Cymbal 寵物商店資料集中的產品目錄。
如要上傳已填入本教學課程涵蓋工作的筆記本,請參閱「BigFrames 多模態 DataFrame」。
目標
- 建立多模態 DataFrame。
- 在 DataFrame 中合併結構化和非結構化資料。
- 轉換圖片。
- 根據圖片資料生成文字和嵌入項目。
- 將 PDF 分塊,以利進一步分析。
費用
在本文件中,您會使用下列 Google Cloud的計費元件:
- BigQuery: you incur costs for the data that you process in BigQuery.
- BigQuery Python UDFs: you incur costs for using BigQuery DataFrames image transformation and chunk PDF methods.
- Cloud Storage: you incur costs for the objects stored in Cloud Storage.
- Vertex AI: you incur costs for calls to Vertex AI models.
如要根據預測用量估算費用,請使用 Pricing Calculator。
如要瞭解詳情,請參閱下列定價頁面:
事前準備
-
在 Google Cloud 控制台的專案選擇器頁面中,選取或建立 Google Cloud 專案。
選取或建立專案所需的角色
- 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您已獲授角色,即可選取任何專案。
-
建立專案:如要建立專案,您需要具備專案建立者角色 (
roles/resourcemanager.projectCreator),其中包含resourcemanager.projects.create權限。瞭解如何授予角色。
-
啟用 BigQuery、BigQuery Connection、Cloud Storage 和 Vertex AI API。
啟用 API 時所需的角色
如要啟用 API,您需要服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。
必要的角色
如要取得完成本教學課程所需的權限,請要求管理員授予您下列 IAM 角色:
-
建立連線:
BigQuery 連線管理員 (
roles/bigquery.connectionAdmin) -
將權限授予連線的服務帳戶:
「專案 IAM 管理員」 (
roles/resourcemanager.projectIamAdmin) -
建立 Cloud Storage bucket:
Storage 管理員 (
roles/storage.admin) -
執行 BigQuery 工作:
BigQuery 使用者 (
roles/bigquery.user) -
建立及呼叫 Python UDF:
BigQuery 資料編輯者 (
roles/bigquery.dataEditor) -
建立可讀取及修改 Cloud Storage 物件的網址:
BigQuery ObjectRef 管理員 (
roles/bigquery.objectRefAdmin) -
使用筆記本:
-
BigQuery 讀取工作階段使用者 (
roles/bigquery.readSessionUser) -
筆記本執行階段使用者 (
roles/aiplatform.notebookRuntimeUser) -
筆記本執行階段使用者 (
roles/aiplatform.notebookRuntimeUser) -
程式碼建立者 (
roles/dataform.codeCreator)
-
BigQuery 讀取工作階段使用者 (
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
設定
在本節中,您將建立本教學課程使用的 Cloud Storage bucket、連線和筆記本。
建立值區
建立 Cloud Storage bucket,用於儲存轉換後的物件:
前往 Google Cloud 控制台的「Bucket」頁面。
點選 「建立」。
在「建立 bucket」頁面的「開始使用」部分,輸入符合bucket 名稱規定的全球專屬名稱。
點選「建立」。
建立連線
建立Cloud 資源連線,並取得連線的服務帳戶。BigQuery 會使用連線存取 Cloud Storage 中的物件。
前往「BigQuery」頁面
在「Explorer」窗格中,點選「新增資料」。
「新增資料」對話方塊隨即開啟。
在「依條件篩選」窗格的「資料來源類型」部分,選取「商用應用程式」。
或者,您也可以在「Search for data sources」(搜尋資料來源) 欄位中輸入
Vertex AI。在「精選資料來源」部分,點選「Vertex AI」。
按一下「Vertex AI Models: BigQuery Federation」解決方案資訊卡。
在「連線類型」清單中,選取「Vertex AI 遠端模型、遠端函式、BigLake 和 Spanner (Cloud 資源)」。
在「連線 ID」欄位中輸入
bigframes-default-connection。點選「建立連線」。
點選「前往連線」。
在「連線資訊」窗格中,複製服務帳戶 ID,以供後續步驟使用。
將權限授予連線的服務帳戶
為連線的服務帳戶授予存取 Cloud Storage 和 Vertex AI 所需的角色。您必須在「事前準備」一節中建立或選取的專案中,授予這些角色。
如要授予角色,請按照下列步驟操作:
前往「IAM & Admin」(IAM 與管理) 頁面。
按一下 「授予存取權」。
在「新增主體」欄位,輸入先前複製的服務帳戶 ID。
在「Select a role」(請選擇角色) 欄位中,依序選取「Cloud Storage」和「Storage Object User」(Storage 物件使用者)。
按一下 [Add another role] (新增其他角色)。
在「選取角色」欄位中,依序選取「Vertex AI」和「Vertex AI 使用者」。
按一下 [儲存]。
建立筆記本
建立可執行 Python 程式碼的筆記本:
前往「BigQuery」頁面
在編輯器窗格的分頁列中,按一下「SQL 查詢」旁邊的下拉式箭頭 ,然後點選「Notebook」(筆記本)。
在「從範本開始」窗格中,點選「關閉」。
依序點選「連線」> 連線到執行階段。
如果您已有執行階段,請接受預設設定,然後按一下「連線」。如果沒有現有的執行階段,請選取「建立新的執行階段」,然後按一下「連線」。
執行階段可能需要幾分鐘才能完成設定。
建立多模態 DataFrame
使用 Session 類別的 from_glob_path 方法,建立整合結構化和非結構化資料的多模態 DataFrame:
- 在筆記本中建立程式碼儲存格,然後將下列程式碼複製到該儲存格:
按一下 「Run」(執行)。
最後一次呼叫
df_image會傳回已加入 DataFrame 的圖片。或者,您也可以呼叫.display方法。
在 DataFrame 中合併結構化和非結構化資料
在多模態 DataFrame 中合併文字和圖片資料:
- 在筆記本中建立程式碼儲存格,然後將下列程式碼複製到該儲存格:
按一下「Run」。
程式碼會傳回 DataFrame 資料。
在筆記本中建立程式碼儲存格,然後將下列程式碼複製到該儲存格:
按一下「Run」。
程式碼會從 DataFrame 傳回
author資料欄值為alice的圖片。
執行圖片轉換作業
使用 Series.BlobAccessor 類別的下列方法轉換圖片資料:
轉換後的圖片會寫入 Cloud Storage。
轉換圖片:
- 在筆記本中建立程式碼儲存格,然後將下列程式碼複製到該儲存格:
- 將所有
{dst_bucket}參照更新為您建立的 bucket,格式為gs://mybucket。 按一下「Run」。
程式碼會傳回原始圖片和所有轉換結果。
生成文字
使用 GeminiTextGenerator 類別的 predict 方法,從多模態資料生成文字:
- 在筆記本中建立程式碼儲存格,然後將下列程式碼複製到該儲存格:
按一下「Run」。
程式碼會傳回
df_image中的前兩張圖片,以及針對這兩張圖片產生的文字回應what item is it?。在筆記本中建立程式碼儲存格,然後將下列程式碼複製到該儲存格:
按一下「Run」。
程式碼會傳回
df_image中的前兩張圖片,以及針對第一張圖片的問題what item is it?生成的文字,以及針對第二張圖片的問題what color is the picture?生成的文字。
生成嵌入項目
使用 MultimodalEmbeddingGenerator 類別的 predict 方法,為多模態資料生成嵌入:
- 在筆記本中建立程式碼儲存格,然後將下列程式碼複製到該儲存格:
按一下「Run」。
程式碼會傳回呼叫嵌入模型所產生的嵌入。
將 PDF 分塊
使用 Series.BlobAccessor 類別的 pdf_chunk 方法,將 PDF 物件分塊:
- 在筆記本中建立程式碼儲存格,然後將下列程式碼複製到該儲存格:
按一下「Run」。
程式碼會傳回分塊的 PDF 資料。
清除所用資源
- 前往 Google Cloud 控制台的「Manage resources」(管理資源) 頁面。
- 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)。
- 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。