Le SDK BigQuery AI et ML pour ABAP vous permet d'effectuer une recherche vectorielle sur vos données d'entreprise vectorisées dans BigQuery à l'aide de chaînes de recherche basées sur le langage naturel, et d'afficher les résultats à partir de vos agents ou applications basés sur ABAP.
La recherche vectorielle BigQuery vous permet d'utiliser GoogleSQL pour effectuer une recherche sémantique à l'aide d'index vectoriels afin d'obtenir des résultats approximatifs.
Avec Vector Search, vous pouvez trouver des points de données sémantiquement similaires dans de grands ensembles de données à l'aide de vecteurs ou d'embeddings de grande dimension.
Vous pouvez stocker vos embeddings vectoriels dans BigQuery, en faisant de BigQuery votre base de données vectorielle et en y appliquant la recherche de similarité vectorielle à l'aide de la fonction BigQuery VECTOR_SEARCH
.
Avant de commencer
Avant d'utiliser le SDK BigQuery AI et ML pour ABAP avec les modèles Gemini, assurez-vous que vous ou vos administrateurs avez rempli les conditions préalables suivantes:
- Vous avez activé l'API BigQuery dans votre Google Cloud projet. Pour savoir comment activer des Google Cloud API, consultez Activer des API.
- La facturation est activée pour votre Google Cloud projet.
- Vous avez généré et stocké vos représentations vectorielles continues dans un ensemble de données vectoriels dans BigQuery. Pour savoir comment procéder à partir de vos applications SAP à l'aide du SDK BigQuery AI et ML pour ABAP, consultez Générer des embeddings.
- Vous avez créé un indice vectoriel de vos données d'entreprise. Pour en savoir plus, consultez Créer un index vectoriel.
- Accordez les autorisations requises au compte de service configuré dans la clé client pour l'authentification.
- Installer le SDK BigQuery AI et ML pour ABAP dans votre environnement SAP.
Tarifs
Le SDK BigQuery AI et ML pour ABAP est proposé sans frais. Toutefois, vous êtes responsable des frais liés à l'instruction CREATE VECTOR INDEX
et à la fonction VECTOR_SEARCH
, qui utilisent la tarification de calcul BigQuery.
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.
Effectuer une recherche vectorielle dans BigQuery
Cette section explique comment effectuer une recherche sémantique vectorielle sur vos données d'entreprise stockées dans BigQuery à partir de votre application ABAP à l'aide du SDK BigQuery AI et ML pour ABAP.
Instancier la classe d'appelant de la recherche vectorielle BigQuery
Pour effectuer une recherche vectorielle à l'aide d'une chaîne de recherche, vous devez instancier la classe /GOOG/CL_BQ_VECTOR_SEARCH
.
TRY.
DATA(lo_bq_vector_search) = NEW /goog/cl_bq_vector_search( 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.
Rechercher des éléments similaires pour une chaîne de recherche
Pour exécuter des requêtes afin d'effectuer une recherche vectorielle avec la fonction BigQuery VECTOR_SEARCH
, utilisez la méthode FIND_NEAREST_NEIGHBORS
de la classe /GOOG/CL_BQ_VECTOR_SEARCH
.
L'objet de la classe /GOOG/CL_BQ_QUERY
défini avec la requête est transmis en entrée à la méthode.
lo_bq_vector_search->find_nearest_neighbors( 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. Vous pouvez transmettre la chaîne de recherche à partir du texte de la requête.
Remplacer les paramètres de recherche vectorielle
Vous pouvez définir des paramètres de recherche vectorielle (sous les définitions de fonction VECTOR_SEARCH
) 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_SEARCH_PARAMETERS
de la classe /GOOG/CL_BQ_VECTOR_SEARCH
. Les paramètres de recherche de la requête initiale sont complètement remplacés par les paramètres transmis via cette méthode.
lo_bq_vector_search->set_search_parameters( iv_top_k = TOP_K
iv_distance_type = DISTANCE_TYPE
iv_fraction_lists_to_search = 'FRACTION_LISTS_TO_SEARCH' ).
Remplacez les éléments suivants :
TOP_K
: valeurINT64
spécifiant le nombre de voisins les plus proches à renvoyer.DISTANCE_TYPE
: valeur de chaîne qui spécifie le type de métrique à utiliser pour calculer la distance entre deux vecteurs. Recherchez les valeurs probables de l'argumentDISTANCE_TYPE
sous les définitions de la fonctionVECTOR_SEARCH
.FRACTION_LISTS_TO_SEARCH
: valeur de chaîne qui spécifie le pourcentage de listes à rechercher. Recherchez les valeurs probables de l'argumentFRACTION_LISTS_TO_SEARCH
sous les options de définition de la fonctionVECTOR_SEARCH
.
Obtenir la réponse de la recherche vectorielle
Pour recevoir des réponses traitées par BigQuery ML pour les requêtes de recherche vectorielle et les présenter de manière pertinente, utilisez la classe /GOOG/CL_BQ_SEARCH_RESPONSE
.
La réponse capturée par la classe /GOOG/CL_BQ_SEARCH_RESPONSE
est associée aux requêtes effectuées via les méthodes de la classe /GOOG/CL_BQ_VECTOR_SEARCH
. 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 les voisins les plus proches pour la chaîne de recherche
Pour obtenir les voisins les plus proches de la chaîne de recherche, utilisez la méthode GET_NEAREST_NEIGHBORS
.
Le nombre de voisins renvoyés dépend de la valeur spécifiée ou définie dans le paramètre TOP_K
de la fonction VECTOR_SEARCH
dans la requête appelée.
DATA(lt_search_response) = lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query
)->get_nearest_neighbors( ).
LT_SEARCH_RESPONSE
contient également la distance de l'élément de la réponse de recherche par rapport à la chaîne de recherche pour indiquer le degré de similarité.
Obtenir le voisin le plus proche de la chaîne de recherche
Pour obtenir le voisin le plus proche de la chaîne de recherche, utilisez la méthode GET_NEAREST_NEIGHBOR
.
Dans ce cas, seul le voisin le plus proche est extrait par rapport à la chaîne de recherche, quelle que soit la valeur spécifiée ou définie dans le paramètre TOP_K
de la fonction VECTOR_SEARCH
dans la requête appelée.
DATA(ls_search_response) = lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query
)->get_nearest_neighbor( ).
LS_SEARCH_RESPONSE
contient également la distance de la réponse de recherche par rapport à la chaîne de recherche pour indiquer le degré de similarité.