Accélérer les performances des requêtes avec les fonctions d'IA

L'accélération des fonctions d'IA vous permet d'optimiser les performances lorsque vous exécutez des requêtes qui utilisent des fonctions d'IA. Elle 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 Présentation des fonctions d'IA.

L'accélération des fonctions d'IA est compatible avec les fonctions d'IA suivantes :

  • ai.if : l'accélération ne s'applique qu'aux requêtes SELECT où la fonction se trouve dans la clause WHERE. Elle n'accepte qu'une seule fonction ai.if par analyse et fonctionne avec les analyses séquentielles, d'index et 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 fonction ai.if par analyse.
  • ai.rank : l'accélération ne s'applique qu'aux requêtes SELECT où la fonction se trouve dans la clause ORDER BY. Il accepte une seule fonction ai.rank par 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 fonction ai.rank par analyse.

Activer l'accélération des fonctions d'IA

Pour activer l'accélération des fonctions d'IA, définissez l'indicateur google_ml_integration.enable_ai_function_acceleration sur on. Ce flag 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 sur le nœud d'application de la fonction AI pour l'accélération. Si 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 cet indicateur au niveau de la session ou de l'instance.

Pour activer l'accélération des 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_ID

Remplacez 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 savoir comment définir un indicateur au niveau de l'instance, consultez Configurer des indicateurs de base de données.

Vérifier l'accélération des fonctions d'IA

Pour vérifier que l'accélération des fonctions d'IA est activée, vous pouvez utiliser l'instruction EXPLAIN pour analyser votre requête.

Vérifier l'accélération des fonctions d'IA pour les requêtes ai.if

L'exemple suivant montre comment activer l'accélération des 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 l'accélération des fonctions d'IA pour les requêtes ai.rank

L'exemple suivant montre comment activer l'accélération des 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 du plan de requête indique que la requête a utilisé l'accélération des 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.if et ai.rank, l'argument prompt doit ê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 simples. Voici quelques exemples d'arguments prompt accepté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 SELECT avec ai.if dans les clauses WHERE ou ai.rank dans les clauses ORDER BY sont acceptées.
  • Une seule fonction AI par analyse de tableau est acceptée.
  • Seuls les modèles Gemini par défaut sont acceptés. Pour en savoir plus, consultez Modèles Gemini. Pour utiliser un autre modèle, vous pouvez définir l'option google_ml_integration.default_llm_model sur l'ID du modèle que vous souhaitez utiliser.
  • Cette fonctionnalité n'est disponible que dans les régions qui acceptent le modèle gemini-2.5-flash-lite ou les régions du modèle LLM que vous définissez à l'aide de l'indicateur google_ml_integration.default_llm_model. Pour en savoir plus, consultez la section Régions où le service est disponible.

Étapes suivantes