BigQuery でマルチモーダル データを分析する

このドキュメントでは、マルチモーダル データを分析するために使用できる BigQuery 機能について説明します。一部の機能はGoogle Cloud コンソールと bq コマンドライン ツールで使用できますが、他の機能は Python で BigQuery DataFrames を使用して使用できます。これらの機能の多くを組み合わせて使用することで、マルチモーダル データの分析と変換ワークフローを簡単に行えます。

BigQuery のマルチモーダル データ機能を使用すると、次のタスクを実行できます。

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_EMBEDDING を除くすべての関数では、ObjectRefRuntime 値を単一の値として指定することも、配列で指定することもできます。ML.GENERATE_EMBEDDING は単一の値��みを受け入れます。

Python でマルチモーダル データを操作する

Python でマルチモーダル データを分析するには、BigQuery DataFrames のクラスとメソッドを使用します。

マルチモーダル DataFrame

次の Session メソッドを使用して、構造化データと非構造化データを統合するマルチモーダル DataFrame を作成します。

オブジェクト変換メソッド

次の Series.BlobAccessor メソッドを使用してオブジェクトデータを変換します。

生成 AI の方法

マルチモーダル データに対して生成 AI タスクを実行するには、次のメソッドを使用します。

オブジェクト テーブル

マルチモーダル データ プレビューの許可リストに登録されている場合、作成する新しいオブジェクト テーブルには、特定のオブジェクトの ObjectRef 値を含む ref 列があります。オブジェクト テーブルの作成に使用した接続を使用して、ref 列に authorizer 値が入力されます。ref 列を使用すると、標準テーブルの ObjectRef 値を入力して更新できます。

制限事項

BigQuery マルチモーダル データ特徴には、次の制限が適用されます。

  • ObjectRef 値を参照するクエリは、ObjectRef 値を含むテーブルと同じプロジェクトで実行する必要があります。
  • ObjectRef 値または ObjectRefRuntime 値を参照するクエリを実行しているプロジェクトとリージョンで、20 を超える接続を設定することはできません。たとえば、myprojectasia-east1 でクエリを実行している場合、myprojectasia-east1 で 20 を超える接続を行うことはできません。

料金

マルチモーダル データを使用する場合は、次の費用が発生します。

  • 標準テーブルにオブジェクト メタデータを ObjectRef 値として保存すると、テーブルの BigQuery ストレージ費用が増加します。
  • ObjectRef 値で実行されるクエリには、BigQuery のコンピューティング費用が発生します。
  • オブジェクト変換から作成する新しいオブジェクトには、Cloud Storage の費用が発生します。
  • BigQuery で作成して保持する新しいデータには、BigQuery ストレージ費用が発生します。
  • 生成 AI 関数を使用すると、Vertex AI の費用が発生します。
  • BigQuery Python UDF の使用、および BigQuery DataFrames でのマルチモーダル DataFrame とオブジェクト変換メソッドの使用には、Python UDF の費用が発生します。

詳細については、次の料金ページをご覧ください。

次のステップ