本页面介绍如何使用 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()
:使用 Google Cloud Secret Manager 中的 Secret(API 密钥存储在其中)
此外,您还可以将以下函数与已注册的模型提供方搭配使用:
mysql.ml_embedding()
:生成文本嵌入mysql.ml_predict_row()
:在您调用支持 JSON 输入和输出格式的通用模型时生成预测
必需的数据库用户权限
如需注册和调用远程 AI 模型,您必须以 MySQL 数据库用户的身份登录,并且该用户已被授予 mysql.*
权限的 SELECT
和 EXECUTE
权限。
默认情况下,任何具有 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 中作为 Secret 存储的 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 标头生成函数会以 JSON 键值对的形式生成输出,这些键值对会用作 HTTP 标头。预测函数的签名定义了标头生成函数的签名。
以下示例展示了 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;
如需详细了解如何创建标头生成函数,请参阅标头生成函数示例。
限制
当您运行任何模型注册或密钥管理函数时,系统会隐式提交会话中的任何未完成的事务。预测函数不会隐式提交事务。
如果您使用
mysqldump
导出或导入数据库,则不会导出模型端点目录。包含转换函数的用户数据库的名称中不能包含句点字符 (
'.'
)。例如,不支持名为my.sql
的数据库。模型端点管理仅适用于 Cloud SQL for MySQL 8.0.36 及更高版本。
后续步骤
- 为模型提供商设置身份验证。
- 使用模型端点管理注册模型端点。
- 查看模型端点管理参考文档。