Las funciones optimizadas te permiten usar un modelo de proxy más pequeño y rápido para procesar la mayoría de tus consultas y, luego, recurrir a un LLM más grande solo cuando sea necesario. Este enfoque reduce los costos operativos y mejora la capacidad de respuesta de las consultas. Las funciones optimizadas minimizan el uso de LLM para tareas de clasificación o filtrado fila por fila, que el modelo de proxy puede manejar mejor.
Las funciones de AlloyDB AI, como ai.if(), pueden tener una latencia alta debido a las llamadas remotas a modelos grandes de lenguaje (LLM). Las funciones optimizadas abordan este problema de latencia mediante el uso de modelos de proxy más pequeños y entrenados de forma local para procesar tus consultas. Estos modelos se entrenan con una muestra de tus datos, y usan el resultado del LLM como fuente de información.
Las verificaciones de exactitud se realizan en el tiempo de ejecución en una muestra de filas con el LLM. Para realizar esta verificación, AlloyDB usa el LLM para generar etiquetas para las filas de muestra y las compara con las predicciones del modelo de proxy para verificar la exactitud. Si falla la verificación de exactitud, la consulta vuelve a usar el LLM.
Cuando usas una función optimizada, AlloyDB hace lo siguiente:
- Entrena un modelo de proxy: AlloyDB entrena un modelo de proxy ligero en una muestra de tus datos. Esto sucede en segundo plano cuando usas la instrucción
PREPAREcon la funciónai.if()para entrenar el modelo para consultas optimizadas. - Ejecuta la consulta: Cuando usas la instrucción
EXECUTE, AlloyDB usa el modelo de proxy entrenado para procesar la consulta de forma local. - Vuelve al LLM: Si la exactitud del modelo es baja o si AlloyDB no puede encontrar un modelo, AlloyDB vuelve automáticamente a usar el LLM.

Antes de comenzar
Antes de usar las funciones optimizadas, haz lo siguiente:
- Conéctate a tu base de datos con psql o
AlloyDB Studio como el usuario
postgreso como un usuario que tenga acceso a la tabla en la que residen los datos. Verifica que la extensión
google_ml_integrationesté instalada y disponible en la versión 1.5.8 o posterior. .SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.5.8 (1 row)Configura AlloyDB para que funcione con Gemini Enterprise Agent Platform. Para obtener más información, consulta Integra tu base de datos con Agent Platform.
Asegúrate de que las siguientes marcas de base de datos estén habilitadas. Para obtener más información, consulta Configura las marcas de base de datos de una instancia.
google_ml_integration.enable_model_supportgoogle_ml_integration.enable_ai_query_enginegoogle_ml_integration.enable_cost_optimized_ai_functions
Genera incorporaciones para la tabla que deseas consultar. Para obtener más información, consulta Genera y administra incorporaciones automáticas para tablas.
Ten en cuenta lo siguiente:
- La columna de datos fuente debe ser de tipo
TEXToVARCHAR. - La columna de embedding que proporciona entrada a la función IA optimizada debe ser de tipo
REAL[]oVECTOR. - Las funciones optimizadas solo están disponibles en las regiones en las que están disponibles los modelos generativos de Agent Platform. Para obtener una lista de las regiones disponibles, consulta Implementaciones y extremos.
- La columna de datos fuente debe ser de tipo
Usa funciones optimizadas
Para usar una función optimizada, usa las instrucciones PREPARE y EXECUTE con la función ai.if(). A continuación, se muestra un ejemplo de cómo usar una función optimizada:
Crea una tabla
restaurant_reviews. La columnareviewque contiene los datos fuente es de tipoTEXT, y la columnareview_embeddingque se usa para las consultas es de tipoVECTOR(768).CREATE TABLE restaurant_reviews ( id SERIAL, name VARCHAR(64), city VARCHAR(64), review TEXT, review_embedding VECTOR(768) );Usa una instrucción
PREPAREcon la funciónai.if()para indicar que la consulta debe usar una función optimizada. Esta instrucción activa el entrenamiento asíncrono del modelo en segundo plano.El modelo se entrena solo en las siguientes condiciones:
- Hay exactamente una función
ai.if()en la consulta. ai.if()no está dentro de una subconsulta.
PREPARE positive_reviews_query AS SELECT r.name, r.city FROM restaurant_reviews r WHERE ai.if('Is the following a positive review? Review: ' || r.review, r.review_embedding) GROUP BY r.name, r.city HAVING COUNT(*) > 500;- Hay exactamente una función
Ejecuta la consulta con la instrucción
EXECUTE. Debido a que la instrucciónPREPAREes específica de la sesión actual, debes ejecutar la instrucciónEXECUTEen la misma conexión:EXECUTE positive_reviews_query;conn2=> SELECT r.name, r.city FROM restaurant_reviews r WHERE ai.if('Is the following a positive review? Review: ' || r.review, r.review_embedding) GROUP BY r.name, r.city HAVING COUNT(*) > 500;El modelo de proxy entrenado no se usa si se cumple alguna de las siguientes condiciones:
- Cambia el contenido o la columna de incorporación a la que se hace referencia en
ai.if(). Ambas columnas deben pertenecer a la misma tabla. - Cambia el mensaje proporcionado a la columna de contenido.
- Cambia la estructura de la consulta, lo que genera un
query_iddiferente. - La consulta no cumple con el umbral de verificación de exactitud al comienzo de la consulta.
En estos casos, la consulta vuelve a usar el LLM y AlloyDB muestra una advertencia.
- Cambia el contenido o la columna de incorporación a la que se hace referencia en
Es opcional. Para inhabilitar la verificación de validación de exactitud para todo el entorno de la base de datos, que es obligatoria porque las verificaciones de exactitud también se realizan durante el entrenamiento de modelos, ejecuta el siguiente comando.
ALTER DATABASE DATABASE_NAME SET google_ml_integration.runtime_accuracy_check = off;Reemplaza
DATABASE_NAMEpor el nombre de tu base de datos.
Vuelve a entrenar un modelo de proxy
Si los datos de la tabla subyacente cambian de manera significativa, puedes volver a entrenar el modelo de proxy ejecutando la instrucción PREPARE nuevamente. Volver a preparar una consulta reemplaza el modelo de proxy existente mediante el inicio de una nueva solicitud de entrenamiento.
Limitaciones
Si cambias la columna de contenido fuente, la columna de incorporación o el mensaje proporcionado a la función ai.if(), debes emitir una nueva instrucción PREPARE.
AlloyDB entrena la función optimizada para aproximar el comportamiento de una combinación única de mensaje y datos de entrada.