Pour résoudre les problèmes d'entraînement de modèle, de préparation de requête et de dégradation des performances lorsque vous exécutez des fonctions d'IA optimisées dans AlloyDB pour PostgreSQL, appliquez les correctifs recommandés pour les avertissements ou les erreurs renvoyés par vos requêtes.
Performances réduites attendues. La fonction AI optimisée n'est pas disponible
Description
Cet avertissement indique que la requête a été redirigée vers le LLM. Cela se produit lorsque la fonction optimisée est toujours en cours d'entraînement, n'a jamais été préparée, a échoué à la vérification de la justesse de l'exécution, ou si les colonnes de contenu et d'embedding référencées dans la fonction ai.if() n'appartiennent pas à la même table. Pour les tables plus petites, le modèle proxy peut ne pas se généraliser correctement, et la précision est généralement inférieure à 95 %. AlloyDB utilise donc le LLM par défaut.
Exemple de requête à l'origine de l'erreur
EXECUTE positive_reviews_query;
Correction recommandée
- Attendez que l'entraînement de la fonction optimisée se termine.
- Assurez-vous que la requête est correctement préparée à l'aide de l'instruction
PREPARE. - Vérifiez que les colonnes de contenu et d'embedding référencées dans la fonction
ai.if()appartiennent à la même table. - Les fonctions optimisées (bêta) sont plus adaptées aux tables plus volumineuses. Vous pouvez également utiliser des fonctions IA basées sur des tableaux pour améliorer les performances.
Si vous souhaitez contourner la vérification de la précision de l'environnement d'exécution (par exemple, dans les environnements de développement), définissez
google_ml_integration.runtime_accuracy_checksuroffpour l'ensemble de l'environnement de base de données.ALTER DATABASE DATABASE_NAME SET google_ml_integration.runtime_accuracy_check = off;Remplacez
DATABASE_NAMEpar le nom de votre base de données.
La requête ne traite aucune ligne ou la préparation du modèle échoue
Description
Si la requête ne traite aucune ligne, la raison principale est que les embeddings ne sont pas générés ou que la colonne d'embeddings entière contient des valeurs NULL. La préparation de la requête échoue, car elle n'échantillonne aucune ligne contenant des embeddings NULL.
Correction recommandée
- Générez des embeddings pour vos données avant d'utiliser des fonctions optimisées.
- Assurez-vous que la colonne d'embedding ne contient pas de valeurs
NULL. - Les requêtes qui ne diffèrent que par des valeurs constantes dans la clause
WHEREpeuvent toujours utiliser un modèle entraîné existant.
Performances lentes malgré l'utilisation de fonctions IA optimisées
Description
Assurez-vous de ne pas dépasser votre quota Gemini Enterprise Agent Platform. Même avec des fonctions d'IA optimisées, la vérification initiale de la précision de l'exécution nécessite d'appeler le LLM distant pour un échantillon de lignes. Un quota insuffisant peut ralentir ou faire échouer cette vérification initiale.
Correction recommandée
Vérifiez votre quota Agent Platform et demandez une augmentation si nécessaire pour vous assurer que la vérification initiale de la précision de l'environnement d'exécution peut se dérouler sans délai.
ERROR: function ai.if(prompt => text, embedding => vector) does not exist
Description
Si vous transmettez le paramètre model_id avec la colonne d'embedding lors de l'appel de la fonction ai.if(), AlloyDB n'utilise pas le modèle de proxy entraîné et génère une erreur semblable à celle-ci :
testdb=# select ai.if('Is the rating positive?' || review, review_embedding, 'gemini-2.5-pro') from restaurant_reviews;
ERROR: function ai.if(text, vector, unknown) does not exist
LINE 1: select ai.if('Is the rating positive?' || review, review_embe...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
Correction recommandée
Assurez-vous de ne pas transmettre la valeur model_id lorsque vous appelez la fonction ai.if(). Cela garantit qu'AlloyDB utilise le modèle de proxy entraîné pour traiter la requête.