BigQuery でマルチモーダル データを分析する
このドキュメントでは、マルチモーダル データの分析に使用できる BigQuery の機能について説明します。一部の機能はTrusted Cloud コンソールと bq コマンドライン ツールで使用できます。その他の機能は、Python で BigQuery DataFrames を使用して利用できます。これらの機能の多くを組み合わせて使用すると、マルチモーダル データの分析と変換のワークフローを簡単に実現できます。
BigQuery のマルチモーダル データ機能を使用すると、次のタスクを実行できます。
ObjectRef
値を使用して、非構造化データを標準テーブルに統合します。ObjectRefRuntime
値を使用して、分析と変換のワークフローで非構造化データを操作します。- Gemini モデルで BigQuery ML の生成 AI 関数を使用して、マルチモーダル データからテキスト、エンベディング、スカラー値を生成します。
- BigQuery DataFrames でマルチモーダル DataFrame を作成します。
- BigQuery DataFrames
Series.BlobAccessor
メソッドを使用して、画像を変換し、PDF ファイルをチャンク化します。 - BigQuery DataFrames の生成 AI メソッドを使用して、マルチモーダル データからテキストとエンベディングを生成します。
Trusted Cloud コンソールを使用するチュートリアルについては、SQL を使用してマルチモーダル データを分析するをご覧ください。Python で BigQuery DataFrames を使用するステップバイステップのチュートリアルについては、BigQuery DataFrames を使用して Python でマルチモーダル データを分析するをご覧ください。
利点
BigQuery のマルチモーダル データ機能には、次のような利点があります。
- 構成可能性:
ObjectRef
値を使用して、構造化データと非構造化データを同じ標準テーブル行に保存して管理できます。たとえば、商品の画像を他の商品情報と同じ行に保存できます。標準 SQL 関数を使用して、ObjectRef
値を含む列を作成して更新できます。また、オブジェクトに対する変換アクションの出力としてObjectRef
値を作成することもできます。 - 生成 AI プロンプトでオブジェクト データを使用する:
ObjectRefRuntime
値を生成 AI 関数の入力として使用します。たとえば、同じテーブルの画像データとテキストデータでエンベディングを生成できます。テキストとスカラー値の生成では、モデルに送信するプロンプト内の複数のオブジェクトを参照することもできます。たとえば、2 匹の動物の画像を比較し、同じ種類の動物が写っているかどうかを示すテキストを返すようにモデルに指示するプロンプトを作成できます。 - チャンクの順序の永続化: オブジェクトをチャンクに分割し、チャンクを標準テーブルの列に
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 オブジェクト メタデータ、関連する認可ツール、アクセス URL が含まれています。アクセス URL を使用して、Cloud Storage のオブジェクトを読み取りまたは変更できます。
ObjectRefRuntime
値を使用して、分析と変換のワークフローでオブジェクト データを操作します。ObjectRefRuntime
値のアクセス URL は、最長 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 オブジェクトをチャンクします。マルチモーダル DataFrame から画像オブジェクトを変換する次のメソッド。
生成 AI の方法
マルチモーダル データで生成 AI タスクを実行するには、次のメソッドを使用します。
GeminiTextGenerator
クラスのpredict
メソッド: マルチモーダル データに基づいてテキストを生成します。MultimodalEmbeddingGenerator
クラスのpredict
メソッド: マルチモーダル データに基づいてエンベディングを生成します。
オブジェクト テーブル
マルチモーダル データ プレビューの許可リストに登録されている場合、作成する新しいオブジェクト テーブルには、指定されたオブジェクトの ObjectRef
値を含む ref
列があります。オブジェクト テーブルの作成に使用される接続は、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、BigQuery DataFrames のマルチモーダル DataFrame とオブジェクト変換メソッドを使用すると、Python UDF の費用が発生します。
詳細については、次の料金ページをご覧ください。
次のステップ
- テーブル スキーマで
ObjectRef
列を指定します。 - SQL を使用してマルチモーダル データを分析する。
- BigQuery DataFrames を使用して Python でマルチモーダル データを分析する。
- BigQuery ML の生成 AI の詳細を確認する。
- BigQuery DataFrames の詳細を確認する。