Acelera las consultas con funciones optimizadas

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:

  1. 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 PREPARE con la función ai.if() para entrenar el modelo para consultas optimizadas.
  2. Ejecuta la consulta: Cuando usas la instrucción EXECUTE, AlloyDB usa el modelo de proxy entrenado para procesar la consulta de forma local.
  3. 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.

Diagrama de flujo de las funciones optimizadas

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 postgres o como un usuario que tenga acceso a la tabla en la que residen los datos.
  • Verifica que la extensión google_ml_integration esté 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_support
    • google_ml_integration.enable_ai_query_engine
    • google_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 TEXT o VARCHAR.
    • La columna de embedding que proporciona entrada a la función IA optimizada debe ser de tipo REAL[] o VECTOR.
    • 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.

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:

  1. Crea una tabla restaurant_reviews. La columna review que contiene los datos fuente es de tipo TEXT, y la columna review_embedding que se usa para las consultas es de tipo VECTOR(768).

    CREATE TABLE restaurant_reviews (
        id SERIAL,
        name VARCHAR(64),
        city VARCHAR(64),
        review TEXT,
        review_embedding VECTOR(768)
    );
    
  2. Usa una instrucción PREPARE con la función ai.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;
    
  3. Ejecuta la consulta con la instrucción EXECUTE. Debido a que la instrucción PREPARE es específica de la sesión actual, debes ejecutar la instrucción EXECUTE en 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_id diferente.
    • 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.

  4. 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_NAME por 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.

¿Qué sigue?