Présentation de l'enregistrement et de l'appel de modèles d'IA distants dans Cloud SQL

Cette page explique comment enregistrer un point de terminaison de modèle d'IA et appeler des prédictions avec la gestion des points de terminaison de modèle dans Cloud SQL. Pour utiliser des modèles d'IA dans des environnements de production, consultez Créer des applications d'IA générative à l'aide de Cloud SQL et Utiliser des embeddings vectoriels.

Présentation

La gestion des points de terminaison de modèles vous permet d'enregistrer un point de terminaison de modèle, de gérer les métadonnées de point de terminaison de modèle dans votre instance Cloud SQL, puis d'interagir avec les modèles à l'aide de requêtes SQL. Cloud SQL fournit l'extension google_ml_integration qui inclut des fonctions permettant d'ajouter et d'enregistrer les métadonnées du point de terminaison du modèle associées aux modèles. Vous pouvez utiliser ces modèles pour générer des embeddings vectoriels ou appeler des prédictions.

Vous pouvez enregistrer les types de modèles suivants à l'aide de la gestion des points de terminaison de modèle :

  • Modèles d'embedding textuel Vertex AI
  • Modèles d'embedding de texte hébergés sur mesure dans des réseaux au sein de Google Cloud.
  • Modèles génériques avec une API basée sur JSON. Voici quelques exemples de ces modèles :
    • Modèle gemini-pro de Vertex AI Model Garden
    • Modèle open_ai pour les modèles OpenAI
    • Modèles hébergés dans des réseaux au sein de Google Cloud

Fonctionnement

Vous pouvez utiliser la gestion des points de terminaison de modèle pour enregistrer un point de terminaison de modèle qui respecte les conditions suivantes :

  • Les entrées et sorties du modèle sont compatibles avec le format JSON.
  • Vous pouvez utiliser le protocole REST pour appeler le modèle.

Lorsque vous enregistrez un point de terminaison de modèle avec la gestion des points de terminaison de modèle, la gestion des points de terminaison de modèle enregistre chaque point de terminaison avec un ID de modèle unique comme référence au modèle. Vous pouvez utiliser cet ID de modèle pour interroger des modèles, comme suit :

  • Générez des embeddings pour traduire les requêtes de texte en vecteurs numériques. Vous pouvez stocker les embeddings générés sous forme de données vectorielles lorsque l'extension pgvector est activée dans la base de données. Pour en savoir plus, consultez Interroger et indexer des embeddings avec pgvector.

  • Appelez des prédictions pour appeler un modèle à l'aide de SQL dans une transaction.

Vos applications peuvent gérer leurs points de terminaison de modèle à l'aide de l'extension google_ml_integration. Cette extension fournit les fonctions SQL suivantes :

  • google_ml.create_model() : enregistre le point de terminaison du modèle utilisé dans la fonction de prédiction ou d'embedding.
  • google_ml.create_sm_secret() : utilise les secrets dans Google CloudSecret Manager, où les clés API sont stockées.
  • google_ml.embedding() : génère des embeddings de texte.
  • google_ml.predict_row() : génère des prédictions lorsque vous appelez des modèles génériques compatibles avec les formats d'entrée et de sortie JSON.

Concepts clés

Avant de commencer à utiliser la gestion des points de terminaison de modèle, comprenez les concepts nécessaires pour vous connecter aux modèles et les utiliser.

Fournisseur de modèles

Le fournisseur de modèles désigne les fournisseurs d'hébergement de modèles compatibles. Le tableau suivant indique la valeur du fournisseur de modèle que vous devez définir en fonction du fournisseur de modèle que vous utilisez :

Fournisseur de modèles Définir la fonction sur…
Vertex AI (inclut Gemini) google
OpenAI open_ai
Autres modèles hébergés en dehors de Vertex AI custom

Le fournisseur de modèle par défaut est custom.

Types de modèles

Les types de modèles sont les types de modèles d'IA. Lorsque vous enregistrez un point de terminaison de modèle, vous pouvez définir les types de modèles text-embedding ou generic pour le point de terminaison.

