La aceleración de funciones IA te permite optimizar el rendimiento cuando ejecutas consultas que usan funciones IA. Proporciona el mismo rendimiento o uno mejor que las funciones basadas en arrays , sin necesidad de escribir consultas complejas. Para obtener más información sobre las funciones de IA, consulta Descripción general de las funciones de IA.
La aceleración de funciones de IA admite las siguientes funciones de IA:
ai.if: La aceleración solo se aplica a las consultasSELECTen las que la función está en la cláusulaWHERE. Admite una sola funciónai.ifpor análisis y funciona con el análisis secuencial, de índice y de montón de mapa de bits. Si una consulta contiene varios análisis de tabla (por ejemplo, en diferentes tablas, relaciones o expresiones de tabla comunes [CTE]), puedes acelerar una funciónai.ifpor análisis.ai.rank: La aceleración solo se aplica a las consultasSELECTen las que la función está en la cláusulaORDER BY. Admite una sola funciónai.rankpor análisis. Si una consulta contiene varios análisis de tabla (por ejemplo, en diferentes tablas, relaciones o CTE), puedes acelerar una funciónai.rankpor análisis.
Habilita la aceleración de funciones IA
Para habilitar la aceleración de función IA, establece la
google_ml_integration.enable_ai_function_acceleration marca en on. Esta marca está inhabilitada de forma predeterminada y controla si el ejecutor de consultas puede descargar las operaciones de IA aptas al nodo de aplicación de la función 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 la sesión o de la instancia.
Para habilitar la aceleración de función IA a nivel de la instancia, usa el gcloud
alloydb instances update comando:
gcloud alloydb instances update INSTANCE_ID \
--database-flags google_ml_integration.enable_ai_function_acceleration=on \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_IDReemplaza 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: Es el ID del proyecto.
Para obtener más información sobre cómo establecer una marca a nivel de la instancia, consulta Configura marcas de bases de datos.
Verifica la aceleración de funciones IA
Para verificar que la aceleración de funciones IA esté habilitada, puedes usar la instrucción EXPLAIN para analizar tu consulta.
Verifica la aceleración de función IA para consultas ai.if
En el siguiente ejemplo, se muestra cómo habilitar la aceleración de funciones de IA para 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 instrucción EXPLAIN para analizar tu consulta, el plan de consultas 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 la aceleración de función IA para consultas ai.rank
En el siguiente ejemplo, se muestra cómo habilitar la aceleración de funciones de IA para 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 instrucción EXPLAIN para analizar tu consulta, el plan de consultas 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 aceleración de funciones de 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.ifyai.rank, el argumentopromptdebe ser una referencia de columna o un literal de cadena concatenado con una referencia de columna. Cualquier otro argumento debe ser una constante simple. Entre los ejemplos de argumentospromptadmitidos, se incluyen los siguientes: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 las consultas
SELECTconai.ifen las cláusulasWHEREoai.ranken las cláusulasORDER 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 Gemini. Para usar un modelo diferente, puedes establecer la marca
google_ml_integration.default_llm_modelen el ID del modelo que deseas usar. - La función solo está disponible en las regiones que admiten el modelo
gemini-2.5-flash-liteo las regiones del modelo LLM que estableces con la marcagoogle_ml_integration.default_llm_model. Para obtener más información, consulta Regiones admitidas.
¿Qué sigue?
- Realiza consultas inteligentes en SQL con funciones de IA.
- Acelera las consultas de IA con funciones optimizadas.
- Realiza el filtrado con funciones basadas en arrays.