Cloud SQL でのリモート AI モデルの登録と呼び出しの概要

このページでは、Cloud SQL で AI モデル エンドポイントを登録し、モデル エンドポイント管理を使用して予測を呼び出す方法について説明します。本番環境で AI モデルを使用するには、ベクトル エンベディングを生成して管理するをご覧ください。

概要

モデル エンドポイント管理を使用すると、モデル エンドポイントを登録して、Cloud SQL インスタンスでモデル エンドポイントのメタデータを管理し、SQL クエリでモデルを操作できます。これらのモデルを使用することで、ベクトル エンベディングを生成したり、予測を呼び出したりできます。

モデル エンドポイント管理では、次のモデルタイプを登録できます。

  • Vertex AI テキスト エンベディング モデル。
  • Google Cloud内のネットワークにホストされているカスタム ホスト テキスト エンベディング モデル。
  • JSON ベースの API を使用した汎用モデル。このようなモデルの例を以下に示します。

    • Vertex AI Model Garden の gemini-flash モデル
    • OpenAI モデルの open_ai モデル
    • Google Cloud内のネットワークにホストされているモデル

仕組み

モデル エンドポイント管理を使用すると、次の要件を満たすモデル エンドポイントを登録できます。

  • モデルの入力と出力は JSON 形式をサポートしています。
  • モデルを呼び出すのに REST プロトコルを使用できます。

モデル エンドポイント管理にモデル エンドポイントを登録すると、モデル エンドポイント管理は、モデルへの参照として一意のモデル ID を使用して各エンドポイントを登録します。このモデル ID を使用すると、次のようにモデルをクエリできます。

  • エンベディングを生成して、テキスト プロンプトを数値ベクトルに変換します。インスタンスでベクトル エンベディングのサポートを有効にすると、生成されたエンベディングをベクトルデータとして保存できます。詳細については、インスタンスでベクトル エンベディングを有効または無効にするをご覧ください。

  • 予測を呼び出し、トランザクション内で SQL を使用してモデルを呼び出します。

Cloud SQL インスタンスでリモート AI モデルを登録して呼び出すには、インスタンスにメンテナンス バージョン MYSQL_VERSION.R20250531.01_14 以降がインストールされている必要があります。インスタンスで MYSQL_VERSION.R20250531.01_14 より前のメンテナンス バージョンが実行されている場合は、Cloud SQL と Vertex AI の統合で説明されている次の関数のみを使用できます。

インスタンスをメンテナンス バージョン MYSQL_VERSION.R20250531.01_14 以降にアップグレードするには、セルフサービス メンテナンスをご覧ください。インスタンスをアップグレードすると、次の関数を使用できます。

また、登録したモデル プロバイダで次の関数を使用することもできます。

  • mysql.ml_embedding(): テキスト エンベディングを生成します。
  • mysql.ml_predict_row(): JSON の入力形式と出力形式をサポートする汎用モデルを呼び出すときに予測を生成します。

必要なデータベース ユーザー権限

リモート AI モデルを登録して呼び出すには、mysql.* 権限で SELECTEXECUTE が付与されている MySQL データベース ユーザーとしてログインする必要があります。

デフォルトでは、cloudsqlsuperuser ロールを持つユーザーはこれらの権限を持ち、ユーザーを作成して必要な権限を付与できます。

Cloud SQL の cloudsqlsuperuser ロールの詳細については、MySQL 8.0 のユーザー権限MySQL 8.4 のユーザー権限をご覧ください。

主なコンセプト

モデル エンドポイント管理を使い始める前に、モデルに接続して使用するために必要なコンセプトを理解しておく必要があります。

モデル プロバイダ

モデル プロバイダは、サポートされているモデルのホスティング プロバイダです。次の表に、使用するモデル プロバイダごとに設定が必要なモデル プロバイダの値を示します。

モデル プロバイダ 関数での設定…
Vertex AI(Gemini を含む) google
Anthropic anthropic
Hugging Face hugging_face
OpenAI open_ai
Vertex AI、
Anthropic、Hugging Face、OpenAI の外部でホストされているその他のモデル
custom

デフォルトのモデル プロバイダは custom です。

モデルタイプ

モデルタイプは、AI モデルのタイプです。モデル エンドポイントを登録するときに、エンドポイントのモデルタイプとして text_embedding または generic を設定できます。

Vertex AI をモデル プロバイダとして使用する場合は、エンドポイントが自動的にサポートされるため、モデル エンドポイントを登録する必要はありません。デフォルトでは、Vertex AI では text-embedding-005 モデルを使用します。

その他のテキスト エンベディング モデル
他のテキスト エンベディング モデルの場合は、モデルがサポートする入力形式と出力形式を処理する変換関数を作成する必要があります。必要に応じて、HTTP ヘッダー生成関数を使用して、モデルに必要なカスタム ヘッダーを生成できます。

