En esta página se describe cómo invocar predicciones o generar inserciones mediante un modelo y, a continuación, registrar el endpoint del modelo con la gestión de endpoints de modelos.
Para obtener más información sobre la función
google_ml.create_model()
, consulta la referencia de gestión de endpoints de modelos.
Antes de empezar
- Si tu endpoint de modelo requiere autenticación, habilita la extensión
google_ml_integration
.
- En función del proveedor del modelo, configura la autenticación.
- Asegúrate de usar el nombre de usuario predeterminado
postgres
para acceder a tu base de datos.
Habilitar la extensión
Define la marca de la base de datos
google_ml_integration.enable_model_support
comoon
en tu instancia. Para obtener más información sobre cómo definir marcas de bases de datos, consulta Configurar marcas de bases de datos.Conéctate a tu instancia principal mediante un
psql
cliente o Cloud SQL Studio.Ejecuta el siguiente comando para asegurarte de que la extensión
google_ml_integration
se ha actualizado a la versión 1.4.2:ALTER EXTENSION google_ml_integration UPDATE TO '1.4.2'
Añade la extensión
google_ml_integration
versión 1.4.2 mediantepsql
:CREATE EXTENSION google_ml_integration VERSION '1.4.2';
Opcional: Concede permiso a un usuario de PostgreSQL que no sea superadministrador para gestionar los metadatos del modelo:
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA google_ml TO NON_SUPER_USER;
Sustituye
NON_SUPER_USER
por el nombre de usuario de PostgreSQL que no sea superusuario.
Configurar la autenticación
En las siguientes secciones se muestra cómo configurar la autenticación antes de añadir un endpoint de modelo de Vertex AI o endpoints de modelo alojados en Google Cloud.
Configurar la autenticación de Vertex AI
Para usar los endpoints del modelo de Google Vertex AI, debes añadir permisos de Vertex AI a la cuenta de servicio de Cloud SQL basada en IAM que uses para conectarte a la base de datos. Para obtener más información sobre la integración con Vertex AI, consulta Integrar Cloud SQL con Vertex AI.
Configurar la autenticación para modelos alojados de forma personalizada
En esta sección se explica cómo configurar la autenticación si usas Secret Manager. En el caso de todos los modelos, excepto los endpoints de modelos de Vertex AI, puedes almacenar tus claves de API o tokens de portador en Secret Manager.
Si el endpoint de tu modelo no gestiona la autenticación a través de Secret Manager, esta sección es opcional. Por ejemplo, si el endpoint de tu modelo usa encabezados HTTP para transferir información de autenticación o no usa autenticación, no completes los pasos de esta sección.
Para crear y usar una clave de API o un token de portador, sigue estos pasos:
Crea un secreto en Secret Manager. Para obtener más información, consulta Crear un secreto y acceder a una versión de un secreto.
El nombre y la ruta del secreto se usan en la función SQL
google_ml.create_sm_secret()
.Concede permisos a la instancia de Cloud SQL para acceder al secreto.
gcloud secrets add-iam-policy-binding SECRET_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/secretmanager.secretAccessor"
Haz los cambios siguientes:
SECRET_ID
: el ID del secreto en Secret Manager.SERVICE_ACCOUNT_EMAIL
: la dirección de correo de la cuenta de servicio de Cloud SQL basada en gestión de identidades y accesos. Para encontrar esta dirección de correo, usa el comandogcloud sql instances describe INSTANCE_NAME
y sustituye INSTANCE_NAME por el nombre de la instancia. El valor que aparece junto al parámetroserviceAccountEmailAddress
es la dirección de correo electrónico.
Modelos de inserción de texto con asistencia integrada
En esta sección se muestra cómo registrar endpoints de modelos para gestionar los endpoints de modelos.
Modelos de inserciones de Vertex AI
La gestión de endpoints de modelos ofrece compatibilidad integrada con todas las versiones de los modelos text-embedding-gecko
, text-embedding
y gemini-embedding
de Vertex AI. Usa el nombre completo para definir la versión del modelo como textembedding-gecko@001
o textembedding-gecko@002
.
Como los IDs de endpoint de modelos de inserción de Vertex AI se admiten de forma predeterminada con la gestión de endpoints de modelos, puedes usar cualquiera de ellos directamente como ID de modelo. En estos modelos, la extensión configura automáticamente las funciones de transformación predeterminadas.
Asegúrate de que tanto la instancia de Cloud SQL como el modelo de Vertex AI que estás consultando se encuentren en la misma región.
Para registrar el endpoint del modelo textembedding-gecko@002
, llama a la función create_model
:
CALL
google_ml.create_model(
model_id => 'textembedding-gecko@002',
model_provider => 'google',
model_qualified_name => 'textembedding-gecko@002',
model_type => 'text_embedding',
model_auth_type => 'cloudsql_service_agent_iam');
Modelos de inserción de texto alojados de forma personalizada
En esta sección se muestra cómo registrar endpoints de modelos personalizados alojados en redes de Google Cloud.
Para añadir endpoints de modelos de inserción de texto alojados de forma personalizada, debes crear funciones de transformación y, opcionalmente, encabezados HTTP personalizados. Por otro lado, para añadir endpoints de modelos genéricos alojados de forma personalizada, se pueden generar encabezados HTTP personalizados y definir la URL de solicitud del modelo.
En el siguiente ejemplo se añade el endpoint del modelo de inserción de texto custom-embedding-model
alojado por Cymbal, que se aloja en Google Cloud. Las funciones de transformación cymbal_text_input_transform
y cymbal_text_output_transform
se usan para transformar el formato de entrada y salida del modelo en el formato de entrada y salida de la función de predicción.
Para registrar endpoints de modelos de inserción de texto alojados de forma personalizada, sigue estos pasos:
Llama al secreto almacenado en Secret Manager:
CALL google_ml.create_sm_secret( secret_id => 'SECRET_ID', secret_path => 'projects/project-id/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
Haz los cambios siguientes:
SECRET_ID
: el ID secreto que has definido y que se usa posteriormente al registrar un endpoint de modelo. Por ejemplo,key1
.SECRET_MANAGER_SECRET_ID
: el ID de secreto definido en Secret Manager al crear el secreto.PROJECT_ID
: el ID de tu proyecto de Google Cloud .VERSION_NUMBER
: el número de versión del ID del secreto.
Crea las funciones de transformación de entrada y salida a partir de la siguiente firma de la función de predicción de los endpoints del modelo de inserción de texto. Para obtener más información sobre cómo crear funciones de transformación, consulta el ejemplo de funciones de transformación.
A continuación, se muestran funciones de transformación de ejemplo específicas del endpoint del modelo de inserciones de texto
custom-embedding-model
:-- Input Transform Function corresponding to the custom model endpoint CREATE OR REPLACE FUNCTION cymbal_text_input_transform(model_id VARCHAR(100), input_text TEXT) RETURNS JSON LANGUAGE plpgsql AS $$ DECLARE transformed_input JSON; model_qualified_name TEXT; BEGIN SELECT json_build_object('prompt', json_build_array(input_text))::JSON INTO transformed_input; RETURN transformed_input; END; $$; -- Output Transform Function corresponding to the custom model endpoint CREATE OR REPLACE FUNCTION cymbal_text_output_transform(model_id VARCHAR(100), response_json JSON) RETURNS REAL[] LANGUAGE plpgsql AS $$ DECLARE transformed_output REAL[]; BEGIN SELECT ARRAY(SELECT json_array_elements_text(response_json->0)) INTO transformed_output; RETURN transformed_output; END; $$;
Llama a la función de creación de modelos para registrar el endpoint del modelo de inserción personalizado:
CALL
google_ml.create_model(
model_id => 'MODEL_ID',
model_request_url => 'REQUEST_URL',
model_provider => 'custom',
model_type => 'text_embedding',
model_auth_type => 'secret_manager',
model_auth_id => 'SECRET_ID',
model_qualified_name => 'MODEL_QUALIFIED_NAME',
model_in_transform_fn => 'cymbal_text_input_transform',
model_out_transform_fn => 'cymbal_text_output_transform');
Haz los cambios siguientes:
MODEL_ID
: obligatorio. Un ID único para el punto de conexión del modelo que definas (por ejemplo,custom-embedding-model
). Este ID de modelo se utiliza como referencia para los metadatos que necesita el punto de conexión del modelo para generar inserciones o invocar predicciones.REQUEST_URL
: obligatorio. El endpoint específico del modelo al añadir una inserción de texto personalizada y endpoints de modelos genéricos (por ejemplo,https://cymbal.com/models/text/embeddings/v1
). Asegúrate de que se pueda acceder al endpoint del modelo a través de una dirección IP interna. La gestión de endpoints de modelos no admite direcciones IP externas.MODEL_QUALIFIED_NAME
: es obligatorio si el endpoint de tu modelo usa un nombre cualificado. El nombre completo en caso de que el endpoint del modelo tenga varias versiones.SECRET_ID
: el ID secreto que has usado anteriormente en el procedimientogoogle_ml.create_sm_secret()
.
Modelos genéricos
En esta sección se muestra cómo registrar un punto final de modelo genérico degemini-pro
Vertex AIgemini-pro
Model Garden, que no tiene asistencia integrada.
Puedes registrar cualquier endpoint de modelo genérico alojado en Google Cloud.
Cloud SQL solo admite los endpoints de modelos disponibles a través de Model Garden de Vertex AI y los endpoints de modelos alojados en redes de Google Cloud.
Modelo de Gemini
En el siguiente ejemplo, se añade el endpoint del modelo gemini-1.0-pro
de Vertex AI Model Garden.
Para registrar el endpoint del modelo gemini-1.0-pro
, llama a la función create model
:
CALL
google_ml.create_model(
model_id => 'MODEL_ID',
model_request_url => 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:streamGenerateContent',
model_provider => 'google',
model_auth_type => 'cloudsql_service_agent_iam');
Haz los cambios siguientes:
MODEL_ID
: un ID único para el endpoint del modelo que definas (por ejemplo,
gemini-1
). Se hace referencia a este ID de modelo para los metadatos que necesita el endpoint del modelo para generar inserciones o invocar predicciones.PROJECT_ID
: el ID de tu proyecto de Google Cloud .
Para obtener más información, consulte cómo invocar predicciones para endpoints de modelos genéricos.
Siguientes pasos
- Consulta la referencia de gestión de endpoints de modelos.