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

Cette page décrit une version preview qui vous permet d'essayer d'enregistrer un point de terminaison de modèle d'IA et d'invoquer des prédictions avec la gestion des points de terminaison de modèle dans AlloyDB Omni. Pour utiliser des modèles d'IA dans des environnements de production, consultez Créer des applications d'IA générative à l'aide d'AlloyDB AI et Utiliser des embeddings vectoriels.

Pour enregistrer des points de terminaison de modèle distants auprès d'AlloyDB, consultez Enregistrer et appeler des modèles d'IA distants dans AlloyDB.

Présentation

L'aperçu de 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 base de données, puis d'interagir avec les modèles à l'aide de requêtes SQL. Il fournit l'extension google_ml_integration qui inclut des fonctions permettant d'ajouter et d'enregistrer les métadonnées de point de terminaison de modèle associées aux modèles, puis d'utiliser les modèles 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 d'embedding textuel Vertex AI
  • Modèles d'encapsulation fournis par des fournisseurs tiers, tels qu'Anthropic, Hugging Face ou OpenAI.
  • Modèles d'embeddings textuels hébergés par l'utilisateur
  • 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 ou le modèle gemini-pro de Vertex AI Model Garden)

Fonctionnement

Vous pouvez utiliser la gestion des points de terminaison de modèle pour enregistrer un point de terminaison de modèle conforme aux éléments suivants:

  • L'entrée et la sortie 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 associé à un ID de modèle unique que vous avez fourni en tant que référence au modèle. Vous pouvez utiliser cet ID de modèle pour interroger des modèles:

  • Générez des embeddings pour traduire des requêtes de texte en vecteurs numériques. Vous pouvez stocker les embeddings générés en tant que 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 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 le gestionnaire de secrets Google Cloud, où les clés API sont stockées.
  • La fonction SQL google_ml.embedding(), qui est une fonction de prédiction qui génère des représentations vectorielles continues de texte.
  • 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 pour vos modèles génériques.
  • Fonctions permettant de gérer les points de terminaison et les secrets du modèle enregistrés.

Concepts clés

Avant de commencer à utiliser la gestion des points de terminaison des modèles, vous devez comprendre les concepts requis pour vous connecter aux modèles et les utiliser.

Fournisseur de modèles {: #model-provider}̦

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

Fournisseur de modèles Définir dans la fonction comme…
Vertex AI google
Modèles Hugging Face custom
Modèles Anthropic custom
Autres modèles custom
OpenAI open_ai

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

La méthode d'authentification prise en charge varie selon le type de fournisseur. Les modèles Vertex AI s'authentifient à l'aide du compte de service AlloyDB, tandis que d'autres fournisseurs peuvent utiliser Secret Manager. Pour en savoir plus, consultez la section 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 textuel, ainsi qu'avec tout type de modèle générique. Les types de modèles compatibles que vous pouvez définir lors de l'enregistrement d'un point de terminaison de modèle sont text-embedding et generic. Définir le type de modèle est facultatif lorsque vous enregistrez des points de terminaison de modèle génériques, car generic est le type de modèle par défaut.

Modèles d'embeddings de texte avec prise en charge intégrée
La gestion des points de terminaison du modèle est compatible avec toutes les versions du modèle textembedding-gecko de Vertex AI et du modèle text-embedding-ada-002 d'OpenAI. Pour enregistrer ces points de terminaison de modèle, utilisez la fonction google_ml.create_model(). AlloyDB configure automatiquement des fonctions de transformation par défaut pour ces modèles.
Le type de modèle de ces modèles est text-embedding.
Autres modèles d'embeddings textuels
Pour les autres modèles d'embedding textuel, 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 de 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 en déduire la sortie finale.
Le type de modèle de 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 du modèle à l'aide de l'extension google_ml_integration. Le paramétrage de l'authentification est facultatif et n'est requis 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, la clé API ou le jeton 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 types d'authentification que vous pouvez définir:

Méthode d'authentification Définir dans la fonction comme… Fournisseur de modèles
Agent de service AlloyDB alloydb_service_agent_iam Fournisseur Vertex AI
Secret Manager secret_manager des fournisseurs tiers, tels qu'Anthropic, Hugging Face ou OpenAI ;

Fonctions de prédiction

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

google_ml.embedding()
Permet d'appeler un point de terminaison de modèle d'embedding textuel enregistré pour générer des embeddings. Il est compatible avec le modèle textembedding-gecko de Vertex AI et le modèle text-embedding-ada-002 d'OpenAI.
Pour les modèles d'encapsulation 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 d'entrée de transformation pour transformer l'entrée de la fonction de prédiction en entrée spécifique au modèle, et 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()
Permet d'appeler un point de terminaison de modèle générique enregistré, à condition qu'il prenne en charge l'API basée sur JSON, pour appeler des prédictions.

Fonctions de transformation

Les fonctions de transformation modifient l'entrée en un format compris par le modèle 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 du 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'encapsulation 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 en savoir plus sur la création de 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êtes HTTP génère la sortie sous forme de paires clé-valeur JSON 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 en savoir plus sur la création d'une fonction de génération d'en-tête, consultez Exemple de fonction de génération d'en-tête.

Étape suivante