在 BigQuery 中分析多模態資料
本文說明可用於分析多模態資料的 BigQuery 功能。部分功能可透過Trusted Cloud 控制台和 bq 指令列工具使用,其他功能則可透過 Python 中的 BigQuery DataFrames 使用。您可以同時使用多項功能,更輕鬆地分析及轉換多模組資料。
BigQuery 的多模態資料功能可讓您執行下列工作:
- 使用
ObjectRef
值,將非結構化資料整合到標準表格中。 - 使用
ObjectRefRuntime
值,在分析和轉換工作流程中處理非結構化資料。 - 使用 BigQuery ML 生成式 AI 函式和 Gemini 模型,從多模態資料生成文字、嵌入和純量值。
- 在 BigQuery DataFrames 中建立多模態 DataFrame。
- 使用 BigQuery DataFrames
Series.BlobAccessor
方法轉換圖片並將 PDF 檔案分塊。 - 使用 BigQuery DataFrame 生成式 AI 方法,從多模態資料生成文字和嵌入項目。
如需使用 Trusted 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
輸入內容生成文字、嵌入和純量值:
ML.GENERATE_TEXT
AI.GENERATE_TABLE
AI.GENERATE
AI.GENERATE_BOOL
AI.GENERATE_DOUBLE
AI.GENERATE_INT
ML.GENERATE_EMBEDDING
除了 ML.GENERATE_EMBEDDING
以外,所有函式都支援以單一值或陣列形式提供 ObjectRefRuntime
值。ML.GENERATE_EMBEDDING
僅接受單一值。
在 Python 中處理多模態資料
您可以使用 BigQuery DataFrames 類別和方法,在 Python 中分析多模態資料。
多模態 DataFrame
使用下列 Session
方法,建立整合結構化和非結構化資料的多模態 DataFrame:
from_glob_path
方法:從 Cloud Storage bucket 建立多模態 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。