Cette page vous permet de comprendre les concepts clés que vous devez connaître avant d'enregistrer un point de terminaison de modèle d'IA et d'appeler des prédictions avec la gestion des points de terminaison de modèle.
Pour enregistrer des points de terminaison de modèles distants avec AlloyDB pour PostgreSQL, consultez Enregistrer et appeler des modèles d'IA distants dans AlloyDB.
Présentation
La gestion des points de terminaison de modèle 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 cluster de bases de données et d'appeler les points de terminaison de modèle à distance à l'aide de requêtes SQL. Il fournit l'extension google_ml_integration
qui inclut des fonctions permettant d'enregistrer les métadonnées liées aux modèles d'IA avec AlloyDB. Ces métadonnées enregistrées sont utilisées pour générer des embeddings vectoriels ou appeler des prédictions.
Voici quelques exemples de types de modèles que vous pouvez enregistrer à l'aide de la gestion des points de terminaison de modèle :
- Modèles génériques et d'embedding textuel Vertex AI
- Modèles d'embedding fournis par des fournisseurs tiers, tels que Hugging Face ou OpenAI
- Modèles d'embedding de texte hébergés sur mesure, y compris les modèles auto-hébergés ou ceux disponibles via des points de terminaison privés
- Modèles génériques avec une API basée sur JSON (par exemple, le modèle
facebook/bart-large-mnli
hébergé sur Hugging Face, le modèlegemini-pro
de Vertex AI Model Garden ou les modèlesclaude
d'Anthropic)
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.
- Le modèle peut être appelé à l'aide du protocole REST.
Lorsque vous enregistrez un point de terminaison de modèle avec la gestion des points de terminaison de modèle, chaque point de terminaison est enregistré avec un ID de modèle unique que vous avez fourni comme référence au modèle.
Vous pouvez utiliser l'ID de point de terminaison du modèle pour interroger les modèles afin de :
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
vector
est activée dans la base de données. Pour en savoir plus, consultez Stocker des embeddings vectoriels.Appelez des prédictions à l'aide de SQL.
Vos applications peuvent accéder à la gestion des points de terminaison de modèle à l'aide de l'extension google_ml_integration
. Cette extension fournit les fonctions suivantes :
- La fonction SQL
google_ml.create_model()
, qui permet d'enregistrer le point de terminaison du modèle utilisé dans la fonction de prédiction ou d'embedding. - La fonction SQL
google_ml.create_sm_secret()
, qui utilise des secrets dans Secret Manager Google Cloud, où les clés API sont stockées. - La fonction SQL
google_ml.embedding()
, qui est une fonction de prédiction générant des embeddings de texte. Le type renvoyé de la fonction d'embedding estREAL[]
. - Fonction SQL
google_ml.predict_row()
qui génère des prédictions lorsque vous appelez des modèles génériques compatibles avec le format d'entrée et de sortie JSON. - Autres fonctions d'assistance qui gèrent la génération d'URL personnalisées, la génération d'en-têtes HTTP ou la transmission de fonctions de transformation.
- Fonctions permettant de gérer les points de terminaison et les secrets des modèles enregistrés.
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
Fournisseur de modèle indique les fournisseurs d'hébergement de modèles compatibles. La définition du fournisseur de modèle est facultative, mais elle permet à la gestion des points de terminaison de modèle d'identifier le fournisseur et de mettre en forme automatiquement les en-têtes pour les modèles compatibles. Le tableau suivant indique la valeur du fournisseur de modèle que vous pouvez définir en fonction du fournisseur de modèle que vous utilisez :
Fournisseur de modèles | Définir la fonction sur… |
---|---|
Vertex AI | google |
Modèles Hugging Face | hugging_face |
Modèles Anthropic | anthropic |
OpenAI | open_ai |
Autres modèles | custom |
Le fournisseur de modèle par défaut est custom
.
La méthode d'authentification compatible varie en fonction du type de fournisseur. Les modèles Vertex AI utilisent le compte de service utilisé pour installer AlloyDB Omni afin de s'authentifier, tandis que d'autres fournisseurs peuvent utiliser Secret Manager ou transmettre les informations d'authentification via des en-têtes. Pour en savoir plus, consultez Configurer l'authentification.
Type de modèle
Type de modèle indique le type de modèle d'IA. L'extension est compatible avec l'embedding de texte ainsi qu'avec tout type de modèle générique. Les types de modèles compatibles que vous pouvez définir lorsque vous enregistrez un point de terminaison de modèle sont text-embedding
et generic
.
La définition du type de modèle est facultative lors de l'enregistrement des points de terminaison de modèle génériques, car generic
est le type de modèle par défaut.
- Modèles Vertex AI préenregistrés
- La gestion des points de terminaison de modèle est compatible avec certains modèles d'embedding de texte et Vertex AI génériques en tant qu'ID de modèle préenregistrés. Vous pouvez utiliser directement l'ID du modèle pour générer des embeddings ou appeler des prédictions, en fonction du type de modèle.
Pour en savoir plus sur les modèles préenregistrés compatibles, consultez Modèles Vertex AI préenregistrés.
Par exemple, pour appeler le modèletextembedding-gecko
préenregistré, vous pouvez appeler directement le modèle à l'aide de la fonction d'embedding :SELECT google_ml.embedding( model_id => 'textembedding-gecko', content => 'AlloyDB is a managed, cloud-hosted SQL database service');
- Modèles avec compatibilité intégrée
- La gestion des points de terminaison de modèle offre une compatibilité intégrée pour certains modèles de Vertex AI, Anthropic et OpenAI. Pour les modèles d'embedding de texte avec prise en charge intégrée, AlloyDB configure automatiquement les fonctions de transformation par défaut.
- Lorsque vous enregistrez ces points de terminaison de modèle, définissez explicitement le nom qualifié. Pour obtenir la liste des modèles avec prise en charge intégrée, consultez Modèles avec prise en charge intégrée.
- Le type de modèle pour ces modèles peut être
text-embedding
ougeneric
. - Autres modèles d'embedding de texte
- Pour enregistrer un point de terminaison de modèle d'embedding de texte sans prise en charge intégrée, nous vous recommandons de créer des fonctions de transformation pour gérer les formats d'entrée et de sortie compatibles avec le modèle. Éventuellement, en fonction des exigences du modèle, vous devrez peut-être également créer une fonction d'en-tête personnalisée pour spécifier l'en-tête.
- 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'embedding de texte. 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
.
Authentification
Les types d'authentification indiquent le type d'authentification que vous pouvez utiliser pour vous connecter à la gestion des points de terminaison de modèle à l'aide de l'extension google_ml_integration
. La configuration de l'authentification 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 AlloyDB est utilisé pour l'authentification. Pour les autres modèles, une clé API ou un jeton du porteur stocké en tant que secret dans Secret Manager peuvent être utilisés avec la fonction SQL google_ml.create_sm_secret()
. Si vous transmettez l'authentification via des en-têtes, vous pouvez ignorer la définition de la méthode d'authentification.
Le tableau suivant présente les types d'authentification que vous pouvez définir :
Méthode d'authentification | Définir la fonction sur… | Fournisseur de modèles |
---|---|---|
Agent de service AlloyDB | alloydb_service_agent_iam |
Fournisseur Vertex AI |
Secret Manager | secret_manager |
des fournisseurs tiers, comme Anthropic, Hugging Face ou OpenAI. |
Fonctions de prédiction
L'extension google_ml_integration
inclut les fonctions de prédiction suivantes :
google_ml.embedding()
- Utilisé pour appeler un point de terminaison de modèle d'embedding textuel enregistré afin de générer des embeddings.
- 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. Vous devez créer une fonction d'entrée de transformation pour transformer l'entrée de la fonction de prédiction en entrée spécifique au modèle, ainsi qu'une fonction de sortie de transformation pour transformer la sortie spécifique au modèle en sortie de la fonction de prédiction.
google_ml.predict_row()
- Utilisé pour appeler un point de terminaison de modèle générique enregistré, à condition que le modèle soit compatible avec une API basée sur JSON, afin d'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 dans le 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 l'entrée attendue par le 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.
Étapes suivantes
- Configurez l'authentification pour les fournisseurs de modèles.
- Enregistrez un point de terminaison de modèle avec la gestion des points de terminaison de modèle.
- En savoir plus sur la documentation de référence sur la gestion des points de terminaison de modèle