Ce document explique comment appeler les modèles d'embedding pour générer des embeddings textuels et multimodaux à l'aide du SDK Vertex AI pour ABAP.
Les embeddings sont essentiellement des codes numériques qui représentent du texte, des images ou des vidéos de manière à capturer leur relation. Les applications utilisent ces codes pour comprendre et générer du langage, en reconnaissant même les significations et les relations les plus complexes dans votre contenu spécifique. Le processus consiste à transformer le texte, les images et les vidéos en listes de nombres, appelés vecteurs, qui sont conçus pour capturer efficacement le sens du contenu d'origine.
Voici quelques cas d'utilisation courants d'embeddings de texte :
- Recherche sémantique : recherche du texte classé par similarité sémantique.
- Classification : renvoie la classe des éléments dont les attributs de texte sont semblables au texte donné.
- Clustering : regrouper des éléments dont les attributs textuels sont semblables au texte donné.
- Détection des anomalies : renvoyer des éléments dont les attributs de texte sont le moins semblables au texte fourni.
- Interface de conversation : regroupe des groupes de phrases pouvant entraîner des réponses similaires, comme dans un espace d'embedding au niveau de la conversation.
Avec le SDK Vertex AI pour ABAP, vous pouvez générer des embeddings à partir de la logique d'application ABAP à l'aide des classes et des méthodes fournies avec le SDK. Le SDK fournit également des méthodes prêtes à l'emploi pour transférer les représentations vectorielles continues générées vers les datastores suivants:
- Cloud Storage: vous pouvez utiliser les embeddings d'un bucket Cloud Storage pour créer des index vectoriels et effectuer des recherches vectorielles.
- BigQuery: vous pouvez utiliser les représentations vectorielles continues d'un ensemble de données BigQuery comme base de données vectorielle pour vos données d'entreprise.
Vous pouvez également publier les représentations vectorielles continues dans un sujet Pub/Sub pouvant être acheminé vers un ensemble de données BigQuery ou vers un système d'abonnés.
Avant de commencer
Avant d'utiliser le SDK Vertex AI pour ABAP avec les modèles d'encapsulation, assurez-vous que vous ou vos administrateurs avez rempli les conditions préalables suivantes:
- Activer l'API Vertex AI dans votre projet Google Cloud.
- Installer le SDK Vertex AI pour ABAP dans votre environnement SAP.
- Configurer l'authentification pour accéder à l'API Vertex AI.
- Configurer les paramètres de génération de modèle. Pour générer des embeddings, seuls les paramètres suivants sont obligatoires: clé de modèle, ID de modèle, nom de clé Google Cloud, ID de région Google Cloud et ID de l'éditeur du LLM.
Générer des embeddings
Cette section explique comment générer des embeddings à l'aide du SDK Vertex AI pour ABAP.
Instancier la classe d'embeddings multimodaux
Pour appeler les modèles d'embeddings multimodaux Vertex AI à l'aide d'entrées textuelles ou multimodales, vous pouvez utiliser la classe /GOOG/CL_EMBEDDINGS_MODEL
.
Vous instanciez la classe en transmettant la clé de modèle configurée dans les paramètres de génération du modèle.
DATA(lo_embeddings_model) = NEW /goog/cl_embeddings_model( iv_model_key = 'MODEL_KEY' ).
Remplacez MODEL_KEY
par le nom de la clé du modèle, qui est configuré dans les paramètres de génération du modèle.
Générer des embeddings textuels
Pour générer des embeddings pour un extrait de texte, vous pouvez utiliser la méthode GEN_TEXT_EMBEDDINGS
de la classe /GOOG/CL_EMBEDDINGS_MODEL
.
Vous pouvez également spécifier une dimension pour les représentations vectorielles continues de sortie.
DATA(ls_addln_params) = VALUE /goog/cl_embeddings_model=>ty_addln_params(
output_dimensionality = 'DIMENSION' ).
DATA(lt_embeddings) = lo_embeddings_model->gen_text_embeddings(
iv_content = 'INPUT_TEXT'
is_addln_params = ls_addln_params
)->get_vector( ).
Remplacez les éléments suivants :
DIMENSION
: facultatif. Dimensionnalité des représentations vectorielles continues de sortie. La dimension par défaut est768
.INPUT_TEXT
: texte pour lequel des embeddings doivent être générés.
Vous pouvez également générer des embeddings pour un extrait de texte à l'aide d'un modèle prêt à l'emploi /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
fourni avec le SDK.
Ce modèle vous permet de capturer des informations schématiques spécifiques à l'entreprise dans le fichier d'embeddings généré, ainsi que les embeddings.
Pour générer des embeddings pour un extrait de texte, en fonction du modèle /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
, vous pouvez utiliser la méthode GEN_TEXT_EMBEDDINGS_BY_STRUCT
.
DATA(ls_embedding_template) = VALUE /goog/cl_embeddings_model=>ty_embeddings_template(
id = ENTITY_ID
content = INPUT_TEXT
source = SOURCE_MODULE ).
DATA(ls_addln_params) = VALUE /goog/cl_embeddings_model=>ty_addln_params(
output_dimensionality = 'DIMENSION' ).
DATA(lt_embeddings) = lo_embeddings_model->gen_text_embeddings_by_struct(
is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->get_vector_by_struct( ).
Remplacez les éléments suivants :
ENTITY_ID
: ID de l'entité pour l'enregistrement des représentations vectorielles continues.INPUT_TEXT
: texte pour lequel des embeddings doivent être générés.SOURCE_MODULE
: module source du contenu des représentations vectorielles continues.DIMENSION
: facultatif. Dimensionnalité des représentations vectorielles continues de sortie. La dimension par défaut est768
.
Générer des embeddings d'images
Pour générer des embeddings pour une image d'entrée, vous pouvez utiliser la méthode GEN_IMAGE_EMBEDDINGS
de la classe /GOOG/CL_EMBEDDINGS_MODEL
.
Vous pouvez transmettre les données brutes d'une image ou l'URI Cloud Storage d'un fichier image.
Vous pouvez également spécifier un texte contextuel pour l'image et une dimension pour les représentations vectorielles continues de sortie.
DATA(ls_image) = VALUE /goog/cl_embeddings_model=>ty_image( gcs_uri = 'IMAGE_URI' ).
DATA(lt_embeddings) = lo_embeddings_model->gen_image_embeddings( iv_image = ls_image
iv_contextual_text = 'CONTEXTUAL_TEXT'
)->get_vector( ).
Remplacez les éléments suivants :
IMAGE_URI
: URI Cloud Storage de la vidéo cible pour laquelle vous souhaitez obtenir des embeddings.CONTEXTUAL_TEXT
: facultatif. Contexte et signification supplémentaires du contenu d'une image pour le modèle d'embeddings.
Vous pouvez également générer des embeddings pour les images à l'aide d'un modèle prêt à l'emploi /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
fourni avec le SDK.
Ce modèle vous permet de capturer des informations schématiques spécifiques à l'entreprise dans le fichier d'embeddings généré, ainsi que les embeddings.
Pour générer des embeddings pour une image, en fonction du modèle /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
, vous pouvez utiliser la méthode GEN_IMAGE_EMBEDDINGS_BY_STRUCT
.
DATA(ls_image) = VALUE /goog/cl_embeddings_model=>ty_image( gcs_uri = 'IMAGE_URI' ).
DATA(ls_embedding_template) = VALUE /goog/cl_embeddings_model=>ty_embeddings_template(
id = ENTITY_ID
content = INPUT_TEXT
source = SOURCE_MODULE ).
DATA(lt_embeddings) = lo_embeddings_model->gen_image_embeddings_by_struct(
iv_image = ls_image
is_input = ls_embedding_template
)->get_vector_by_struct( ).
Remplacez les éléments suivants :
IMAGE_URI
: URI Cloud Storage de la vidéo cible pour laquelle vous souhaitez obtenir des embeddings.ENTITY_ID
: ID de l'entité pour l'enregistrement des représentations vectorielles continues.INPUT_TEXT
: texte pour lequel des embeddings doivent être générés.SOURCE_MODULE
: module source du contenu des représentations vectorielles continues.
Pour récupérer des représentations vectorielles continues pour un texte contextuel, utilisez le code suivant:
DATA(lt_context_embeddings) = lo_embeddings_model->get_context_text_vector( ).
Cette option n'est disponible que pour la création d'un seul embedding d'image.
Générer des embeddings de vidéos
Pour générer des embeddings pour une vidéo d'entrée, vous pouvez utiliser la méthode GET_VIDEO_EMBEDDINGS
de la classe /GOOG/CL_EMBEDDINGS_MODEL
.
Vous pouvez transmettre l'URI Cloud Storage d'un fichier vidéo, ainsi que des décalages de début et de fin facultatifs en secondes.
Vous pouvez également spécifier un texte contextuel pour la vidéo et une dimension pour les embeddings de sortie.
DATA(ls_video) = VALUE /goog/cl_embeddings_model=>ty_video( gcs_uri = 'VIDEO_URI' ).
DATA(lt_embeddings) = lo_embeddings_model->gen_video_embeddings( iv_video = ls_video
iv_contextual_text = 'CONTEXTUAL_TEXT'
iv_dimension = 'DIMENSION'
)->get_vector( ).
VIDEO_URI
: URI Cloud Storage de la vidéo cible pour laquelle vous souhaitez obtenir des embeddings.CONTEXTUAL_TEXT
: facultatif. Contexte et signification supplémentaires du contenu d'une vidéo pour le modèle d'embeddings.DIMENSION
: facultatif. Dimensionnalité des représentations vectorielles continues de sortie. Les dimensions disponibles sont les suivantes:128
,256
,512
et1408
(par défaut).
La méthode GET_VECTOR
ne renvoie les représentations vectorielles continues que pour le premier segment de la vidéo.
Pour récupérer l'encapsulation du texte contextuel, utilisez le code suivant:
DATA(lt_context_embeddings) = lo_embeddings_model->get_context_text_vector( ).
Cette option n'est disponible que pour la création d'un seul embedding vidéo.
Rassembler tous les embeddings générés
Pour collecter tous les embeddings générés dans une table interne de type /GOOG/CL_EMBEDDINGS_MODEL=>TY_T_EMBEDDINGS_TEMPLATE
, vous pouvez utiliser la méthode COLLECT
de la classe /GOOG/CL_EMBEDDINGS_MODEL
en combinaison avec les méthodes GEN_TEXT_EMBEDDINGS_BY_STRUCT
et GEN_IMAGE_EMBEDDINGS_BY_STRUCT
.
Cela est utile lorsque vous devez générer des représentations vectorielles continues pour un tableau d'éléments (text/image
) et que vous souhaitez générer des représentations vectorielles continues dans une itération de boucle et obtenir toutes les représentations vectorielles continues en une seule fois dans une table interne après l'itération. La méthode GET_VECTOR_BY_TABLE
permet d'obtenir la table interne finale des embeddings.
LOOP AT ....
lo_embeddings_model->gen_text_embeddings_by_struct( is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->collect( ).
ENDLOOP.
DATA(lt_embeddings) = lo_embeddings_model->get_vector_by_table( ).
Envoyer des embeddings vers un datastore
Vous pouvez envoyer les représentations vectorielles continues générées vers un bucket Cloud Storage ou un ensemble de données BigQuery à l'aide du modèle fourni avec le SDK.
Stocker des embeddings dans Cloud Storage
Pour envoyer les embeddings générés à un bucket Cloud Storage, vous pouvez utiliser la méthode SEND_STRUCT_TO_GCS
de la classe /GOOG/CL_EMBEDDINGS_MODEL
.
Avant d'envoyer des embeddings vers un bucket Cloud Storage, assurez-vous de disposer d'un bucket Cloud Storage vers lequel les envoyer.
Envoyer des embeddings individuels vers un bucket Cloud Storage
L'exemple de code suivant montre comment envoyer des représentations vectorielles continues d'images individuelles vers un bucket Cloud Storage:
DATA(ls_image) = VALUE /goog/cl_embeddings_model=>ty_image( gcs_uri = 'IMAGE_URI' ).
lo_embeddings_model->gen_image_embeddings_by_struct( iv_image = ls_image
is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->send_struct_to_gcs( iv_key = 'CLIENT_KEY'
iv_bucket_name = 'BUCKET_NAME'
iv_file_name = 'FILE_NAME' ).
Remplacez les éléments suivants :
IMAGE_URI
: URI Cloud Storage de la vidéo cible pour laquelle vous souhaitez obtenir des embeddings.CLIENT_KEY
: clé cliente pour appeler l'API Cloud Storage.BUCKET_NAME
: nom du bucket Cloud Storage cible.FILE_NAME
: nom de fichier des représentations vectorielles continues.
Envoyer les embeddings collectés vers un bucket Cloud Storage
L'exemple de code suivant montre comment envoyer des embeddings collectés vers un bucket Cloud Storage:
LOOP AT ....
lo_embeddings_model->gen_text_embeddings_by_struct( is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->collect( ).
ENDLOOP.
lo_embeddings_model->send_struct_to_gcs( iv_key = 'CLIENT_KEY'
iv_bucket_name = 'BUCKET_NAME'
iv_file_name = 'FILE_NAME' ).
Remplacez les éléments suivants :
CLIENT_KEY
: clé cliente pour appeler l'API Cloud Storage.BUCKET_NAME
: nom du bucket Cloud Storage cible.FILE_NAME
: nom de fichier des représentations vectorielles continues.
Stocker des embeddings dans BigQuery
Pour envoyer les embeddings générés à un ensemble de données BigQuery, vous pouvez utiliser la méthode SEND_STRUCT_TO_BQ
de /GOOG/CL_EMBEDDINGS_MODEL
.
Avant d'envoyer les embeddings vers BigQuery, assurez-vous de disposer d'un ensemble de données BigQuery et d'une table vers laquelle vous souhaitez envoyer les embeddings.
Envoyer des embeddings individuels à un ensemble de données BigQuery
L'exemple de code suivant montre comment envoyer des représentations vectorielles continues d'images individuelles à un ensemble de données BigQuery:
lo_embeddings_model->gen_image_embeddings_by_struct( iv_image = ls_image
is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->send_struct_to_bq( iv_key = 'CLIENT_KEY'
iv_dataset_id = 'DATASET_ID'
iv_table_id = 'TABLE_ID' ).
Remplacez les éléments suivants :
CLIENT_KEY
: clé cliente pour appeler l'API BigQuery.DATASET_ID
: ID d'ensemble de données BigQuery.TABLE_ID
: ID de table BigQuery
Envoyer les embeddings collectés vers un ensemble de données BigQuery
L'exemple de code suivant montre comment envoyer des embeddings collectés à un ensemble de données BigQuery:
LOOP AT ....
lo_embeddings_model->gen_text_embeddings_by_struct( is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->collect( ).
ENDLOOP.
lo_embeddings_model->send_struct_to_bq( iv_key = 'CLIENT_KEY'
iv_dataset_id = 'DATASET_ID'
iv_table_id = 'TABLE_ID' ).
Remplacez les éléments suivants :
CLIENT_KEY
: clé cliente pour appeler l'API BigQuery.DATASET_ID
: ID d'ensemble de données BigQuery.TABLE_ID
: ID de table BigQuery
Publier des embeddings dans un sujet Pub/Sub
Pour publier les embeddings générés dans un sujet Pub/Sub, vous pouvez utiliser la méthode SEND_STRUCT_TO_PUBSUB
de la classe /GOOG/CL_EMBEDDINGS_MODEL
.
Cela peut être utile dans les cas où vous devez créer vos propres pipelines personnalisés pour stocker des représentations vectorielles continues et créer des processus métier ultérieurs.
Avant d'envoyer les représentations vectorielles continues à un sujet Pub/Sub, assurez-vous de disposer d'un sujet Pub/Sub auquel vous souhaitez les envoyer.
Publier des embeddings individuels dans un sujet Pub/Sub
L'exemple de code suivant montre comment publier des représentations vectorielles continues d'images individuelles dans un sujet Pub/Sub:
lo_embeddings_model->gen_image_embeddings_by_struct( iv_image = ls_image
is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->send_struct_to_pubsub( iv_key = 'CLIENT_KEY'
iv_topic_id = 'TOPIC_ID' ).
Remplacez les éléments suivants :
CLIENT_KEY
: clé cliente pour appeler l'API Pub/Sub.TOPIC_ID
: ID de sujet Pub/Sub
Publier les embeddings collectés dans un sujet Pub/Sub
L'exemple de code suivant montre comment publier des embeddings collectés dans un sujet Pub/Sub:
LOOP AT ....
lo_embeddings_model->gen_text_embeddings_by_struct( is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->collect( ).
ENDLOOP.
lo_embeddings_model->send_struct_to_pubsub( iv_key = 'CLIENT_KEY'
iv_topic_id = 'TOPIC_ID' ).
Remplacez les éléments suivants :
CLIENT_KEY
: clé cliente pour appeler l'API Pub/Sub.TOPIC_ID
: ID de sujet Pub/Sub
Étape suivante
Découvrez le développement d'applications avec l'édition sur site ou n'importe quelle édition cloud du SDK ABAP pour Google Cloud.
Posez vos questions concernant le SDK Vertex AI pour ABAP et discutez de celui-ci avec la communauté sur les forums Cloud.