在 BigQuery 中分析多模態資料

本文說明可用於分析多模態資料的 BigQuery 功能。部分功能可透過Trusted Cloud 控制台和 bq 指令列工具使用,其他功能則可透過 Python 中的 BigQuery DataFrames 使用。您可以同時使用多項功能,更輕鬆地分析及轉換多模組資料。

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

如需使用 Trusted 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: 擷取部分填入 uriauthorizer 值的 ObjectRef 值的 Cloud Storage 中繼資料。

詳情請參閱「在資料表結構定義中指定 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 值的任何查詢。
  • 在專案和區域中,您無法擁有超過 20 個連線,且您執行的查詢會參照 ObjectRefObjectRefRuntime 值。舉例來說,如果您在 asia-east1 中執行查詢 myproject,則 asia-east1 中的連線數不得超過 20 個。myproject

費用

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

  • 在標準資料表中以 ObjectRef 值形式儲存物件中繼資料,會增加資料表的 BigQuery 儲存費用。
  • ObjectRef 值執行的查詢會產生 BigQuery 計算費用。
  • 從物件轉換作業建立的新物件會產生 Cloud Storage 費用。
  • 您在 BigQuery 中建立及保留的新資料會產生 BigQuery 儲存費用。
  • 使用生成式 AI 函式會產生 Vertex AI 費用。
  • 在 BigQuery DataFrames 中使用 BigQuery Python UDF,以及多模態 DataFrame 和物件轉換方法,會產生 Python UDF 費用。

詳情請參閱下列定價頁面:

後續步驟