Le SDK BigQuery AI et ML pour ABAP vous permet de générer et de gérer des représentations vectorielles continues sur vos données d'entreprise à la source dans BigQuery.
BigQuery peut servir de base de données vectorielle économique pour utiliser ses fonctionnalités de recherche vectorielle. Vous pouvez ainsi stocker et interroger des représentations vectorielles continues (embeddings) directement dans l'entrepôt de données, ce qui peut réduire le besoin d'une infrastructure de base de données vectorielle distincte.
Vous pouvez générer des représentations vectorielles continues pour vos données d'entreprise stockées dans vos ensembles de données BigQuery à l'aide de la fonction BigQuery ML.GENERATE_EMBEDDING
.
Pour accéder aux modèles d'embedding sur Vertex AI, créez un modèle distant dans BigQuery ML qui représente le point de terminaison du modèle Vertex AI. Une fois que vous avez créé un modèle distant basé sur le modèle Vertex AI que vous souhaitez utiliser, vous pouvez accéder aux fonctionnalités de ce modèle en exécutant la fonction BigQuery ML sur le modèle distant.
Avec le SDK BigQuery AI et ML pour ABAP, vous pouvez utiliser des modèles d'embedding pour les opérations suivantes:
- Générer et stocker des embeddings pour des données textuelles
- Générer et stocker des embeddings pour les données multimodales
- Mettre à jour votre base de données vectorielle BigQuery avec vos données d'entreprise les plus récentes
Avant de commencer
Avant d'utiliser le SDK BigQuery AI et ML pour ABAP avec les modèles d'embedding, assurez-vous que vous ou vos administrateurs avez rempli les conditions préalables suivantes:
- Vous avez activé l'API BigQuery, l'API BigQuery Connection et l'API Vertex AI dans votre Google Cloud projet. Pour savoir comment activer des Google Cloud API, consultez Activer des API.
- Assurez-vous que la facturation est activée pour votre Google Cloud projet.
- Le compte de service configuré dans la clé client pour l'authentification doit disposer des autorisations requises.
- Installer le SDK BigQuery AI et ML pour ABAP dans votre environnement SAP.
- Vous avez créé un modèle distant pour les modèles d'embeddings compatibles.
Tarifs
Le SDK BigQuery AI et ML pour ABAP est proposé sans frais. Toutefois, vous êtes responsable des frais facturés sur les plates-formes BigQuery et Vertex AI:
- BigQuery ML: les données que vous traitez dans BigQuery sont facturées.
- Vertex AI: des frais vous sont facturés pour les appels au service Vertex AI représenté par le modèle distant.
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Pour en savoir plus sur les tarifs de BigQuery, consultez la page Tarifs de BigQuery.
Pour en savoir plus sur les tarifs de Vertex AI, consultez la page Tarifs de Vertex AI.
Générer des embeddings dans BigQuery
Cette section explique comment générer des embeddings pour les données d'entreprise stockées dans BigQuery à partir de la logique de votre application ABAP à l'aide du SDK BigQuery AI et ML pour ABAP.
Instancier la classe d'appelant des représentations vectorielles continues BigQuery
Pour appeler les modèles de texte et multimodaux de représentations vectorielles continues sur des ensembles de données BigQuery, vous instanciez la classe /GOOG/CL_BQ_GENERATIVE_MODEL
.
TRY.
DATA(lo_bqml_embeddings_model) = NEW /goog/cl_bq_embeddings_model( iv_key = 'CLIENT_KEY' ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
cl_demo_output=>display( lo_cx_sdk->get_text( ) ).
ENDTRY.
Remplacez CLIENT_KEY
par la clé client que vous avez configurée pour l'authentification à Google Cloud lors de la configuration de l'authentification.
Générer des embeddings
Pour exécuter des requêtes afin de générer des représentations vectorielles continues pour le texte et les données multimodales avec la fonction BigQuery ML.GENERATE_EMBEDDING
, utilisez la méthode GENERATE_EMBEDDINGS
de la classe /GOOG/CL_BQ_EMBEDDINGS_MODEL
.
L'objet de la classe /GOOG/CL_BQ_QUERY
défini avec la requête est transmis en entrée à la méthode.
lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query ).
LO_BQ_QUERY
est la référence de la classe /GOOG/CL_BQ_QUERY
après avoir défini la requête.
Remplacer les paramètres de génération de modèle
Vous pouvez définir des paramètres de génération de modèles d'encapsulation dans la requête enregistrée dans BigQuery ou dans le texte de la requête transmise.
Toutefois, si vous devez remplacer les paramètres de la même requête à partir de la logique d'application ABAP, vous pouvez utiliser la méthode SET_GENERATION_CONFIG
de la classe /GOOG/CL_BQ_EMBEDDINGS_MODEL
.
Les paramètres de génération de la requête initiale sont remplacés par les paramètres transmis via cette méthode.
lo_bqml_embeddings_model->set_generation_config( iv_flatten_json_output = 'IS_FLATTEN_JSON_OUTPUT'
iv_task_type = 'TASK_TYPE'
iv_output_dimensionality = 'OUTPUT_DIMENSIONALITY' ).
Remplacez les éléments suivants :
IS_FLATTEN_JSON_OUTPUT
: valeur booléenne qui détermine si le contenu JSON renvoyé par la fonction est analysé dans des colonnes distinctes.TASK_TYPE
: valeur qui spécifie l'application en aval prévue pour aider le modèle à produire des embeddings de meilleure qualité. Recherchez les valeurs probables de l'argumenttask_type
sous Syntaxe d'entrée pourML.GENERATE_EMBEDDING
.OUTPUT_DIMENSIONALITY
: valeur qui spécifie le nombre de dimensions à utiliser lors de la génération d'embeddings. Recherchez les valeurs probables de l'argumentoutput_dimensionality
sous Syntaxe d'entrée pourML.GENERATE_EMBEDDING
.
Obtenir les résultats des requêtes pour générer des représentations vectorielles continues
Pour recevoir des réponses traitées de BigQuery ML afin de générer des représentations vectorielles continues et de les présenter de manière pertinente, le SDK utilise des méthodes en chaîne dans la classe /GOOG/CL_BQ_GENERATIVE_MODEL
. Vous pouvez ainsi accéder directement à la réponse dans une seule instruction sans avoir besoin de variables pour stocker les résultats intermédiaires.
Obtenir des vecteurs d'embedding de texte
Pour obtenir les vecteurs d'embedding de texte pour chaque ligne de la logique de votre application ABAP, utilisez la méthode GET_TEXT_EMBEDDING_VECTORS
.
DATA(lt_embeddings) = lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query
)->get_text_embedding_vectors( ).
Obtenir l'état des représentations vectorielles continues de texte
Pour obtenir l'état de chaque génération d'embeddings de texte pour chaque ligne, utilisez la méthode GET_TEXT_EMBEDDING_STATUS
.
Si l'opération a réussi, l'état est vide.
DATA(lt_embeddings_status) = lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query
)->get_text_embedding_status( ).
Obtenir l'état d'une requête
Chaque requête dans BigQuery est exécutée en tant que tâche de requête.
Pour obtenir l'état de la tâche de requête d'embeddings, utilisez la méthode GET_QUERY_JOB_STATUS
.
lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query
)->get_query_job_status(
IMPORTING ev_job_complete = DATA(lv_job_complete)
ev_job_creation_reason = DATA(lv_job_creation_reason)
ev_job_id = DATA(lv_job_id)
ev_query_id = DATA(lv_query_id)
ev_total_bytes_processed = DATA(lv_total_bytes_processed)
ev_total_rows = DATA(lv_total_rows) ).
La méthode renvoie les métriques d'état de la tâche suivantes:
- Indique si la requête est terminée ou non.
- Raison pour laquelle une tâche a été créée.
- Référence à la tâche créée pour exécuter la requête.
- ID généré automatiquement pour la requête.
- Nombre total d'octets traités pour cette requête.
- Nombre total de lignes dans l'ensemble de résultats de la requête complète.
Obtenir les erreurs de requête
Pour récupérer les erreurs de la tâche de requête (le cas échéant), utilisez la méthode GET_QUERY_JOB_ERRORS
.
DATA(lt_query_job_errors) = lo_bqml_embeddings_model->execute_query( io_query = lo_bq_query
)->get_query_job_errors( ).
Obtenir la réponse globale pour les représentations vectorielles continues de texte
Pour obtenir un tableau de réponses global pour la requête d'embeddings textuels que vous exécutez, utilisez la méthode GET_TEXT_EMBEDDING_RESPONSE
.
Une réponse n'est renseignée que lorsque le paramètre de génération de modèle FLATTEN_JSON_OUTPUT
est défini sur TRUE
dans la requête.
DATA(lt_text_embeddings_response) = lo_bqml_embeddings_model->execute_query( io_query = lo_bq_query
)->get_text_embedding_response( ).