Acelera el rendimiento de las consultas con funciones basadas en IA

La agrupación inteligente por lotes para las funciones de IA en AlloyDB para PostgreSQL te permite optimizar el rendimiento cuando ejecutas consultas en SQL que invocan modelos de IA. Proporciona el mismo rendimiento o uno mejor que las funciones basadas en arrays sin que tengas que escribir consultas complejas de procesamiento por lotes. Para obtener más información sobre las funciones de IA, consulta Descripción general de las funciones de IA.

La agrupación inteligente por lotes admite las siguientes funciones de IA:

  • ai.if: El procesamiento por lotes inteligente solo se aplica a las consultas SELECT en las que la función se encuentra en la cláusula WHERE. Admite una sola función ai.if por análisis y funciona con análisis de montón secuencial, de índice y de mapa de bits. Si una consulta contiene varios análisis de tablas, por ejemplo, en diferentes tablas, relaciones o expresiones de tabla comunes (CTE), puedes acelerar una función ai.if por análisis.
  • ai.rank: El procesamiento por lotes inteligente solo se aplica a las consultas SELECT en las que la función se encuentra en la cláusula ORDER BY. Admite una sola función ai.rank por análisis. Si una consulta contiene varios análisis de tablas, por ejemplo, en diferentes tablas, relaciones o CTE, puedes acelerar una función ai.rank por análisis.

Habilita la solicitud por lotes inteligente para las funciones IA

Para habilitar la solicitud por lotes inteligente para las funciones de IA, establece la marca google_ml_integration.enable_ai_function_acceleration en on. Esta marca está inhabilitada de forma predeterminada y controla si el ejecutor de consultas puede descargar operaciones de IA aptas en el nodo de aplicación de la función de IA para la aceleración. Cuando no se establece o se configura como off, el ejecutor estándar de PostgreSQL ejecuta todas las operaciones de consulta.

Puedes configurar esta marca a nivel de sesión o de instancia.

Para habilitar la solicitud por lotes inteligente para las funciones IA a nivel de la instancia, usa el comando gcloud alloydb instances update:

gcloud alloydb instances update INSTANCE_ID \
  --database-flags google_ml_integration.enable_ai_function_acceleration=on \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --project=PROJECT_ID

Reemplaza lo siguiente:

  • INSTANCE_ID: Es el ID de la instancia que deseas actualizar.
  • REGION_ID: Es el ID de la región en la que se encuentra el clúster. Para obtener más información, consulta Regiones admitidas.
  • CLUSTER_ID: Es el ID del clúster.
  • PROJECT_ID: el ID del proyecto

Para obtener más información sobre cómo configurar una marca a nivel de la instancia, consulta Configura marcas de base de datos.

Verifica la solicitud por lotes inteligente para las funciones de IA

Para verificar que la solicitud por lotes inteligente para las funciones de IA esté habilitada, puedes usar la declaración EXPLAIN para analizar tu consulta.

Verifica el procesamiento por lotes inteligente de las funciones de IA para las consultas de ai.if

En el siguiente ejemplo, se muestra cómo habilitar la solicitud por lotes inteligente para las funciones IA en la sesión actual y ejecutar una consulta con la función ai.if:

SET google_ml_integration.enable_ai_function_acceleration = on;

EXPLAIN (COSTS OFF) SELECT r.name
FROM restaurant_reviews r
WHERE ai.if('Is the following a positive review? Review: '||r.review) AND r.city = 'Los Angeles'
GROUP BY r.name
HAVING count(*) > 20
ORDER BY r.name;

Cuando usas la sentencia EXPLAIN para analizar tu consulta, el plan de consulta muestra un nodo AI Function Apply:

                                       QUERY PLAN                                       
----------------------------------------------------------------------------------------
 GroupAggregate
   Group Key: name
   Filter: (count(*) > 20)
   ->  Sort
         Sort Key: name
         ->  AI Function Apply
               Filter: ai.if((('Is the following a positive review? Review: '::text || review)), NULL::character varying)
               ->  Index Scan using idx_restaurant_reviews_city on restaurant_reviews r
                     Index Cond: ((city)::text = 'Los Angeles'::text)

Verifica el procesamiento por lotes inteligente de las funciones de IA para las consultas de ai.rank

En el siguiente ejemplo, se muestra cómo habilitar la solicitud por lotes inteligente para las funciones IA en la sesión actual y ejecutar una consulta con la función ai.rank:

SET google_ml_integration.enable_ai_function_acceleration = on;

EXPLAIN (COSTS OFF) SELECT r.name, r.review
FROM restaurant_reviews r
WHERE r.city = 'Los Angeles'
ORDER BY ai.rank('Rank these reviews based on how much they emphasize high-quality ingredients. Review: ' || r.review) DESC
LIMIT 50;

Cuando usas la sentencia EXPLAIN para analizar tu consulta, el plan de consulta muestra un nodo AI Function Apply:

                                       QUERY PLAN                                       
----------------------------------------------------------------------------------------
 Limit
  ->  Sort
        Sort Key: (ai.rank(('Rank these reviews based on how much they emphasize high-quality ingredients. Review: ' || r.review'), NULL)) DESC
        ->  AI Function Apply
              ->  Bitmap Heap Scan on restaurant_reviews r
                    Recheck Cond: (city = 'Los Angeles')
                    ->  Bitmap Index Scan on idx_restaurant_reviews_city
                          Index Cond: (city = 'Los Angeles')

El nodo AIFunctionApply en el plan de consultas indica que la consulta usó la solicitud por lotes inteligente para las funciones IA. Si este nodo no está presente, la consulta usó la ejecución estándar de PostgreSQL.

Limitaciones

  • Solo se admiten argumentos básicos para las funciones. Para ai.if y ai.rank, el argumento prompt debe ser una referencia de columna o un literal de cadena concatenado con una referencia de columna. Cualquier otro argumento debe ser una constante. Estos son algunos ejemplos de argumentos de prompt admitidos:
    • ai.if(r.review)
    • ai.if('Is this true? : ' || r.review)
    • ai.rank(r.review)
    • ai.rank('Rate this review: ' || r.review)
  • Solo se admiten consultas SELECT con ai.if en cláusulas WHERE o ai.rank en cláusulas ORDER BY.
  • Solo se admite una función IA por análisis de tabla.
  • Solo se admiten los modelos de Gemini predeterminados. Para obtener más información, consulta Modelos de Google. Para usar un modelo diferente, puedes establecer la marca google_ml_integration.default_llm_model en el ID del modelo que deseas usar.
  • La función solo está disponible en las regiones que admiten el modelo gemini-3.5-flash-lite o las regiones para el modelo de LLM que estableces con la marca google_ml_integration.default_llm_model. Para obtener más información, consulta Regiones admitidas.

¿Qué sigue?