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

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

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

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_EMBEDDING 以外のすべての関数では、ObjectRefRuntime 値を単一の値または配列で指定できます。ML.GENERATE_EMBEDDING は単一の値のみを受け入れます。

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

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

マルチモーダル 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 の費用が発生します。

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

次のステップ