これらのモデルのモデルタイプは text_embedding です。

汎用モデル
モデル エンドポイント管理では、テキスト エンベディング モデルを除くすべてのモデルタイプを登録できます。汎用モデルの予測を呼び出すには、mysql.ml_predict_row() 関数を使用します。モデル固有のリクエスト エンドポイントや HTTP ヘッダーなど、モデル エンドポイントのメタデータを設定できます。
汎用モデル エンドポイントを登録するときに変換関数を渡すことはできません。予測を呼び出す前に、関数への入力が JSON 形式であることと、JSON 出力を解析して最終出力を導出していることを確認します。
これらのモデルのモデルタイプは generic です。generic はデフォルトのモデルタイプであるため、このタイプのモデル エンドポイントを登録する場合、モデルタイプの設定は省略可能です。
Vertex AI では、モデル エンドポイント管理に gemini-2.5-flash モデルの事前登録済みサポートが含まれています。

認証方法

Cloud SQL for MySQL インスタンスでベクトル エンベディングのサポートを有効にしてから、モデルにアクセスするためのさまざまな認証方法を指定できます。これらのメソッドの設定は省略可能です。モデルにアクセスするために認証が必要な場合にのみ必要です。

Vertex AI モデルの場合、認証には Cloud SQL サービス アカウントが使用されます。他のモデルでは、Secret Manager にシークレットとして保存されている API キーまたは署名なしトークンを mysql.ml_create_sm_secret_registration() SQL 関数で使用できます。

次の表に、設定可能な認証方法を示します。

認証方法 関数での設定… モデル プロバイダ
Cloud SQL サービス エージェント auth_type_cloudsql_service_agent_iam Vertex AI プロバイダ
Secret Manager auth_type_secret_manager Vertex AI の外部でホストされているモデル

予測関数

mysql.ml_embedding()
登録されたテキスト エンベディング モデル エンドポイントを呼び出してエンベディングを生成します。Vertex AI のすべてのエンベディング モデルに対する組み込みサポートも含まれます。
組み込みサポートのないテキスト エンベディング モデルの場合、入力パラメータと出力パラメータはモデルに固有であり、関数でモデルを呼び出すには変換する必要があります。予測関数の入力をモデル固有の入力に変換する入力変換関数と、モデル固有の出力を予測関数出力に変換する出力変換関数を作成します。
mysql.ml_predict_row()
登録された汎用モデル エンドポイントを呼び出します(エンドポイントが予測を呼び出す JSON ベースの API をサポートしている場合)。

変換関数

変換関数は、入力をモデルが理解できる形式に変更し、モデルのレスポンスを予測関数が想定する形式に変換します。変換関数は、組み込みサポートなしで text-embedding モデル エンドポイントを登録する場合に使用されます。変換関数の署名は、モデルタイプの予測関数によりも異なります。

generic モデル エンドポイントを登録するときに変換関数を使用できません。

次のコードは、テキスト エンベディング モデルの予測関数の署名を示しています。

// define custom model specific input/output transform functions.
CREATE FUNCTION IF NOT EXISTS input_transform_function(model_id VARCHAR(100), input_text TEXT) RETURNS JSON DETERMINISTIC;

// the returned BLOB should be of type VECTOR
CREATE FUNCTION IF NOT EXISTS output_transform_function(model_id VARCHAR(100), response_json JSON) RETURNS BLOB DETERMINISTIC;

変換関数の作成方法については、変換関数の例をご覧ください。

HTTP ヘッダー生成関数

HTTP ヘッダー生成関数は、HTTP ヘッダーとして使用される JSON Key-Value ペアで出力を生成します。予測関数の署名は、ヘッダー生成関数の署名を定義します。

次の例は、mysql.ml_embedding() 予測関数の署名を示しています。

CREATE FUNCTION IF NOT EXISTS generate_headers(model_id VARCHAR(100), input TEXT) RETURNS JSON DETERMINISTIC;

mysql.ml_predict_row() 予測関数の署名は次のとおりです。

CREATE FUNCTION IF NOT EXISTS generate_headers(model_id VARCHAR(100), input JSON) RETURNS JSON DETERMINISTIC;

ヘッダー生成関数の作成方法については、ヘッダー生成関数の例をご覧ください。

制限事項

  • モデル登録関数またはシークレット管理関数を実行すると、セッション内の未確定のトランザクションが暗黙的にコミットされます。予測関数はトランザクションを暗黙的に commit しません。

  • mysqldump を使用してデータベースをエクスポートまたはインポートすると、モデル エンドポイント カタログはエクスポートされません。

  • 変換関数を含むユーザー データベースの名前には、ピリオド文字('.')を使用できません。たとえば、my.sql という名前のデータベースはサポートされていません。

  • モデル エンドポイント管理は、Cloud SQL for MySQL バージョン 8.0.36 以降でのみ使用できます。

次のステップ