Invocar predicciones

En esta página se describe cómo invocar predicciones mediante funciones de los espacios de nombres public y google_ml. La extensión google_ml_integration incluye funciones de predicción para estos espacios de nombres.

Puedes usar la función ml_predict_row() del esquema public con cualquier modelo genérico alojado en Vertex AI sin registrar el endpoint. La función google_ml.predict_row() del esquema google_ml se puede usar con cualquier modelo que se haya registrado en la gestión de endpoints de modelos.

Para invocar predicciones, selecciona uno de los siguientes esquemas.

Antes de empezar

Para permitir que AlloyDB invoque predicciones, haz lo siguiente:

Invocar predicciones online

Usa la función ml_predict_row() de SQL para invocar predicciones online en 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 google_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
  json_array_elements(ml_predict_row('publishers/google/models/gemini-1.5-pro:streamGenerateContent',
      '{ "contents": [ { "role": "user", "parts": [ { "text": "For TPCH database schema as mentioned here https://www.tpc.org/TPC_Documents_Current_Versions/pdf/TPC-H_v3.0.1.pdf , generate a SQL query to find all supplier names which are located in the India nation."
} ] } ] }'))-> 'candidates' -> 0 -> 'content' -> 'parts' -> 0 -> 'text';

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.5-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.5-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.

Siguientes pasos