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:
- Puedes invocar predicciones en las regiones en las que esté disponible la IA generativa en Vertex AI. Para ver una lista de las regiones, consulta Ubicaciones de la IA generativa en Vertex AI.
- Conéctate a tu base de datos mediante
psql
o AlloyDB para PostgreSQL Studio. - Comprueba que la extensión
google_ml_integration
esté instalada. - Verifica que la marca
google_ml_integration.enable_model_support
esté definida comoon
. - Para poder invocar predicciones desde una base de datos de AlloyDB, debes configurar AlloyDB para que funcione con Vertex AI. Para obtener más información, consulta Integrar tu base de datos con Vertex AI.
- Debe tener un modelo de Vertex AI activo con un endpoint activo al que tenga permiso de Gestión de Identidades y Accesos (IAM). AlloyDB no admite endpoints privados para obtener predicciones online.
Concede permisos a los usuarios de la base de datos para que ejecuten la función de predicción e invoquen predicciones:
\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.
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 proyectoREGION_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 CloudREGION_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 modeloCONTENTS
: 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.