予測を呼び出す

このページでは、public 名前空間と google_ml 名前空間の関数を使用して予測を呼び出す方法について説明します。google_ml_integration 拡張機能には、これらの名前空間の予測関数が含まれています。

public スキーマの ml_predict_row() 関数は、エンドポイントを登録せずに Vertex AI でホストされている任意の汎用モデルで使用できます。google_ml スキーマの google_ml.predict_row() 関数は、モデル エンドポイント管理に登録されている任意のモデルで使用できます。

予測を呼び出すには、次のいずれかのスキーマを選択します。

始める前に

AlloyDB で予測を呼び出すには、次の操作を行います。

オンライン予測を呼び出す

ml_predict_row() SQL 関数を使用して、データに対するオンライン予測を呼び出します。

関数の最初の引数の形式は、使用する ML モデルが Vertex AI Model Garden にあるか、 Google Cloud プロジェクトで実行されているエンドポイントかによって異なります。

Vertex AI Model Garden でモデルを使用する

Vertex AI Model Garden で実行されている ML モデルを使用してオンライン予測を呼び出すには、google_ml.predict_row() SQL 関数に次の構文を使用します。

SELECT ml_predict_row('projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID', '{ CONTENTS }');

次のように置き換えます。

  • PROJECT_ID: Google Cloud プロジェクトの ID

  • REGION_ID: モデルが配置されている Google Cloud リージョンの ID。例: gemini-pro の場合は us-central1

  • MODEL_ID: 使用する ML モデルの ID。例: gemini-pro

  • CONTENTS: JSON 形式の予測呼び出しの入力

ML モデルが AlloyDB クラスタと同じプロジェクトとリージョンに保存されている場合は、この関数の最初の引数を省略できます。

SELECT ml_predict_row('publishers/google/models/MODEL_ID', '{ CONTENTS }');

モデルの JSON レスポンス メッセージについては、生成 AI の基盤モデルのリファレンスをご覧ください。

例については、呼び出しの例をご覧ください。

Vertex AI モデル エンドポイントを使用する

Vertex AI モデル エンドポイントを使用してオンライン予測を呼び出すには、ml_predict_row() SQL 関数に次の構文を使用します。

SELECT ml_predict_row('projects/PROJECT_ID/locations/REGION_ID/endpoints/ENDPOINT_ID', '{ CONTENTS }');

次のように置き換えます。

  • PROJECT_ID: モデルが配置されている Google Cloud プロジェクトの ID

  • REGION_ID: モデルが配置されている Google Cloud リージョンの ID。例: us-central1

  • ENDPOINT_ID: モデル エンドポイントの ID

  • CONTENTS: JSON 形式の予測呼び出しの入力

エンドポイントが AlloyDB クラスタと同じプロジェクトとリージョンにある場合は、この関数の最初の引数を省略できます。

SELECT ml_predict_row('endpoints/ENDPOINT_ID', '{ CONTENTS }');

モデルの JSON レスポンス メッセージについては、PredictResponse をご覧ください。

呼び出しの例

次の例では、Model Garden で利用可能な gemini-pro を使用して、ml_predict_row() にリテラル引数として指定された短いプロンプトに基づいてテキストを生成します。

SELECT
  json_array_elements(ml_predict_row('publishers/google/models/gemini-1.5-pro:streamGenerateContent',
      '{ "contents": [ { "role": "user", "parts": [ { "text": "For TPCH database schema as mentioned here https://www.tpc.org/TPC_Documents_Current_Versions/pdf/TPC-H_v3.0.1.pdf , generate a SQL query to find all supplier names which are located in the India nation."
} ] } ] }'))-> 'candidates' -> 0 -> 'content' -> 'parts' -> 0 -> 'text';

レスポンスは JSON オブジェクトです。オブジェクトの形式の詳細については、レスポンス本文をご覧ください。

次の例では、前の例を次のように変更しています。

  • この例では、現在のデータベースの messages.message 列の内容を入力として使用します。

  • この例では、関数のパラメータをフォーマットする際に json_build_object() 関数を使用する方法を示しています。


select ml_predict_row('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.5-pro:generateContent', json_build_object('contents', json_build_object('text', message))) from messages;

返された JSON オブジェクトの predictions 配列に、messages テーブルの各行について 1 つのエントリが含まれるようになりました。

レスポンスは JSON オブジェクトであるため、PostgreSQL の矢印演算子を使用して特定のフィールドを取得できます。

select ml_predict_row('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.5-pro:generateContent', json_build_object('contents', json_build_object('text', message)))->'predictions'->0->'content' FROM messages;

ml_predict_row() の引数の例については、Vertex AI API を使用したクイックスタートをご覧ください。

次のステップ