生成 AI の概要
このドキュメントでは、BigQuery がサポートする生成 AI(人工知能)関数について説明します。これらの関数は自然言語入力を受け取り、事前トレーニング済みの Vertex AI モデルと組み込みの BigQuery モデルを使用します。
概要
BigQuery には、次のようなタスクに役立つさまざまな AI 関数が用意されています。
- クリエイティブなコンテンツを生成する。
- テキストや画像などの非構造化データを分析して、感情を検出し、質問に回答する。
- コンテンツで伝えられた主なアイデアや印象を要約する。
- テキストから構造化データを抽出する。
- テキストまたは非構造化データをユーザー定義のカテゴリに分類する。
- エンベディングを生成して、類似したテキスト、画像、動画を検索する。
- 品質、類似性、その他の条件でランク付けするために、入力のレートを設定する。
これらのタスクを完了するために役立つ AI 機能には、次の 2 つの主なカテゴリがあります。
汎用 AI 関数: これらの関数を使用すると、使用するモデル、プロンプト、パラメータの選択を完全に制御し、透明性を確保できます。
推論を実行する(データに関する質問に答えるなど)
AI.GENERATEは最も柔軟な推論関数です。テキストと非構造化データの任意の組み合わせを分析し、カスタム スキーマに一致する構造化データを出力できます。特定のタイプの出力を必要とする場合は、より専門的な以下の推論関数のいずれかを選択します。
AI.GENERATE_BOOLAI.GENERATE_DOUBLEAI.GENERATE_INT
構造化出力を生成する(非構造化テキストから名前と住所を抽出する場合など)
output_schemaを指定した場合のAI.GENERATEAI.GENERATE_TABLE
AI.GENERATEのテーブル値関数バージョンを使用してテキストを生成するAI.GENERATE_TEXT
セマンティック検索とクラスタリング用のエンベディングを生成する
AI.EMBEDAI.GENERATE_EMBEDDINGAI.SIMILARITY
マネージド AI 関数: これらの関数は、構文が簡素化され、費用と品質が最適化されています。BigQuery がモデルを自動的に選択します。
自然言語条件でデータをフィルタする
AI.IF
品質や感情などの入力を評価する
AI.SCORE
入力をユーザー定義のカテゴリに分類する
AI.CLASSIFY
汎用 AI 関数
汎用 AI 関数を使用すると、使用するモデル、プロンプト、パラメータを完全に制御し、透明性を確保できます。出力には、モデルへの呼び出しに関する詳細情報(ステータスや完全なモデル レスポンスなど)が含まれます。これには、安全性評価や引用に関する情報が含まれる場合があります。
構造化データを生成する
構造化データの生成はテキスト生成とよく似ていますが、SQL スキーマを指定してモデルからのレスポンスをフォーマットできます。たとえば、通話の文字起こしから、顧客の名前、電話番号、住所、依頼、見積もりを含むテーブルを生成できます。
構造化データを生成する方法は 2 つあります。
AI.GENERATE関数は Vertex AI エンドポイントを呼び出し、カスタム スキーマでSTRUCT値を生成できます。この関数を試す場合は、
AI.GENERATE関数を呼び出すときに、構造化された出力を使用する方法を参照してください。AI.GENERATE_TABLE関数は、リモートモデルを呼び出すテーブル値関数で、カスタム スキーマのテーブルを生成します。構造化データの作成を試すには、
AI.GENERATE_TABLE関数を使用して構造化データを生成するをご覧ください。
特定の型の値を行ごとに生成する
スカラー生成 AI 関数を Gemini モデルで使用して、BigQuery 標準テーブルのデータを分析できます。データには、ObjectRef 値を含む列のテキストデータと非構造化データの両方が含まれます。テーブルの各行に対して、これらの関数は特定の型を含む出力を生成します。たとえば、家具の画像を分析して design_type 列のテキストを生成すると、家具の SKU に mid-century modern や farmhouse などの説明が関連付けられます。
次の AI 関数を使用できます。
サポートされている Gemini モデルで AI.GENERATE 関数を使用する場合は、Vertex AI プロビジョンド スループットを使用して、リクエストに安定して高スループットを提供できます。詳細については、Vertex AI プロビジョンド スループットを使用するをご覧ください。
TVF を使用してテキストを生成する
生成 AI タスクを実行するには、BigQuery ML のリモートモデルを使用して、Vertex AI にデプロイまたはホストされているモデルを参照するテーブル値関数 GENERATE_TEXT を使用します。次のタイプのリモートモデルを作成できます。
リモートモデルを作成したら、AI.GENERATE_TEXT 関数を使用してそのモデルを操作できます。
Gemini モデルに基づくリモートモデルでは、次のことができます。
AI.GENERATE_TEXT関数を使用して、クエリで指定したプロンプトまたは標準テーブルの列で取得したプロンプトからテキストを生成します。クエリでプロンプトを指定するときに、プロンプトで次のタイプのテーブル列を参照できます。- テキストデータを提供する
STRING。 ObjectRef形式で非構造化データを提供するSTRUCT列。プロンプト内でOBJ.GET_ACCESS_URL関数を使用して、ObjectRef値をObjectRefRuntime値に変換する必要があります。
- テキストデータを提供する
AI.GENERATE_TEXT関数に関数引数として指定されたプロンプトを使用して、オブジェクト テーブルのテキスト、画像、音声、動画、PDF コンテンツを分析します。
他のすべてのタイプのリモートモデルの場合、クエリで指定したプロンプトまたは標準テーブルの列で
AI.GENERATE_TEXT関数を使用できます。
次のトピックを使用して、BigQuery ML でテキスト生成を試すことができます。
- Gemini モデルと
AI.GENERATE_TEXT関数を使用してテキストを生成する。 - Gemma モデルと
AI.GENERATE_TEXT関数を使用してテキストを生成する。 - Gemini モデルを使用して画像を分析する。
- 独自のデータで
AI.GENERATE_TEXT関数を使用してテキストを生成する。 - 独自のデータを使用してモデルをチューニングする。
AI.GENERATE_TEXT 関数で Gemini モデルを使用する際に入力として標準テーブルを使用している場合は、グラウンディングと安全属性を使用できます。グラウンディングにより、Gemini モデルはインターネットから追加情報を取得し、より具体的で事実に基づく回答を生成できます。安全属性を使用すると、Gemini モデルは、指定された属性に基づいてレスポンスをフィルタできます。
一部のモデルでは、必要に応じて教師ありチューニングを構成できます。これにより、独自のデータでモデルをトレーニングして、ユースケースに適したモデルにすることができます。推論はすべて Vertex AI で行われます。 結果は BigQuery に保存されます。
サポートされている Gemini モデルに対して、Vertex AI プロビジョンド スループットを使用することで、リクエストに一貫した高スループットを提供できます。 詳細については、Vertex AI プロビジョンド スループットを使用するをご覧ください。
エンベディングを生成する
エンベディングは、テキストや音声ファイルなど、特定のエンティティを表す高次元の数値ベクトルです。エンベディングを生成すると、データを推論して比較しやすくするように、データのセマンティクスをキャプチャできます。
エンベディング生成の一般的なユースケースは次のとおりです。
- 検索拡張生成(RAG)を使用して、信頼できるソースの追加データを参照し、ユーザーのクエリに対するモデルのレスポンスを拡張する。RAG は、事実の精度とレスポンスの一貫性を高め、モデルのトレーニング データよりも新しいデータにアクセスできるようにします。
- マルチモーダル検索の実行。たとえば、テキスト入力を使用して画像を検索します。
- セマンティック検索を実行して、レコメンデーション、置換、レコードの重複除去に類似したアイテムを見つける。
- クラスタリング用の K 平均法モデルで使用するエンベディングを作成する。
エンベディングを生成してこれらのタスクの実行に使用する方法については、エンベディングとベクトル検索の概要をご覧ください。
マネージド AI 関数
マネージド AI 関数は、分類、順序付け、フィルタリングなどのルーティン タスクを自動化するために構築されています。これらの関数は Gemini を使用します。カスタマイズは必要ありません。BigQuery は、プロンプト エンジニアリングを使用して、特定のタスクに使用する適切なモデルとパラメータを選択し、結果の品質と一貫性を最適化します。各関数は、BOOL、FLOAT64、STRING などのスカラー値を返し、モデルからの追加のステータス情報は含まれません。次のマネージド AI 関数を使用できます。
AI.IF: プロンプトに基づいて、WHERE句やJOIN句などのテキストまたはマルチモーダル データをフィルタします。たとえば、ギフトに最適なアイテムを説明する商品説明でフィルタできます。AI.SCORE: プロンプトに基づいて入力を評価し、品質、類似性、その他の基準で行をランク付けします。この関数をORDER BY句で使用すると、スコアに基づいて上位 K 個の項目を抽出できます。たとえば、製品に対する最も肯定的または否定的なユーザー レビューの上位 10 件を見つけることができます。AI.CLASSIFY: テキストをユーザー定義のカテゴリに分類します。この関数はGROUP BY句で使用して、定義したカテゴリに従って入力をグループ化できます。たとえば、サポート チケットを、請求、配達、製品品質などとの関連性で分類できます。
これらの関数の使用例を示すチュートリアルについては、マネージド AI 関数を使用してセマンティック分析を行うをご覧ください。
マネージド AI 関数と汎用 AI 関数の使用方法を示すノートブック チュートリアルについては、AI 関数を使用したセマンティック分析をご覧ください。
ロケーション
テキスト生成モデルとエンベディング モデルでサポートされているロケーションは、使用するモデルのタイプとバージョンによって異なります。詳細については、ロケーションをご覧ください。
料金
モデルに対してクエリを実行するために使用したコンピューティング リソースに対して課金されます。リモートモデルは Vertex AI モデルを呼び出すため、リモートモデルに対するクエリでも Vertex AI の料金が発生します。
詳細については、BigQuery ML の料金をご覧ください。
費用を追跡する
BigQuery の生成 AI 関数は、Vertex AI にリクエストを送信することで機能します。このリクエストによって費用が発生する場合があります。BigQuery で実行したジョブによる Vertex AI の費用を追跡する手順は次のとおりです。
- Cloud Billing で請求レポートを表示します。
フィルタを使用して結果を絞り込みます。
サービスに [Vertex AI] を選択します。
特定のジョブの料金を確認するには、ラベルでフィルタします。
キーに
bigquery_job_id_prefixを設定し、値にジョブのジョブ ID を設定します。ジョブ ID が 63 文字を超える場合は、最初の 63 文字のみを使用します。ジョブ ID に大文字が含まれている場合は、小文字に変更します。または、後で検索しやすくなるように、ジョブをカスタムラベルに関連付けることもできます。
一部の請求は、Cloud Billing に表示されるまでに最長で 24 時間ほどかかることがあります。
次のステップ
- BigQuery の AI と ML の概要については、BigQuery の AI と ML の概要をご覧ください。
- ML モデルに対する推論の実行について詳しくは、モデル推論の概要をご覧ください。
- 生成 AI モデルでサポートされている SQL ステートメントと関数について詳しくは、生成 AI モデルのエンドツーエンドのユーザー ジャーニーをご覧ください。