生成 AI の概要
このドキュメントでは、BigQuery がサポートする生成 AI(人工知能)関数について説明します。これらの関数は自然言語入力を受け取り、事前トレーニング済みの Vertex AI モデルと組み込みの BigQuery モデルを使用します。
概要
BigQuery には、次のようなタスクに役立つさまざまな AI 関数が用意されています。
- クリエイティブなコンテンツを生成する。
- テキストや画像などの非構造化データを分析して、感情を検出し、質問に回答する。
- コンテンツで伝えられた主なアイデアや印象を要約する。
- テキストから構造化データを抽出する。
- テキストまたは非構造化データをユーザー定義のカテゴリに分類する。
- エンベディングを生成して、類似したテキスト、画像、動画を検索する。
- 品質、類似性、その他の条件でランク付けするために、入力のレートを設定する。
これらのタスクを完了するために役立つ AI 機能には、次の 2 つの主なカテゴリがあります。
汎用 AI 関数: これらの関数を使用すると、使用するモデル、プロンプト、パラメータの選択を完全に制御し、透明性を確保できます。
推論を実行する(データに関する質問に答えるなど)
AI.GENERATEは最も柔軟な推論関数であり、テキストと非構造化データの任意の組み合わせを分析できます。特定のタイプの出力を必要とする場合は、次のより専門的な推論関数のいずれかを選択します。
AI.GENERATE_BOOLAI.GENERATE_DOUBLEAI.GENERATE_INT
構造化された出力を生成する(非構造化テキストから名前と住所を抽出する場合など)
AI.GENERATE_TABLE
AI.GENERATEのテーブル値関数バージョンを使用してテキストを生成するML.GENERATE_TEXT
セマンティック検索とクラスタリング用のエンベディングを生成する
ML.GENERATE_EMBEDDING
マネージド AI 関数: これらの関数は、構文が簡素化され、費用と品質が最適化されています。BigQuery がモデルを自動的に選択します。
自然言語条件でデータをフィルタする
AI.IF
品質や感情などの入力を評価する
AI.SCORE
入力をユーザー定義のカテゴリに分類する
AI.CLASSIFY
汎用 AI 関数
汎用 AI 関数を使用すると、使用するモデル、プロンプト、パラメータを完全に制御し、透明性を確保できます。出力には、モデルへの呼び出しに関する詳細情報(ステータスや完全なモデル レスポンスなど)が含まれます。これには、安全性評価や引用に関する情報が含まれる場合があります。
構造化データを生成する
構造化データの生成はテキスト生成とよく似ていますが、SQL スキーマを指定してモデルからのレスポンスをフォーマットできます。たとえば、通話の文字起こしから、顧客の名前、電話番号、住所、リクエスト、見積もりを含むテーブルを生成できます。
構造化データを生成するには、一般提供またはプレビューの Gemini モデルのいずれかを使用してリモートモデルを作成します。その後、AI.GENERATE_TABLE 関数を使用して、そのモデルを操作できます。構造化データの作成を試すには、AI.GENERATE_TABLE 関数を使用して構造化データを生成するをご覧ください。
AI.GENERATE_TABLE 関数で Gemini モデルを使用する際に安全属性を指定すると、モデルのレスポンスをフィルタできます。
サポートされている Gemini モデルに対して、Vertex AI プロビジョンド スループットを使用することで、リクエストに一貫した高スループットを提供できます。
特定の型の値を行ごとに生成する
スカラー生成 AI 関数を Gemini モデルで使用して、BigQuery 標準テーブルのデータを分析できます。データには、ObjectRef 値を含む列のテキストデータと非構造化データの両方が含まれます。テーブルの各行に対して、これらの関数は特定の型を含む出力を生成します。たとえば、家具の画像を分析して design_type 列のテキストを生成すると、家具の SKU に mid-century modern や farmhouse などの説明が関連付けられます。
次の AI 関数を使用できます。
AI.GENERATE。STRING値を生成します。AI.GENERATE_BOOLAI.GENERATE_DOUBLEAI.GENERATE_INT
サポートされている Gemini モデルで AI.GENERATE 関数を使用する場合は、Vertex AI プロビジョンド スループットを使用して、リクエストに一貫した高スループットを提供できます。詳細については、Vertex AI プロビジョンド スループットを使用するをご覧ください。
TVF を使用してテキストを生成する
生成 AI タスクを実行するには、BigQuery ML のリモートモデルを使用して、Vertex AI にデプロイまたはホストされているモデルを参照するテーブル値関数 GENERATE_TEXT を使用します。次のタイプのリモートモデルを作成できます。
リモートモデルを作成したら、ML.GENERATE_TEXT 関数を使用してそのモデルを操作できます。
Gemini モデルに基づくリモートモデルでは、次のことができます。
ML.GENERATE_TEXT関数を使用して、クエリで指定したプロンプトまたは標準テーブルの列で取得したプロンプトからテキストを生成します。クエリでプロンプトを指定するときに、プロンプトで次のタイプのテーブル列を参照できます。- テキストデータを提供する
STRING。 ObjectRef形式で非構造化データを提供するSTRUCT列。プロンプト内でOBJ.GET_ACCESS_URL関数を使用して、ObjectRef値をObjectRefRuntime値に変換する必要があります。
- テキストデータを提供する
ML.GENERATE_TEXT関数に関数引数として指定されたプロンプトを使用して、オブジェクト テーブルのテキスト、画像、音声、動画、PDF コンテンツを分析します。
他のすべてのタイプのリモートモデルの場合、クエリで指定したプロンプトまたは標準テーブルの列で
ML.GENERATE_TEXT関数を使用できます。
次のトピックを使用して、BigQuery ML でテキスト生成を試すことができます。
- Gemini モデルと
ML.GENERATE_TEXT関数を使用してテキストを生成する。 - Gemma モデルと
ML.GENERATE_TEXT関数を使用してテキストを生成する。 - Gemini モデルを使用して画像を分析する。
- 独自のデータで
ML.GENERATE_TEXT関数を使用してテキストを生成する。 - 独自のデータを使用してモデルをチューニングする。
ML.GENERATE_TEXT 関数で Gemini モデルを使用する際に入力として標準テーブルを使用している場合は、グラウンディングと安全属性を使用できます。グラウンディングにより、Gemini モデルはインターネットから追加情報を取得し、より具体的で事実に基づく回答を生成できます。安全属性を使用すると、Gemini モデルは、指定された属性に基づいてレスポンスをフィルタできます。
一部のモデルでは、必要に応じて教師ありチューニングを構成できます。これにより、独自のデータでモデルをトレーニングして、ユースケースに適したモデルにすることができます。推論はすべて Vertex AI で行われます。 結果は BigQuery に保存されます。
サポートされている Gemini モデルに対して、Vertex AI プロビジョンド スループットを使用することで、リクエストに一貫した高スループットを提供できます。 詳細については、Vertex AI プロビジョンド スループットを使用するをご覧ください。
エンベディングを生成する
エンベディングは、テキストや音声ファイルなど、特定のエンティティを表す高次元の数値ベクトルです。エンベディングを生成すると、データを推論して比較しやすくするように、データのセマンティクスをキャプチャできます。
エンベディング生成の一般的なユースケースは次のとおりです。
- 検索拡張生成(RAG)を使用して、信頼できるソースの追加データを参照し、ユーザーのクエリに対するモデルのレスポンスを拡張する。RAG は、事実の精度とレスポンスの一貫性を高め、モデルのトレーニング データよりも新しいデータにアクセスできるようにします。
- マルチモーダル検索の実行。たとえば、テキスト入力を使用して画像を検索します。
- セマンティック検索を実行して、レコメンデーション、置換、レコードの重複除去に類似したアイテムを見つける。
- クラスタリング用の K 平均法モデルで使用するエンベディングを作成する。
サポートされているモデル
次のモデルがサポートされています。
テキスト エンベディングを作成するには、次の Vertex AI モデルを使用できます。
gemini-embedding-001(プレビュー)text-embeddingtext-multilingual-embedding- サポートされているオープンモデル(プレビュー)
テキスト、画像、動画を同じセマンティック空間に埋め込むマルチモーダル エンベディングを作成するには、Vertex AI
multimodalembeddingモデルを使用します。構造化された独立同分布確率変数(IID)データのエンベディングを作成するには、BigQuery ML 主成分分析(PCA)モデルまたはオートエンコーダ モデルを使用します。
ユーザーデータまたはアイテムデータのエンベディングを作成するには、BigQuery ML の行列分解モデルを使用します。
よりサイズが小さく軽量のテキスト埋め込みには、NNLM、SWIVEL、BERT などの事前トレーニング済み TensorFlow モデルを使用してみてください。
エンベディング生成モデルを使用する
モデルを作成したら、ML.GENERATE_EMBEDDING 関数を使用して操作できます。サポートされているすべてのタイプのモデルについて、ML.GENERATE_EMBEDDING は標準テーブルで構造化データを処理します。マルチモーダル エンベディング モデルの場合、ML.GENERATE_EMBEDDING は、標準テーブルの ObjectRef 値を含む列、またはオブジェクト テーブルの視覚的なコンテンツにも対応しています。
リモートモデルの場合、すべての推論は Vertex AI で行われます。他のモデルタイプの場合、すべての推論は BigQuery で行われます。結果は BigQuery に保存されます。
次のトピックを使用して、BigQuery ML でエンベディング生成を試すことができます。
ML.GENERATE_EMBEDDING関数を使用してテキスト エンベディングを生成するML.GENERATE_EMBEDDING関数を使用して画像エンベディングを生成するML.GENERATE_EMBEDDING関数を使用して動画エンベディングを生成する- マルチモーダル エンベディングの生成と検索
- セマンティック検索と検索拡張生成を行う
マネージド 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 関数を使用したセマンティック分析をご覧ください。
ロケーション
テキスト生成モデルとエンベディング モデルでサポートされているロケーションは、使用するモデルのタイプとバージョンによって異なります。詳細については、ロケーションをご覧ください。
料金
モデルに対してクエリを実行するために使用したコンピューティング リソースに対して課金されます。リモートモデルは Vertex AI モデルを呼び出すため、リモートモデルに対するクエリでも Vertex AI の料金が発生します。
詳細については、BigQuery ML の料金をご覧ください。
次のステップ
- BigQuery の AI と ML の概要については、BigQuery の AI と ML の概要をご覧ください。
- ML モデルに対する推論の実行について詳しくは、モデル推論の概要をご覧ください。
- 生成 AI モデルでサポートされている SQL ステートメントと関数について詳しくは、生成 AI モデルのエンドツーエンドのユーザー ジャーニーをご覧ください。