在 BigQuery 中分析多模態資料

本文件說明可用於分析多模態資料的 BigQuery 功能。部分功能可在Google Cloud 主控台和 bq 指令列工具中使用,其他功能則可在 Python 中使用 BigQuery DataFrame 使用。您可以同時使用多項功能,讓多模組資料更容易進行分析和轉換。

您可以使用 BigQuery 的多模態資料功能執行下列工作:

如需使用 Google Cloud 控制台的逐步教學課程,請參閱「使用 SQL 分析多模態資料」。如需 Python 中使用 BigQuery DataFrames 的逐步教學課程,請參閱「使用 BigQuery DataFrames 在 Python 中分析多模態資料」。

優點

BigQuery 的多模態資料功能提供下列優點:

  • 可組合性:您可以使用 ObjectRef 值,在同一個標準表格資料列中儲存及管理結構化和非結構化資料。舉例來說,您可以將產品圖片儲存在與其他產品資訊相同的資料列中。您可以使用標準 SQL 函式建立及更新包含 ObjectRef 值的資料欄,並建立 ObjectRef 值做為物件上轉換動作的輸出內容。
  • 在生成式 AI 提示中使用物件資料:使用 ObjectRefRuntime 值做為生成式 AI 函式的輸入內容。舉例來說,您可以根據同一個資料表中的圖片和文字資料產生嵌入資料。針對文字和標量值產生作業,您也可以在傳送至模型的提示中參照多個物件。舉例來說,您可以建立提示,要求模型比較兩張動物圖片,然後傳回文字,指出兩張圖片是否顯示相同類型的動物。
  • 保留區塊順序:您可以將物件分割成區塊,然後將區塊儲存為標準資料表欄中的 ObjectRef 值陣列,以便保留其順序。舉例來說,您可以剖析影片中的圖片,然後將這些圖片儲存為 ObjectRef 值的陣列,讓圖片保持與原始影片中相同的順序。

ObjectRef 個值

ObjectRef 值是使用 ObjectRef 格式STRUCT 值。您可以建立使用此格式的 STRUCTARRAY<STRUCT> 欄,將 Cloud Storage 物件中繼資料和相關授權者儲存在 BigQuery 標準資料表中。授權者值會標示 BigQuery 用來存取 Cloud Storage 物件的 Cloud 資源連線

如需將非結構化資料整合至標準表格,請使用 ObjectRef 值。舉例來說,在產品資料表中,您可以新增含有 ObjectRef 值的資料欄,將產品圖片儲存在與其他產品資訊相同的資料列中。

使用下列 GoogleSQL 函式建立及更新 ObjectRef 值:

  • OBJ.MAKE_REF:建立包含 Cloud Storage 物件中繼資料的 ObjectRef 值。
  • OBJ.FETCH_METADATA:針對 ObjectRef 值擷取 Cloud Storage 中繼資料,該值部分填入 uriauthorizer 值。

詳情請參閱「在資料表結構定義中指定 ObjectRef」。

ObjectRefRuntime 個值

ObjectRefRuntime 值是使用 ObjectRefRuntime 結構定義JSON 值。ObjectRefRuntime 值包含用於建立 ObjectRef 值的 Cloud Storage 物件中繼資料、相關聯的授權者和存取網址。您可以使用存取網址讀取或修改 Cloud Storage 中的物件。

使用 ObjectRefRuntime 值,在分析和轉換工作流程中處理物件資料。ObjectRefRuntime 值中的存取網址最多會在 6 小時後到期,但您可以設定較短的到期時間。如果您在工作流程中的任何位置保留 ObjectRefRuntime 值,請定期重新整理這些資料。如要保留物件中繼資料,請改為儲存 ObjectRef 值,然後在需要時使用這些值產生 ObjectRefRuntime 值。除非 Cloud Storage 中的基礎物件有所變更,否則不需要重新整理 ObjectRef 值。

使用 OBJ.GET_ACCESS_URL 函式建立 ObjectRefRuntime 值。

生成式 AI 函式

使用 Gemini 模型搭配下列生成式 AI 函式,根據 ObjectRefRuntime 輸入內容產生文字、嵌入和標量值:

除了 ML.GENERATE_EMBEDDING 以外,您可以為所有函式提供 ObjectRefRuntime 值,做為單一值或陣列。ML.GENERATE_EMBEDDING 只接受單一值。

在 Python 中使用多模態資料

您可以使用 BigQuery DataFrames 類別和方法,在 Python 中分析多模態資料。

多模態 DataFrame

使用下列 Session 方法,建立整合結構化和非結構化資料的多模態 DataFrame:

物件轉換方法

使用下列 Series.BlobAccessor 方法轉換物件資料:

生成式 AI 方法

請使用下列方法,在多模態資料上執行生成式 AI 工作:

物件資料表

如果您是多模態資料預覽的許可清單成員,則您建立的任何新物件資料表都會有一個 ref 資料欄,其中包含指定物件的 ObjectRef 值。用於建立物件資料表的連線,會用來在 ref 欄中填入 authorizer 值。您可以使用 ref 資料欄,在標準資料表中填入及更新 ObjectRef 值。

限制

以下限制適用於 BigQuery 多模態資料地圖:

  • 您必須執行任何查詢,該查詢會在包含 ObjectRef 值的資料表中參照 ObjectRef 值。
  • 在執行參照 ObjectRefObjectRefRuntime 值的查詢時,專案和地區中的連線不得超過 20 個。舉例來說,如果您在 myproject 中執行 asia-east1 中的查詢,則 myproject 中的 asia-east1 最多只能有 20 個連線。

費用

使用多模態資料時,適用下列費用:

  • 將物件中繼資料儲存在標準資料表中的 ObjectRef 值,會導致該資料表的 BigQuery 儲存空間費用增加。
  • 針對 ObjectRef 值執行的查詢會產生 BigQuery 運算費用。
  • 透過物件轉換建立的新物件會產生 Cloud Storage 費用。
  • 您在 BigQuery 中建立並保留的新資料會產生 BigQuery 儲存空間費用。
  • 使用生成式 AI 函式會產生 Vertex AI 費用。
  • 使用 BigQuery Python UDF、多模態 DataFrame 和 BigQuery DataFrame 中的物件轉換方法,都會產生 Python UDF 費用。

如需詳細資訊,請參閱下列定價頁面:

後續步驟