このページでは、Cloud SQL でモデル エンドポイント管理を使用して AI モデル エンドポイントを登録し、予測を呼び出す方法について説明します。本番環境で AI モデルを使用するには、ベクトル エンベディングを生成して管理するをご覧ください。
概要
モデル エンドポイント管理を使用すると、モデル エンドポイントの登録、Cloud SQL インスタンスでのモデル エンドポイントのメタデータの管理、SQL クエリでのモデルの操作ができます。このようなモデルを使用することで、ベクトル エンベディングの生成と予測の呼び出しが可能になります。
モデル エンドポイント管理では、次のモデルタイプを登録できます。
- Vertex AI テキスト エンベディング モデル。
- Google Cloud内のネットワークにホストされているカスタム ホスト テキスト エンベディング モデル。
JSON ベースの API を使用した汎用モデル。このようなモデルの例としては以下のものがあります。
- Vertex AI Model Garden の
gemini-flash
モデル - OpenAI モデルの
open_ai
モデル - Google Cloud内のネットワークにホストされているモデル
- Vertex AI Model Garden の
仕組み
モデル エンドポイント管理を使用すると、次の要件を満たすモデル エンドポイントを登録できます。
- モデルの入力と出力は 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_create_model_registration()
: 予測関数またはエンベディング関数で使用されるモデル エンドポイントを登録します。mysql.ml_create_sm_secret_registration()
: API キーが保存されている Google Cloud Secret Manager のシークレットを使用します。
また、登録したモデル プロバイダで次の関数を使用することもできます。
mysql.ml_embedding()
: テキスト エンベディングを生成します。mysql.ml_predict_row()
: JSON の入力形式と出力形式をサポートする汎用モデルを呼び出すときに予測を生成します。
必要なデータベース ユーザー権限
リモート AI モデルを登録して呼び出すには、mysql.*
権限で SELECT
と EXECUTE
が付与されている 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
モデルを使用します。
text_embedding
です。mysql.ml_predict_row()
関数を使用します。モデル固有のリクエスト エンドポイントや HTTP ヘッダーなど、モデル エンドポイントのメタデータを設定できます。generic
です。generic
はデフォルトのモデルタイプであるため、このタイプのモデル エンドポイントを登録する場合、モデルタイプの設定は省略可能です。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 されます。予測関数の場合、トランザクションは暗黙的に commit されません。
mysqldump
を使用してデータベースをエクスポートまたはインポートすると、モデル エンドポイント カタログはエクスポートされません。変換関数を含むユーザー データベースの名前には、ピリオド文字(
'.'
)を使用できません。たとえば、my.sql
という名前のデータベースはサポートされません。モデル エンドポイント管理は、Cloud SQL for MySQL バージョン 8.0.36 以降でのみ使用できます。
次のステップ
- モデル プロバイダの認証を設定する。
- モデル エンドポイント管理でモデル エンドポイントを登録する。
- モデル エンドポイント管理のリファレンスを確認する。