自然言語処理関数を選択する

このドキュメントでは、BigQuery ML で使用可能な自然言語処理関数(ML.GENERATE_TEXTML.TRANSLATEML.UNDERSTAND_TEXT)の比較を行います。

次の画像に示すように、ML.GENERATE_TEXT は他の 2 つの関数と同じタスクを実行できます。

Vertex AI モデルまたは Cloud AI サービスを使用するリモートモデルの一般的なワークフローを示す図。

関数の機能が重複している場合は、このドキュメントの情報を使用して、使用する関数を決定できます。

概略を示すと、これらの関数の違いは次のとおりです。

  • ML.GENERATE_TEXT は、カスタマイズされた自然言語処理(NLP)タスクを低コストで実行する場合に適しています。この機能は、より多くの言語をサポートし、高速なスループット、モデル調整機能を備え、マルチモーダル モデルでも動作します。
  • ML.TRANSLATE は、1 分あたりのクエリの割合が高い翻訳固有の NLP タスクを実行する場合に適しています。
  • ML.UNDERSTAND_TEXT は、Cloud Natural Language API でサポートされている NLP タスクを実行するのに適しています。

サポートされているモデル

サポートされているモデルは次のとおりです。

  • ML.GENERATE_TEXT: Vertex AI Gemini モデルまたは PaLM モデルのサブセットを使用してテキストを生成できます。サポートされているモデルの詳細については、ML.GENERATE_TEXT 構文をご覧ください。
  • ML.TRANSLATE: Cloud Translation API のデフォルト モデルを使用します。
  • ML.UNDERSTAND_TEXT: Cloud Natural Language API のデフォルト モデルを使用します。

サポートされているタスク

サポートされているタスクは次のとおりです。

  • ML.GENERATE_TEXT: 任意の NLP タスクを実行できます。モデルが実行するタスクは、指定したプロンプトに基づきます。たとえば、質問応答タスクを実行するには、CONCAT("What are the key concepts in the following article?: ", article_text) のようなプロンプトを指定します。プロンプトの一部としてコンテキストを提供することもできます。例: CONCAT("context: Only output 'yes' or 'no' to the following question: ", question)
  • ML.TRANSLATE: 実施できるタスクは次のとおりです。

  • ML.UNDERSTAND_TEXT: 実施できるタスクは次のとおりです。

データ コンテキスト

使用する関数を選択する際は、データが単独で分析できるかどうか、または分析をサポートするために追加のコンテキストが必要であるかどうかを検討してください。データに追加のコンテキストが必要な場合は、Vertex AI モデルで ML.GENERATE_TEXT を使用することをおすすめします。これらのモデルでは、送信するプロンプトの一部としてコンテキストを提供できます。入力として追加のコンテキストを提供すると、トークン数とコストが増加することに留意してください。

モデルが他のコンテキストを考慮することなくデータを分析できる場合(例: テキスト文字列を翻訳する際に、対象のテキストが記述された理由を把握することを必要としない場合)は、実行するタスクがサポートされている限り、ML.TRANSLATE または ML.UNDERSTAND_TEXT を使用することをおすすめします。

出力構造

ML.GENERATE_TEXT は、ml_generate_text_llm_result 出力列に一貫して結果を返します。プロンプトを使用して出力構造を定義することもできます。たとえば、カスタムの親フィールドと子フィールドを使用して結果を JSON として返すようにモデルに指示し、この結果を生成する方法の例を指定できます。

ML.TRANSLATEML.UNDERSTAND_TEXT は、API の呼び出しが成功するたびに、特定のタスクタイプに対して同じ出力を生成します。また、これらの関数からの出力には、結果に関する追加のメタデータが含まれます。たとえば、ML.TRANSLATE の出力には入力言語に関する情報が含まれ、ML.UNDERSTAND_TEXT の出力には感情分析タスクの感情の強度に関する情報が含まれます。このメタデータは Vertex AI モデルで生成できますが、そのためにはプロンプト エンジニアリングに関する多大な労力を要し、同じ粒度を実現できない可能性が高いと考えられます。

料金

料金は次のとおりです。

  • ML.GENERATE_TEXT: Palm2 モデルの場合は 1,000 文字あたり $0.00025、Gemini 1.0 モデルの場合は 1,000 文字あたり $0.000375 です。サポートされているモデルの教師ありチューニングに対しては、Vertex AI カスタム トレーニングの料金に基づいて、ノード時間あたりの料金で課金されます。詳細については、Vertex AI の料金をご覧ください。
  • ML.TRANSLATE: $0.02 / 1,000 文字。詳細については、Cloud Translation API の料金をご覧ください。
  • ML.UNDERSTAND_TEXT: タスクの種類と使用状況に応じて、開始段階で 1,000 文字あたり $0.001 の料金が発生します。詳細については、Cloud Natural Language API の料金をご覧ください。

モデルのトレーニング

カスタム トレーニングのサポートは次のとおりです。

  • ML.GENERATE_TEXT: 一部のモデルで教師ありチューニングがサポートされています。
  • ML.TRANSLATE: カスタム トレーニングはサポートされていません。
  • ML.UNDERSTAND_TEXT: カスタム トレーニングはサポートされていません。

マルチモダリティ

マルチモダリティのサポートは次のとおりです。

  • ML.GENERATE_TEXT: テキストとテキスト + 画像の入力をサポートします。
  • ML.TRANSLATE: テキスト入力をサポートします。
  • ML.UNDERSTAND_TEXT: テキスト入力をサポートします。

1 分あたりのクエリ数(QPM)の上限

QPM の上限は次のとおりです。

トークンの上限

トークンの上限は次のとおりです。

対応している言語

サポートされている言語は次のとおりです。

  • ML.GENERATE_TEXT: Vertex AI の言語向けの生成 AI をサポートします。
  • ML.TRANSLATE: Cloud Translation API の言語をサポートします。
  • ML.UNDERSTAND_TEXT: Cloud Natural Language API の言語をサポートします。

対象リージョン

ご利用対象のリージョンは次のとおりです。

  • ML.GENERATE_TEXT: Vertex AI 向けのすべての生成 AI のリージョンで利用できます。
  • ML.TRANSLATE: EUUSマルチリージョンで利用できます。
  • ML.UNDERSTAND_TEXT: EUUS のマルチリージョンで利用できます。