Invoca predicciones

En esta página, se describe cómo invocar predicciones con 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() en el esquema public con cualquier modelo genérico alojado en Vertex AI sin registrar el extremo. La función google_ml.predict_row() en el esquema google_ml se puede usar con cualquier modelo que se haya registrado en la administración de extremos de Model.

Para invocar predicciones, selecciona uno de los siguientes esquemas.

Antes de comenzar

Para permitir que AlloyDB invoque predicciones, haz lo siguiente:

Invoca predicciones en línea

Usa la función de SQL ml_predict_row() para invocar predicciones en línea en tus datos.

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

Usa un modelo en Model Garden de Vertex AI

Para invocar una predicción en línea con un modelo de AA que se ejecuta en Model Garden de Vertex AI, usa la siguiente sintaxis para la función de SQL google_ml.predict_row():

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

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID de tu proyecto de Google Cloud .

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

  • MODEL_ID: el ID del modelo de AA que se usará (por ejemplo, gemini-pro)

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

Si el modelo de AA se almacena en el mismo proyecto y la misma 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 Referencia de modelos de base de IA generativa.

Para ver ejemplos, consulta Invocaciones de ejemplo.

Usa un extremo del modelo de Vertex AI

Para invocar una predicción en línea a través de un extremo del modelo de Vertex AI, usa la siguiente sintaxis para la función de SQL ml_predict_row():

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

Reemplaza lo siguiente:

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

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

  • ENDPOINT_ID: Es el ID del extremo del modelo.

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

Si el extremo 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 acerca de los mensajes de respuesta JSON del modelo, consulta PredictResponse.

Invocaciones de ejemplo

En el siguiente ejemplo, se usa gemini-pro, disponible en Model Garden, para generar texto basado en una instrucción breve que se proporciona como argumento literal de 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 acerca del formato del objeto, consulta Cuerpo de la respuesta.

En el siguiente ejemplo, se modifica el anterior de las siguientes maneras:

  • 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 que se muestra ahora contiene una entrada en su array predictions para cada fila de la tabla messages.

Debido a que la respuesta es un objeto JSON, puedes extraer campos específicos de él a través del 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 para ml_predict_row(), consulta la Guía de inicio rápido para usar la API de Vertex AI.

¿Qué sigue?