自然言語処理関数を選択する
このドキュメントでは、BigQuery ML で使用可能な自然言語処理関数(ML.GENERATE_TEXT
、ML.TRANSLATE
、ML.UNDERSTAND_TEXT
)の比較を行います。
次の画像に示すように、ML.GENERATE_TEXT
は他の 2 つの関数と同じタスクを実行できます。
関数の機能が重複している場合は、このドキュメントの情報を使用して、使用する関数を決定できます。
概略を示すと、これらの関数の違いは次のとおりです。
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.TRANSLATE
と ML.UNDERSTAND_TEXT
は、API の呼び出しが成功するたびに、特定のタスクタイプに対して同じ出力を生成します。また、これらの関数からの出力には、結果に関する追加のメタデータが含まれます。たとえば、ML.TRANSLATE
の出力には入力言語に関する情報が含まれ、ML.UNDERSTAND_TEXT
の出力には感情分析タスクの感情の強度に関する情報が含まれます。このメタデータは Vertex AI モデルで生成できますが、そのためにはプロンプト エンジニアリングに関する多大な労力を要し、同じ粒度を実現できない可能性が高いと考えられます。
料金
料金は次のとおりです。
ML.GENERATE_TEXT
: この関数で使用する Vertex AI モデルの料金については、Vertex AI の料金をご覧ください。サポートされているモデルの教師ありチューニングに対しては、Vertex AI カスタム トレーニングの料金に基づいて、ノード時間あたりの料金で課金されます。ML.TRANSLATE
: この関数で使用する Cloud AI サービスの料金については、Cloud Translation API の料金をご覧ください。ML.UNDERSTAND_TEXT
: この関数で使用する Cloud AI サービスの料金については、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
: 使用されるモデルに応じて、デフォルトのus-central1
リージョンで 100~1,600 QPM の上限。ML.TRANSLATE
: v3 の 6,000 QPM の上限。ML.UNDERSTAND_TEXT
: 600 QPM の上限。
トークンの上限
トークンの上限は次のとおりです。
ML.GENERATE_TEXT
: 使用されるモデルに応じて、8,192~24,576 のトークン上限。ML.TRANSLATE
: トークンの上限はありません。ただし、この関数には 30,000 バイトの上限があります。ML.UNDERSTAND_TEXT
: 100,000 トークンの上限。
対応している言語
サポートされている言語は次のとおりです。
ML.GENERATE_TEXT
: BigQuery ML リモートモデル エンドポイントに選択した Vertex AI モデルに応じて、Gemini または エンベディングと同じ言語をサポートします。PaLM テキストモデルは、エンベディング モデルと同じ言語をサポートしています。ML.TRANSLATE
: Cloud Translation API の言語をサポートします。ML.UNDERSTAND_TEXT
: Cloud Natural Language API の言語をサポートします。
対象リージョン
ご利用対象のリージョンは次のとおりです。
ML.GENERATE_TEXT
: Vertex AI 向けのすべての生成 AI のリージョンで利用できます。ML.TRANSLATE
:EU
とUS
のマルチリージョンで利用できます。ML.UNDERSTAND_TEXT
:EU
とUS
のマルチリージョンで利用できます。