コンテンツに移動
データ分析

AI.GENERATE_TABLE の概要: BigQuery で生成 AI モデルから構造化データを作成

2025年6月13日
Xi Cheng

Software Engineer

Tianxiang Gao

Software Engineer

Try Gemini Enterprise Business Edition today

The front door to AI in the workplace

Try now

※この投稿は米国時間 2025 年 5 月 22 日に、Google Cloud blog に投稿されたものの抄訳です。

ソーシャル メディアやスマートフォンなど、さまざまな情報源から生成されるデジタル コンテンツの爆発的な増加により、画像、動画、ドキュメントといった非構造化データが膨大に蓄積されています。こうしたデータを分析するために、BigQuery は Google Cloud の高性能な AI プラットフォームである Vertex AI と連携しており、Gemini 2.5 Pro や Flash といった高度な AI モデルを活用して、非構造化データから有意義な分析情報を得ることができます。

Google の高度な AI モデルは、テキストや画像はもちろん、音声や動画に至るまで、幅広い形式のデータを分析できます。名前や日付、キーワードなどの重要な情報を抽出し、生データを構造化された分析情報へと変換したうえで、既存のツールと統合できます。さらに、制約付きデコードなどの新しい手法により、AI モデルで JSON 形式の構造化データを生成できるため、ワークフローとの互換性も確保できます。

こうしたプロセスをさらに効率化するために、BigQuery に新たな機能 AI.GENERATE_TABLE() を追加しました。この関数は、既存の ML.GENERATE_TEXT() の機能を拡張したもので、指定したプロンプトとテーブル スキーマに基づき、BigQuery 内で非構造化データから得られた分析情報を自動的に構造化テーブルへ変換することができます。この効率化されたプロセスにより、抽出された情報を既存のデータ分析ツールで簡単に分析できます。

画像から構造化データを抽出する

この新機能の仕組みを、3 つの画像を使用して詳しく見ていきましょう。1 つ目の画像は、シアトルのスカイラインの写真です。ここには、シアトルを象徴する建物、スペース ニードルが写っています。2 つ目は、ニューヨークの街並みを捉えた写真です。そして 3 つ目は、都市景観とは無関係の、クッキーと花が写った写真です。

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_Weuc1kJ.max-2000x2000.png
https://storage.googleapis.com/gweb-cloudblog-publish/images/2_PTmULvF.max-2000x2000.png
https://storage.googleapis.com/gweb-cloudblog-publish/images/3_AgqHZGf.max-1300x1300.png

これらの画像を BigQuery の生成 AI 関数で使用するには、まず BigQuery からアクセスできるように設定する必要があります。そのためには、画像が保存されている Google Cloud Storage バケットに接続する「image_dataset」というテーブルを作成します。

読み込んでいます...

画像データの準備が整ったところで、次は高性能な Gemini 2.5 Flash モデルに接続します。そのために、BigQuery 内に「リモートモデル」を作成します。これは、Gemini 2.5 Flash のような高度な AI モデルとの橋渡しとなる構成要素です。

読み込んでいます...

次に、AI.GENERATE_TABLE() 関数を使用して画像を分析します。この関数を使用するには、作成したリモートモデル(Gemini 2.5 Flash に接続)と、対象の画像を含むテーブルの 2 つを指定する必要があります。

モデルに「Recognize the city from the picture and output its name, belonging state, brief history, and tourist attractions.Please output nothing if the image is not a city.」(画像から都市を認識し、その名前、属している州、大まかな歴史、観光名所を出力してください。画像が都市でない場合は何も出力しないでください。)と指示します。結果を整理し、扱いやすくするために、以下のフィールドを使用して構造化された出力形式を指定します。

  • city_name(都市名、文字列)

  • state(州、文字列)

  • brief_history(大まかな歴史、文字列)

  • attractions(観光名所、文字列の配列)

この形式はスキーマと呼ばれ、出力の整合性を保ちつつ、他の BigQuery ツールとの互換性も確保します。このスキーマを定義する構文は、BigQuery の CREATE TABLE コマンドと同じであることがわかります。

読み込んでいます...

AI.GENERATE_TABLE() 関数を実行すると、5 つの列からなるテーブルが生成されます。このうち 4 つの列(city_name、state、brief_history、attractions)はあらかじめ定義したスキーマと一致していますが、5 つ目の列には入力テーブルからの画像 URI が格納されます。

見てのとおり、モデルは最初の 2 つの画像に写っている都市を正しく識別しており、それぞれの都市名と属する州名を出力しています。さらに、モデル内部の知識に基づいて、各都市の大まかな歴史と観光名所のリストも生成しました。これは、画像から分析情報などの情報を直接抽出できる大規模言語モデルの高い能力を示しています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/4_5556Est.max-1000x1000.png

医療用音声文字変換データから構造化データを抽出する

次に、AI.GENERATE_TABLE を使用して、BigQuery のマネージド テーブルに格納されている非構造化データから情報を抽出する例を見てみましょう。ここでは、さまざまな診療科の医療用音声文字変換データのサンプルを含む Kaggle Medical Transcriptions データセットを使用します。

音声文字変換データには、患者の年齢、体重、血圧、病状など、さまざまな情報が詳細に記録されています。こうした長文かつ冗長なデータを手作業で処理し、整理するのは非常に困難で時間もかかります。しかし、今では、LLM と AI.GENERATE_TABLE を活用することで、こうした作業を大幅に効率化することができます。

たとえば、以下の情報を抽出するとします。

  • age(年齢、int64)

  • blood_pressure(血圧、struct<high int64, low int64)

  • weight(体重、float64)

  • conditions(病状、文字列の配列)

  • diagnosis(診断、文字列の配列)

  • medications(投薬、文字列の配列)

次のような SQL クエリを作成できます。

読み込んでいます...

モデルが医療用音声文字変換データから情報を正常に抽出しており、その結果が AI.GENERATE_TABLE で指定したスキーマに従って整理されていることがわかります。

https://storage.googleapis.com/gweb-cloudblog-publish/images/textoutput.max-2200x2200.png

AI.GENERATE_TABLE() 関数を活用して、非構造化データを変換し、BigQuery テーブルとして整備することで、分析の効率化や既存ワークフローとのスムーズな統合が実現できます。完全な構文について詳しくは、ドキュメントをご覧ください。これらの新機能に関するご意見や、追加機能のご要望がありましたら、bqml-feedback@google.com までお寄せください。

-エンジニアリング マネージャー Xi Cheng
-ソフトウェア エンジニア Tianxiang Gao

 

投稿先