Información general sobre el registro y la llamada de modelos de IA remotos en Cloud SQL

En esta página se describe cómo registrar un endpoint de modelo de IA e invocar predicciones con la gestión de endpoints de modelos en Cloud SQL. Para usar modelos de IA en entornos de producción, consulta Crear aplicaciones de IA generativa con Cloud SQL y Trabajar con inserciones de vectores.

Información general

La gestión de endpoints de modelos te permite registrar un endpoint de modelo, gestionar los metadatos de endpoints de modelos en tu instancia de Cloud SQL y, a continuación, interactuar con los modelos mediante consultas SQL. Cloud SQL proporciona la extensión google_ml_integration, que incluye funciones para añadir y registrar los metadatos del endpoint del modelo relacionados con los modelos. Puedes usar estos modelos para generar incrustaciones de vectores o invocar predicciones.

Puede registrar los siguientes tipos de modelos mediante la gestión de endpoints de modelos:

  • Modelos de inserciones de texto de Vertex AI.
  • Modelos de inserción de texto alojados de forma personalizada en redes de Google Cloud.
  • Modelos genéricos con una API basada en JSON. Estos son algunos ejemplos de estos modelos:

    • El modelo gemini-pro de Model Garden de Vertex AI
    • El modelo open_ai para los modelos de OpenAI
    • Modelos alojados en redes de Google Cloud

Cómo funciona

Puedes usar la gestión de endpoints de modelos para registrar un endpoint de modelo que cumpla los siguientes requisitos:

  • La entrada y la salida del modelo admiten el formato JSON.
  • Puedes usar el protocolo REST para llamar al modelo.

Cuando registras un endpoint de modelo con la gestión de endpoints de modelos, esta registra cada endpoint con un ID de modelo único como referencia al modelo. Puede usar este ID de modelo para consultar modelos, como se indica a continuación:

  • Genera incrustaciones para traducir las peticiones de texto a vectores numéricos. Puede almacenar las inserciones generadas como datos vectoriales cuando la extensión pgvector esté habilitada en la base de datos. Para obtener más información, consulta Consultar e indexar incrustaciones con pgvector.

  • Invoca predicciones para llamar a un modelo mediante SQL en una transacción.

Tus aplicaciones pueden gestionar sus endpoints de modelo mediante la extensión google_ml_integration. Esta extensión proporciona las siguientes funciones de SQL:

  • google_ml.create_model(): registra el endpoint del modelo que se usa en la función de predicción o de inserción.
  • google_ml.create_sm_secret(): usa secretos en Google Cloud Secret Manager, donde se almacenan las claves de API.
  • google_ml.embedding(): genera embeddings de texto
  • google_ml.predict_row(): genera predicciones cuando llamas a modelos genéricos que admiten los formatos de entrada y salida JSON

Conceptos clave

Antes de empezar a usar la gestión de endpoints de modelos, familiarízate con los conceptos necesarios para conectarte a los modelos y usarlos.

Proveedor del modelo

Proveedor de modelos es el proveedor de alojamiento de modelos admitido. En la siguiente tabla se muestra el valor del proveedor del modelo que debe definir en función del proveedor del modelo que utilice:

Proveedor del modelo Definir en la función como…
Vertex AI (incluye Gemini) google
Anthropic anthropic
Hugging Face hugging_face
OpenAI open_ai
Otros modelos alojados fuera de Vertex AI,
Anthropic, Hugging Face y OpenAI
custom

El proveedor de modelos predeterminado es custom.

Tipos de modelo

Los tipos de modelos son los tipos de modelos de IA. Cuando registras un endpoint de modelo, puedes definir los tipos de modelo text_embedding o generic para el endpoint.

Modelos de inserción de texto con asistencia integrada
La gestión de endpoints de modelos ofrece compatibilidad integrada con todas las versiones del modelo textembedding-gecko. Para registrar estos endpoints de modelo, usa la función google_ml.create_model(). Cloud SQL configura automáticamente funciones de transformación predeterminadas para estos modelos.
El tipo de modelo de estos modelos es text_embedding.

Otros modelos de inserciones de texto
En el caso de otros modelos de inserción de texto, debes crear funciones de transformación para gestionar los formatos de entrada y salida que admite el modelo. También puedes usar la función de generación de encabezados HTTP que genera los encabezados personalizados que necesita tu modelo.

