BigQuery でマルチモーダル データを分析する
このドキュメントでは、マルチモーダル データを分析するために使用できる BigQuery 機能について説明します。一部の機能はGoogle Cloud コンソールと bq コマンドライン ツールで使用できますが、他の機能は Python で BigQuery DataFrames を使用して使用できます。これらの機能の多くを組み合わせて使用することで、マルチモーダル データの分析と変換ワークフローを簡単に行えます。
BigQuery のマルチモーダル データ機能を使用すると、次のタスクを実行できます。
ObjectRef
値を使用して、非構造化データを標準テーブルに統合します。ObjectRefRuntime
値を使用して、分析ワークフローと変換ワークフローで非構造化データを操作します。- Gemini モデルで BigQuery ML の生成 AI 関数を使用して、マルチモーダル データからテキスト、エンベディング、スカラー値を生成します。
- BigQuery DataFrames でマルチモーダル DataFrame を作成する。
- BigQuery DataFrames の
Series.BlobAccessor
メソッドを使用して、画像を変換し、PDF ファイルをチャンク化します。 - BigQuery DataFrames の生成 AI メソッドを使用して、マルチモーダル データからテキストとエンベディングを生成します。
Google Cloud コンソールを使用するチュートリアルについては、SQL を使用してマルチモーダル データを分析するをご覧ください。Python で BigQuery DataFrames を使用するチュートリアルについては、BigQuery DataFrames を使用して Python でマルチモーダル データを分析するをご覧ください。
利点
BigQuery のマルチモーダル データ機能には、次の利点があります。
- コンポジット化:
ObjectRef
値を使用して、構造化データと非構造化データを同じ標準テーブル行に保存して管理できます。たとえば、商品の画像を、商品の他の情報と同じ行に保存できます。標準の SQL 関数を使用して、ObjectRef
値を含む列を作成および更新できます。また、オブジェク���に対する変換アクションの出力としてObjectRef
値を作成することもできます。 - 生成 AI プロンプトでオブジェクト データを使用する: 生成 AI 関数の入力として
ObjectRefRuntime
値を使用します。たとえば、同じテーブルの画像データとテキストデータのエンベディングを生成できます。テキストとスカラー値の生成では、モデルに送信するプロンプト内の複数のオブジェクトを参照することもできます。たとえば、動物の 2 つの画像を比較し、同じ種類の動物を示しているかどうかを示すテキストを返すプロンプトを作成できます。 - チャンクの順序を保持する: オブジェクトをチャンク化し、チャンクを
ObjectRef
値の配列として標準テーブル列に保存して、順序を保持できます。たとえば、動画から画像を解析し、これらの画像をObjectRef
値の配列として保存すると、画像は元の動画に表示される順序と同じ順序で保持されます。
ObjectRef
個の値
ObjectRef
値は、ObjectRef
形式を使用する STRUCT
値です。この形式を使用する STRUCT
列または ARRAY<STRUCT>
列を作成すると、Cloud Storage オブジェクトのメタデータと関連する認可者を BigQuery 標準テーブルに保存できます。authorizer 値は、BigQuery が Cloud Storage オブジェクトへのアクセスに使用する Cloud リソース接続を識別します。
非構造化データを標準テーブルに統合する必要がある場合は、ObjectRef
値を使用します。たとえば、products テーブルで、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
値を生成します。ObjectRef
値は、Cloud Storage の基盤となるオブジェクトが変更されない限り、更新する必要はありません。
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 でマルチモーダル データを操作する
Python でマルチモーダル データを分析するには、BigQuery DataFrames のクラスとメソッドを使用します。
マルチモーダル 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 の詳細を確認する。