Invocar predicciones online de las bases de datos de AlloyDB

Selecciona una versión de la documentación:

En esta página se muestra cómo invocar predicciones online desde una base de datos de AlloyDB para PostgreSQL.

AlloyDB te permite obtener predicciones online en tu código SQL llamando a la función ml_predict_row(). Para obtener más información sobre cómo usar modelos de aprendizaje automático con AlloyDB, consulta el artículo Crear aplicaciones de IA generativa.

Antes de empezar

Antes de poder invocar predicciones online desde una base de datos de AlloyDB, debes preparar la base de datos y seleccionar un modelo de aprendizaje automático adecuado.

Preparar la base de datos

  1. Configura la integración entre tu base de datos y Vertex AI.

  2. Concede permiso a los usuarios de la base de datos para ejecutar la ml_predict_row() función para hacer predicciones:

    1. Conecta un cliente psql a la instancia principal del clúster, tal como se describe en Conectar un cliente psql a una instancia.

    2. En el símbolo del sistema de psql, conéctate a la base de datos y concede permisos:

      \c DB_NAME
      
      GRANT EXECUTE ON FUNCTION ml_predict_row TO USER_NAME;
      

      Haz los cambios siguientes:

      • DB_NAME: el nombre de la base de datos en la que se deben conceder los permisos.

      • USER_NAME: el nombre del usuario al que se deben conceder los permisos.

Selecciona un modelo de aprendizaje automático

Cuando llames a la función ml_predict_row(), debes especificar la ubicación de un modelo de aprendizaje automático. El modelo que especifiques puede ser uno de los siguientes:

  • Un modelo que se ejecuta en Model Garden de Vertex AI.

    La función ml_predict_row() solo admite la invocación de predicciones en modelos tabulares o personalizados.

  • Un modelo de Vertex AI con un endpoint activo al que tengas permiso de Gestión de Identidades y Accesos (IAM).

    AlloyDB no admite endpoints privados para obtener predicciones online.

Invocar predicciones online

Usa la función SQL ml_predict_row() para invocar predicciones online con tus datos.

El formato del argumento inicial de la función depende de si el modelo de aprendizaje automático que quieres usar está en Vertex AI Model Garden o es un endpoint que se ejecuta en un proyecto. Google Cloud

Usar un modelo de Vertex AI Model Garden

Para invocar una predicción online con un modelo de aprendizaje automático que se esté ejecutando en Vertex AI Model Garden, usa la siguiente sintaxis para la función SQL ml_predict_row():

SELECT ml_predict_row('projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID', '{ CONTENTS }');

Haz los cambios siguientes:

  • PROJECT_ID: el ID de tu Google Cloud proyecto

  • REGION_ID: el ID de la Google Cloud región en la que se encuentra el modelo. Por ejemplo, us-central1 para gemini-pro.

  • MODEL_ID: el ID del modelo de aprendizaje automático que se va a usar (por ejemplo, gemini-pro).

  • CONTENTS: las entradas de la llamada de predicción, en formato JSON

Si el modelo de aprendizaje automático se almacena en el mismo proyecto y región que tu clúster de AlloyDB, puedes abreviar el primer argumento de esta función:

SELECT ml_predict_row('publishers/google/models/MODEL_ID', '{ CONTENTS }');

Para obtener información sobre los mensajes de respuesta JSON del modelo, consulta la referencia del modelo de base de IA generativa.

Para ver ejemplos, consulta Ejemplos de invocaciones.

Usar un endpoint de modelo de Vertex AI

Para invocar una predicción online mediante un endpoint de modelo de Vertex AI, usa la siguiente sintaxis para la función SQL ml_predict_row():

SELECT ml_predict_row('projects/PROJECT_ID/locations/REGION_ID/endpoints/ENDPOINT_ID', '{ CONTENTS }');

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto en el que se encuentra el modelo Google Cloud

  • REGION_ID: el ID de la Google Cloud región en la que se encuentra el modelo (por ejemplo, us-central1)

  • ENDPOINT_ID: el ID del endpoint del modelo

  • CONTENTS: las entradas de la llamada de predicción, en formato JSON

Si el endpoint se encuentra en el mismo proyecto y región que tu clúster de AlloyDB, puedes abreviar el primer argumento de esta función:

SELECT ml_predict_row('endpoints/ENDPOINT_ID', '{ CONTENTS }');

Para obtener información sobre los mensajes de respuesta JSON del modelo, consulta PredictResponse.

Ejemplos de invocaciones

En el siguiente ejemplo se usa gemini-pro, disponible en Model Garden, para generar texto a partir de una petición breve que se proporciona como argumento literal a ml_predict_row():

select ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:generateContent', '{
  "contents": [{
    "role": "user",
    "parts": [{
      "text": "What is AlloyDB?"
    }]
  }]
}');

La respuesta es un objeto JSON. Para obtener más información sobre el formato del objeto, consulta Cuerpo de la respuesta.

En el siguiente ejemplo se modifica el anterior de las siguientes formas:

  • En el ejemplo se usa el contenido de la columna messages.message de la base de datos actual como entrada.

  • En el ejemplo se muestra el uso de la función json_build_object() como ayuda para dar formato a los parámetros de la función.


select ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:generateContent', json_build_object('contents', json_build_object('text', message))) from messages;

El objeto JSON devuelto ahora contiene una entrada en su matriz predictions por cada fila de la tabla messages.

Como la respuesta es un objeto JSON, puedes extraer campos específicos de ella mediante el operador de flecha de PostgreSQL:

select ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:generateContent', json_build_object('contents', json_build_object('text', message)))->'predictions'->0->'content' FROM messages;

Para ver más ejemplos de argumentos de ml_predict_row(), consulta la guía de inicio rápido para usar la API de Vertex AI.