Les fonctions optimisées dans AlloyDB pour PostgreSQL vous permettent d'utiliser un modèle proxy plus petit et plus rapide pour traiter la plupart de vos requêtes SQL qui utilisent des fonctions d'IA, en ne recourant à un grand modèle de langage (LLM) plus volumineux que lorsque cela est nécessaire. Cette approche réduit les coûts opérationnels et améliore la réactivité des requêtes en minimisant les appels LLM distants pour les tâches de classification ou de filtrage ligne par ligne.
Les fonctions AlloyDB AI telles que ai.if() peuvent présenter une latence élevée en raison des appels distants aux grands modèles de langage (LLM). Les fonctions optimisées résolvent ce problème de latence en utilisant des modèles de proxy plus petits, entraînés localement, pour traiter vos requêtes. Ces modèles sont entraînés sur un échantillon de vos données, en utilisant le résultat du LLM comme source de vérité.
Les vérifications de l'exactitude sont effectuées au moment de l'exécution sur un échantillon de lignes à l'aide du LLM. Pour effectuer cette vérification, AlloyDB utilise le LLM pour générer des étiquettes pour les exemples de lignes et les compare aux prédictions du modèle proxy pour vérifier l'exactitude. Si la vérification de la précision échoue, la requête utilise le LLM.
Lorsque vous utilisez une fonction optimisée, AlloyDB effectue les opérations suivantes :
- Entraîner un modèle proxy : AlloyDB entraîne un modèle proxy léger sur un échantillon de vos données. Cela se produit en arrière-plan lorsque vous utilisez l'instruction
PREPAREavec la fonctionai.if()pour entraîner le modèle pour les requêtes optimisées. - Exécute la requête : lorsque vous utilisez l'instruction
EXECUTE, AlloyDB utilise le modèle de proxy entraîné pour traiter la requête localement. - Retour au LLM : si la précision du modèle est faible ou si AlloyDB ne trouve pas de modèle, AlloyDB revient automatiquement à l'utilisation du LLM.

Avant de commencer
Avant d'utiliser les fonctions optimisées, procédez comme suit :
- Connectez-vous à votre base de données à l'aide de psql ou d'AlloyDB Studio en tant qu'utilisateur
postgresou en tant qu'utilisateur ayant accès à la table où résident les données. Vérifiez que l'extension
google_ml_integrationest installée et disponible dans la version 1.5.8 ou ultérieure.SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.5.8 (1 row)Configurer AlloyDB pour qu'il fonctionne avec Gemini Enterprise Agent Platform. Pour en savoir plus, consultez Intégrer votre base de données à Agent Platform.
Assurez-vous que les indicateurs de base de données suivants sont activés. Pour en savoir plus, consultez Configurer les indicateurs de base de données d'une instance.
google_ml_integration.enable_model_supportgoogle_ml_integration.enable_ai_query_enginegoogle_ml_integration.enable_cost_optimized_ai_functions
Générez des embeddings pour la table que vous souhaitez interroger. Pour en savoir plus, consultez Générer et gérer des embeddings automatiques pour les tables.
Tenez compte des points suivants :
- La colonne de données source doit être de type
TEXTouVARCHAR. - La colonne d'embedding qui fournit l'entrée à la fonction AI optimisée doit être de type
REAL[]ouVECTOR. - Les fonctions optimisées ne sont disponibles que dans les régions où les modèles génératifs d'Agent Platform sont disponibles. Pour obtenir la liste des régions disponibles, consultez Déploiements et points de terminaison.
- La colonne de données source doit être de type
Utiliser des fonctions optimisées
Pour utiliser une fonction optimisée, utilisez les instructions PREPARE et EXECUTE avec la fonction ai.if(). Voici un exemple d'utilisation d'une fonction optimisée :
Créez une table
restaurant_reviews. La colonnereviewqui contient les données sources est de typeTEXT, et la colonnereview_embeddingutilisée pour les requêtes est de typeVECTOR(768).CREATE TABLE restaurant_reviews ( id SERIAL, name VARCHAR(64), city VARCHAR(64), review TEXT, review_embedding VECTOR(768) );Utilisez une instruction
PREPAREavec la fonctionai.if()pour indiquer que la requête doit utiliser une fonction optimisée. Cette instruction déclenche l'entraînement asynchrone du modèle en arrière-plan.Le modèle n'est entraîné que dans les conditions suivantes :
- La requête ne contient qu'une seule fonction
ai.if(). ai.if()n'est pas dans une sous-requête.
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;- La requête ne contient qu'une seule fonction
Exécutez la requête à l'aide de l'instruction
EXECUTE. Étant donné que l'instructionPREPAREest spécifique à la session en cours, vous devez exécuter l'instructionEXECUTEsur la même connexion :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;Le modèle de proxy entraîné n'est pas utilisé si l'une des conditions suivantes est remplie :
- La colonne de contenu ou d'embedding référencée dans
ai.if()change. Les deux colonnes doivent appartenir à la même table. - La requête fournie à la colonne de contenu change.
- La structure de la requête change, ce qui entraîne un
query_iddifférent. - La requête ne respecte pas le seuil de vérification de la précision au début de la requête.
Dans ce cas, la requête utilise le LLM et AlloyDB renvoie un avertissement.
- La colonne de contenu ou d'embedding référencée dans
Facultatif. Pour désactiver la vérification de la justesse pour l'ensemble de l'environnement de base de données (ce qui est nécessaire, car des vérifications de la justesse sont également effectuées pendant l'entraînement du modèle), exécutez la commande suivante.
ALTER DATABASE DATABASE_NAME SET google_ml_integration.proxy_models_enable_accuracy_check = off;Remplacez
DATABASE_NAMEpar le nom de votre base de données.
Réentraîner un modèle de proxy
Si les données de votre table sous-jacente changent de manière significative, vous pouvez réentraîner le modèle proxy en exécutant à nouveau l'instruction PREPARE. La nouvelle préparation d'une requête remplace le modèle de proxy existant en lançant une nouvelle requête d'entraînement.
Limites
Si vous modifiez la colonne de contenu source, la colonne d'embedding ou le prompt fourni à la fonction ai.if(), vous devez émettre une nouvelle instruction PREPARE.
AlloyDB entraîne la fonction optimisée pour qu'elle se rapproche du comportement d'une combinaison unique de prompt et de données d'entrée.