Les fonctions optimisées d'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, et de revenir à un grand modèle de langage (LLM) plus volumineux uniquement 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 à distance pour les tâches de classification ou de filtrage ligne par ligne.
Les fonctions d'IA AlloyDB, telles que ai.if(), peuvent avoir une latence élevée en raison des appels à distance aux grands modèles de langage (LLM). Les fonctions optimisées résolvent ce problème de latence en utilisant des modèles proxy plus petits et 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 la sortie du LLM comme source de vérité.
Les vérifications de la justesse 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 libellés pour les lignes de l'échantillon et les compare aux prédictions du modèle proxy afin de vérifier la justesse. Si la vérification de la justesse échoue, la requête revient à l'utilisation du LLM.
Lorsque vous utilisez une fonction optimisée, AlloyDB effectue les opérations suivantes :
- Entraîne 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 proxy entraîné pour traiter la requête localement. - Revient au LLM : si la justesse 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 sur la version 1.5.8 ou ultérieure.SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.5.8 (1 row)Configurez 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.
Réfléchissez aux éléments 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 source 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 :
- Il n'y a qu'une seule fonction
ai.if()dans la requête. ai.if()ne se trouve 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;- Il n'y a 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 proxy entraîné n'est pas utilisé si l'une des conditions suivantes est remplie :
- Le contenu ou la colonne d'embedding référencée dans
ai.if()change. Les deux colonnes doivent appartenir à la même table. - Le prompt fourni à 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 justesse au début de la requête.
Dans ce cas, la requête revient à l'utilisation du LLM, et AlloyDB renvoie un avertissement.
- Le contenu ou la colonne d'embedding référencée dans
Facultatif. Pour désactiver la vérification de la validation de la justesse pour l'ensemble de l'environnement de base de données, ce qui est nécessaire, car les vérifications de la justesse sont également effectuées lors de l'entraînement du modèle, exécutez la commande suivante.
ALTER DATABASE DATABASE_NAME SET google_ml_integration.runtime_accuracy_check = off;Remplacez
DATABASE_NAMEpar le nom de votre base de données.
Réentraîner un modèle 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 préparation d'une requête remplace le modèle 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 approximer le comportement d'une combinaison unique de prompt et de données d'entrée.