Le traitement par lot intelligent pour les fonctions d'IA vous permet d'optimiser les performances lorsque vous exécutez des requêtes qui utilisent des fonctions d'IA. Il offre des performances identiques ou supérieures à celles des fonctions basées sur des tableaux, sans que vous ayez à écrire des requêtes complexes. Pour en savoir plus sur les fonctions d'IA, consultez la présentation des fonctions d'IA.
Le traitement par lot intelligent est compatible avec les fonctions d'IA suivantes :
ai.if: le traitement par lot intelligent ne s'applique qu'aux requêtesSELECToù la fonction se trouve dans la clauseWHERE. Il est compatible avec une seule fonctionai.ifpar analyse et fonctionne avec l'analyse séquentielle, l'analyse d'index et l'analyse de tas bitmap. Si une requête contient plusieurs analyses de table (par exemple, sur différentes tables, relations ou expressions de table courantes (CTE)), vous pouvez accélérer une fonctionai.ifpar analyse.ai.rank: le traitement par lot intelligent ne s'applique qu'aux requêtesSELECToù la fonction se trouve dans la clauseORDER BY. Il est compatible avec une seule fonctionai.rankpar analyse. Si une requête contient plusieurs analyses de table (par exemple, sur différentes tables, relations ou CTE), vous pouvez accélérer une fonctionai.rankpar analyse.
Activer le traitement par lot intelligent pour les fonctions d'IA
Pour activer le traitement par lot intelligent pour les fonctions d'IA, définissez l'option
google_ml_integration.enable_ai_function_acceleration sur on. Cet indicateur est désactivé par défaut et détermine si l'exécuteur de requêtes est autorisé à décharger les opérations d'IA éligibles vers le nœud d'application de la fonction AI pour l'accélération.
Lorsqu'elle n'est pas définie ou est définie sur off, toutes les opérations de requête sont exécutées par l'exécuteur PostgreSQL standard.
Vous pouvez configurer cette option au niveau de la session ou de l'instance.
Pour activer le traitement par lot intelligent pour les fonctions d'IA au niveau de l'instance, utilisez la commande 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_IDRemplacez les éléments suivants :
INSTANCE_ID: ID de l'instance que vous souhaitez mettre à jour.REGION_ID: ID de la région dans laquelle se trouve le cluster. Pour en savoir plus, consultez la section Régions où le service est disponible.CLUSTER_ID: ID du cluster.PROJECT_ID: ID du projet.
Pour en savoir plus sur la définition d'une option au niveau de l'instance, consultez la section Configurer des options de base de données.
Vérifier le traitement par lot intelligent pour les fonctions d'IA
Pour vérifier que le traitement par lot intelligent pour les fonctions d'IA est activé, vous pouvez utiliser l'instruction EXPLAIN pour analyser votre requête.
Vérifier le traitement par lot intelligent pour les fonctions d'IA pour les requêtes ai.if
L'exemple suivant montre comment activer le traitement par lot intelligent pour les fonctions d'IA pour la session en cours et exécuter une requête à l'aide de la fonction 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;
Lorsque vous utilisez l'instruction EXPLAIN pour analyser votre requête, le plan de requête affiche un nœud 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)
Vérifier le traitement par lot intelligent pour les fonctions d'IA pour les requêtes ai.rank
L'exemple suivant montre comment activer le traitement par lot intelligent pour les fonctions d'IA pour la session en cours et exécuter une requête à l'aide de la fonction 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;
Lorsque vous utilisez l'instruction EXPLAIN pour analyser votre requête, le plan de requête affiche un nœud 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')
Le nœud AIFunctionApply dans le plan de requête indique que la requête a utilisé le traitement par lot intelligent pour les fonctions d'IA. Si ce nœud n'est pas présent, la requête a utilisé l'exécution PostgreSQL standard.
Limites
- Seuls les arguments de base des fonctions sont acceptés. Pour
ai.ifetai.rank, l'argumentpromptdoit être une référence de colonne ou un littéral de chaîne concaténé avec une référence de colonne. Tous les autres arguments doivent être des constantes. Voici quelques exemples d'argumentspromptacceptés :ai.if(r.review)ai.if('Is this true? : ' || r.review)ai.rank(r.review)ai.rank('Rate this review: ' || r.review)
- Seules les requêtes
SELECTavecai.ifdans les clausesWHEREouai.rankdans les clausesORDER BYsont acceptées. - Une seule fonction AI par analyse de table est acceptée.
- Seuls les modèles Gemini par défaut sont acceptés. Pour en savoir plus, consultez la section Modèles Gemini. Pour utiliser un autre modèle, vous pouvez définir l'option
google_ml_integration.default_llm_modelsur l'ID du modèle que vous souhaitez utiliser. - Cette fonctionnalité n'est disponible que dans les régions qui sont compatibles avec le modèle
gemini-2.5-flash-liteou avec les régions du modèle LLM que vous avez défini à l'aide de l'optiongoogle_ml_integration.default_llm_model. Pour en savoir plus, consultez la section Régions où le service est disponible.
Étape suivante
- Effectuer des requêtes SQL intelligentes à l'aide de fonctions d'IA.
- Accélérer les requêtes d'IA à l'aide de fonctions optimisées.
- Effectuer un filtrage à l'aide de fonctions basées sur des tableaux