在 BigQuery 中分析多模態資料
本文說明可用於分析多模態資料的 BigQuery 功能。部分功能可透過Google Cloud 控制台和 bq 指令列工具使用,其他功能則可透過 Python 中的 BigQuery DataFrames 使用。您可以同時使用多項功能,更輕鬆地分析及轉換多模組資料。
BigQuery 的多模態資料功能可讓您執行下列工作:
- 使用
ObjectRef值,將非結構化資料整合到標準表格中。 - 使用
ObjectRefRuntime值,在分析和轉換工作流程中處理非結構化資料。 - 使用 BigQuery ML 生成式 AI 函式和 Gemini 模型,從多模態資料生成文字、嵌入和純量值。
- 在 BigQuery DataFrames 中建立多模態 DataFrame。
- 使用 BigQuery DataFrames
Series.BlobAccessor方法轉換圖片並將 PDF 檔案分塊。 - 使用 BigQuery DataFrame 生成式 AI 方法,從多模態資料生成文字和嵌入項目。
如需使用 Google Cloud 控制台的逐步教學課程,請參閱「使用 SQL 分析多模態資料」。如需使用 Python 中的 BigQuery DataFrames 逐步教學課程,請參閱「使用 BigQuery DataFrames 在 Python 中分析多模態資料」。
優點
BigQuery 的多模態資料功能提供下列優點:
- 可組合性:您可以使用
ObjectRef值,在同一個標準資料表列中儲存及管理結構化和非結構化資料。舉例來說,你可以將產品圖片與其他產品資訊儲存在同一列。您可以使用標準 SQL 函式建立及更新包含ObjectRef值的資料欄,也可以建立ObjectRef值,做為物件轉換動作的輸出內容。 - 在生成式 AI 提示中使用物件資料:將
ObjectRefRuntime值做為生成式 AI 函式的輸入內容。舉例來說,您可以從同一個資料表產生圖片和文字資料的嵌入內容。如要生成文字和純量值,您也可以在傳送給模型的提示中參照多個物件。舉例來說,您可以建立提示,要求模型比較兩張動物圖片,然後傳回文字,指出圖片是否顯示相同類型的動物。 - 保留區塊順序:您可以將物件分塊,然後將區塊儲存為標準資料表資料欄中的
ObjectRef值陣列,以便保留區塊順序。舉例來說,您可以剖析影片中的圖片,然後將這些圖片儲存為ObjectRef值陣列,讓圖片維持在原始影片中的顯示順序。
ObjectRef 個值
ObjectRef 值是採用ObjectRef 格式的 STRUCT 值。您可以建立使用此格式的 STRUCT 或 ARRAY<STRUCT> 資料欄,將 Cloud Storage 物件中繼資料和相關聯的授權者儲存在 BigQuery 標準資料表中。授權者值會識別 BigQuery 用來存取 Cloud Storage 物件的Cloud 資源連線。
如要將非結構化資料整合到標準表格中,請使用 ObjectRef 值。舉例來說,在產品資料表中,您可以新增包含 ObjectRef 值的資料欄,將產品圖片與其他產品資訊儲存在同一列。
使用下列 GoogleSQL 函式建立及更新 ObjectRef 值:
OBJ.MAKE_REF:建立包含 Cloud Storage 物件中繼資料的ObjectRef值。OBJ.FETCH_METADATA: 擷取部分填入uri和authorizer值的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
AI.GENERATEAI.GENERATE_TEXTAI.GENERATE_TABLEAI.GENERATE_BOOLAI.GENERATE_DOUBLEAI.GENERATE_INTAI.GENERATE_EMBEDDINGAI.EMBEDAI.SIMILARITY
在 Python 中處理多模態資料
您可以使用 BigQuery DataFrames 類別和方法,在 Python 中分析多模態資料。
多模態 DataFrame
使用下列 Session 方法,建立整合結構化和非結構化資料的多模態 DataFrame:
from_glob_path方法:從 Cloud Storage 值區建立多模態 DataFrame。read_gbq_object_table方法:從物件資料表建立多模態 DataFrame。
物件轉換方法
使用下列 Series.BlobAccessor 方法轉換物件資料:
pdf_chunk方法:從多模態 DataFrame 建立 PDF 物件的區塊。以下方法可轉換多模態 DataFrame 中的圖片物件:
生成式 AI 方法
使用下列方法,對多模態資料執行生成式 AI 工作:
predict方法 的GeminiTextGenerator類別: 根據多模態資料生成文字。predict方法MultimodalEmbeddingGenerator類別: 根據多模態資料生成嵌入項目。
物件資料表
如果您已加入多模態資料預覽的允許清單,您建立的任何新物件資料表都會有 ref 資料欄,其中包含指定物件的 ObjectRef 值。用於建立物件資料表的連線,會用來填入 ref 欄中的 authorizer 值。您可以使用 ref 欄位,在標準表格中填入及重新整理 ObjectRef 值。
限制
BigQuery 多模態資料功能有下列限制:
- 您必須在與包含
ObjectRef值的資料表相同的專案中,執行任何參照ObjectRef值的查詢。 - 在專案和區域中,您無法擁有超過 20 個連線,且這些連線會執行參照
ObjectRef或ObjectRefRuntime值的查詢。舉例來說,如果您在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 費用。
詳情請參閱下列定價頁面:
後續步驟
- 在資料表結構定義中指定
ObjectRef資料欄。 - 使用 SQL 分析多模態資料。
- 使用 BigQuery DataFrames 在 Python 中分析多模態資料。
- 進一步瞭解 BigQuery ML 中的生成式 AI。
- 進一步瞭解 BigQuery DataFrames。