Modèles d'embedding de texte avec prise en charge intégrée
La gestion des points de terminaison de modèle
offre une compatibilité intégrée avec toutes les versions du modèle textembedding-gecko. Pour enregistrer ces points de terminaison de modèle, utilisez la fonction google_ml.create_model(). Cloud SQL configure automatiquement des fonctions de transformation par défaut pour ces modèles.
Le type de modèle pour ces modèles est text-embedding.
Autres modèles d'embedding de texte
Pour les autres modèles d'embedding de texte, vous devez créer des fonctions de transformation pour gérer les formats d'entrée et de sortie compatibles avec le modèle. Si vous le souhaitez, vous pouvez utiliser la fonction de génération d'en-têtes HTTP qui génère les en-têtes personnalisés requis par votre modèle.
Le type de modèle pour ces modèles est text-embedding.
Modèles génériques
La gestion des points de terminaison de modèle permet également d'enregistrer tous les autres types de modèles, à l'exception des modèles d'embeddings textuels.
Pour appeler des prédictions pour des modèles génériques, utilisez la fonction google_ml.predict_row(). Vous pouvez définir des métadonnées de point de terminaison de modèle, telles qu'un point de terminaison de requête et des en-têtes HTTP spécifiques à votre modèle.
Vous ne pouvez pas transmettre de fonctions de transformation lorsque vous enregistrez un point de terminaison de modèle générique. Assurez-vous que, lorsque vous appelez des prédictions, l'entrée de la fonction est au format JSON et que vous analysez la sortie JSON pour obtenir la sortie finale.
Le type de modèle pour ces modèles est generic. Étant donné que generic est le type de modèle par défaut, si vous enregistrez des points de terminaison de modèle pour ce type, la définition du type de modèle est facultative.

Méthodes d'authentification

Vous pouvez utiliser l'extension google_ml_integration pour spécifier différentes méthodes d'authentification afin d'accéder à votre modèle. La configuration de ces méthodes est facultative et n'est requise que si vous devez vous authentifier pour accéder à votre modèle.

Pour les modèles Vertex AI, le compte de service Cloud SQL est utilisé pour l'authentification. Pour les autres modèles, la clé API ou le jeton du porteur stockés en tant que secret dans Secret Manager peuvent être utilisés avec la fonction SQL google_ml.create_sm_secret().

Le tableau suivant présente les méthodes d'authentification que vous pouvez définir :

Méthode d'authentification Définir la fonction sur… Fournisseur de modèles
Agent de service Cloud SQL cloudsql_service_agent_iam Fournisseur Vertex AI
Secret Manager secret_manager Modèles hébergés en dehors de Vertex AI

Fonctions de prédiction

L'extension google_ml_integration inclut les fonctions de prédiction suivantes :

google_ml.embedding()
Appelle un point de terminaison de modèle d'embedding de texte enregistré pour générer des embeddings. Il inclut une compatibilité intégrée avec le modèle textembedding-gecko de Vertex AI.
Pour les modèles d'embedding de texte sans prise en charge intégrée, les paramètres d'entrée et de sortie sont propres à un modèle et doivent être transformés pour que la fonction appelle le modèle. Créez une fonction de transformation des entrées pour transformer les entrées de la fonction de prédiction en entrées spécifiques au modèle, et une fonction de transformation des sorties pour transformer les sorties spécifiques au modèle en sorties de la fonction de prédiction.
google_ml.predict_row()
Appelle un point de terminaison de modèle générique enregistré, si le point de terminaison est compatible avec les API basées sur JSON pour appeler des prédictions.

Fonctions de transformation

Les fonctions de transformation modifient l'entrée dans un format que le modèle comprend et convertissent la réponse du modèle au format attendu par la fonction de prédiction. Les fonctions de transformation sont utilisées lors de l'enregistrement du point de terminaison du modèle text-embedding sans prise en charge intégrée. La signature des fonctions de transformation dépend de la fonction de prédiction pour le type de modèle.

Vous ne pouvez pas utiliser de fonctions de transformation lorsque vous enregistrez un point de terminaison de modèle generic.

Vous trouverez ci-dessous les signatures de la fonction de prédiction pour les modèles d'embedding de texte :

// define custom model specific input/output transform functions.
CREATE OR REPLACE FUNCTION input_transform_function(model_id VARCHAR(100), input_text TEXT) RETURNS JSON;

CREATE OR REPLACE FUNCTION output_transform_function(model_id VARCHAR(100), response_json JSON) RETURNS real[];

Pour savoir comment créer des fonctions de transformation, consultez Exemple de fonctions de transformation.

Fonction de génération d'en-tête HTTP

La fonction de génération d'en-tête HTTP génère la sortie sous forme de paires clé/valeur JSON qui sont utilisées comme en-têtes HTTP. La signature de la fonction de prédiction définit les signatures de la fonction de génération d'en-tête.

L'exemple suivant montre la signature de la fonction de prédiction google_ml.embedding() :

CREATE OR REPLACE FUNCTION generate_headers(model_id VARCHAR(100), input TEXT) RETURNS JSON;

Pour la fonction de prédiction google_ml.predict_row(), la signature est la suivante :

CREATE OR REPLACE FUNCTION generate_headers(model_id VARCHAR(100), input JSON) RETURNS JSON;

Pour savoir comment créer une fonction de génération d'en-tête, consultez Exemple de fonction de génération d'en-tête.

Limites

  • Pour utiliser des modèles d'IA avec votre instance Cloud SQL, la version de maintenance de votre instance doit être R20240910.01_02 ou ultérieure. Pour mettre à niveau votre instance vers cette version, consultez Effectuer une maintenance en libre-service.

Étapes suivantes