在 BigQuery 中分析多模態資料
本文件說明可用於分析多模態資料的 BigQuery 功能。部分功能可在Google Cloud 主控台和 bq 指令列工具中使用,其他功能則可在 Python 中使用 BigQuery DataFrame 使用。您可以同時使用多項功能,讓多模組資料更容易進行分析和轉換。
您可以使用 BigQuery 的多模態資料功能執行下列工作:
- 使用
ObjectRef
值,將非結構化資料整合至標準表格。 - 使用
ObjectRefRuntime
值,在分析和轉換工作流程中處理非結構化資料。 - 使用 BigQuery ML 生成式 AI 函式搭配 Gemini 模型,從多模態資料產生文字、嵌入和標量值。
- 在 BigQuery DataFrames 中建立多模態 DataFrame。
- 使用 BigQuery DataFrame
Series.BlobAccessor
方法轉換圖片和 PDF 檔案區塊。 - 使用 BigQuery DataFrames 生成式 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
:針對ObjectRef
值擷取 Cloud Storage 中繼資料,該值部分填入uri
和authorizer
值。
詳情請參閱「在資料表結構定義中指定 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 值區建立多模態 DataFrame。read_gbq_object_table
方法:從物件資料表建立多模態 DataFrame。
物件轉換方法
使用下列 Series.BlobAccessor
方法轉換物件資料:
pdf_chunk
方法:從多模態 DataFrame 中分割 PDF 物件。以下是從多模態資料框架轉換圖片物件的方法:
生成式 AI 方法
請使用下列方法,在多模態資料上執行生成式 AI 工作:
GeminiTextGenerator
類別的predict
方法:根據多模態資料產生文字。MultimodalEmbeddingGenerator
類別的predict
方法:根據多模態資料產生嵌入項目。
物件資料表
如果您是多模態資料預覽的許可清單成員,則您建立的任何新物件資料表都會有一個 ref
資料欄,其中包含指定物件的 ObjectRef
值。用於建立物件資料表的連線,會用來在 ref
欄中填入 authorizer
值。您可以使用 ref
資料欄,在標準資料表中填入及更新 ObjectRef
值。
限制
以下限制適用於 BigQuery 多模態資料地圖:
- 您必須執行任何查詢,該查詢會在包含
ObjectRef
值的資料表中參照ObjectRef
值。 - 在執行參照
ObjectRef
或ObjectRefRuntime
值的查詢時,專案和地區中的連線不得超過 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 費用。
如需詳細資訊,請參閱下列定價頁面:
後續步驟
- 在資料表結構定義中指定
ObjectRef
欄。 - 使用 SQL 分析多模態資料。
- 使用 BigQuery DataFrames 在 Python 中分析多模態資料。
- 進一步瞭解 BigQuery ML 中的生成式 AI。
- 進一步瞭解 BigQuery DataFrames。