El tipo de modelo de estos modelos es text_embedding.

Modelos genéricos
La gestión de endpoints de modelos también admite el registro de todos los demás tipos de modelos, excepto los modelos de inserción de texto. Para invocar predicciones de modelos genéricos, usa la función google_ml.predict_row(). Puedes definir metadatos de puntos de conexión de modelos, como un punto de conexión de solicitud y encabezados HTTP específicos de tu modelo.
No puedes transferir funciones de transformación al registrar un endpoint de modelo genérico. Asegúrate de que, cuando invoques las predicciones, la entrada de la función esté en formato JSON y de que analices la salida JSON para obtener la salida final.
El tipo de modelo de estos modelos es generic. Como generic es el tipo de modelo predeterminado, si registra endpoints de modelo de este tipo, no es necesario definir el tipo de modelo.

Métodos de autenticación

Puedes usar la extensión google_ml_integration para especificar diferentes métodos de autenticación para acceder a tu modelo. Configurar estos métodos es opcional y solo es necesario si tienes que autenticarte para acceder a tu modelo.

En el caso de los modelos de Vertex AI, la cuenta de servicio de Cloud SQL se usa para la autenticación. En otros modelos, la clave de API o el token de portador que se almacena como secreto en Secret Manager se puede usar con la función SQL google_ml.create_sm_secret().

En la siguiente tabla se muestran los métodos de autenticación que puedes configurar:

Método de autenticación Definir en la función como… Proveedor del modelo
Agente de servicio de Cloud SQL cloudsql_service_agent_iam Proveedor de Vertex AI
Secret Manager secret_manager Modelos alojados fuera de Vertex AI

Funciones de predicción

La extensión google_ml_integration incluye las siguientes funciones de predicción:

google_ml.embedding()
Llama a un endpoint de modelo de incrustaciones de texto registrado para generar incrustaciones. Incluye compatibilidad integrada con el modelo textembedding-gecko de Vertex AI.
En el caso de los modelos de inserción de texto que no tienen asistencia integrada, los parámetros de entrada y salida son únicos para cada modelo y deben transformarse para que la función pueda llamar al modelo. Crea una función de entrada de transformación para transformar la entrada de la función de predicción en la entrada específica del modelo y una función de salida de transformación para transformar la salida específica del modelo en la salida de la función de predicción.
google_ml.predict_row()
Llama a un endpoint de modelo genérico registrado si el endpoint admite APIs basadas en JSON para invocar predicciones.

Transformar funciones

Las funciones de transformación modifican la entrada a un formato que el modelo entiende y convierten la respuesta del modelo al formato que espera la función de predicción. Las funciones de transformación se usan al registrar el endpoint del modelo text-embedding sin compatibilidad integrada. La firma de las funciones de transformación depende de la función de predicción del tipo de modelo.

No puedes usar funciones de transformación al registrar un endpoint de modelo generic.

A continuación, se muestran las firmas de la función de predicción de los modelos de inserción de texto:

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

CREATE OR REPLACE FUNCTION output_transform_function(model_id VARCHAR(100), response_json JSON) RETURNS real[];

Para obtener más información sobre cómo crear funciones de transformación, consulta el ejemplo de funciones de transformación.

Función de generación de encabezados HTTP

La función de generación de encabezados HTTP genera la salida en pares clave-valor JSON que se usan como encabezados HTTP. La firma de la función de predicción define las firmas de la función de generación de encabezados.

En el siguiente ejemplo se muestra la firma de la función de predicción google_ml.embedding():

CREATE OR REPLACE FUNCTION generate_headers(model_id VARCHAR(100), input TEXT) RETURNS JSON;

En el caso de la función de predicción google_ml.predict_row(), la firma es la siguiente:

CREATE OR REPLACE FUNCTION generate_headers(model_id VARCHAR(100), input JSON) RETURNS JSON;

Para obtener más información sobre cómo crear una función de generación de encabezados, consulta el ejemplo de función de generación de encabezados.

Limitaciones

  • Para usar modelos de IA con tu instancia de Cloud SQL, la versión de mantenimiento de tu instancia debe ser R20240910.01_02 o posterior. Para actualizar tu instancia a esta versión, consulta Realizar el mantenimiento de autoservicio.

Siguientes pasos