Vertex AI Vector Search pour les applications SAP intelligentes

Ce document décrit une architecture de référence pour créer des applications SAP intelligentes avec Vertex AI Vector Search à l'aide du SDK Vertex AI pour ABAP. Avec Vector Search, vous pouvez créer des applications SAP qui vont au-delà de la mise en correspondance des mots clés, en utilisant la compréhension sémantique pour aider les utilisateurs à trouver précisément ce dont ils ont besoin dans leurs données d'entreprise. Vous pouvez également utiliser la recherche vectorielle avec la génération augmentée de récupération (RAG) pour créer des applications d'IA puissantes dans votre environnement SAP. La génération augmentée par récupération améliore la qualité des réponses de votre modèle d'IA en fournissant un contexte pertinent à partir de vos données d'entreprise, ce qui garantit que le modèle d'IA reste ancré à vos données d'entreprise.

Ce document s'adresse aux développeurs ABAP, aux architectes de solutions SAP et aux architectes cloud. Dans ce document, nous partons du principe que vous connaissez la terminologie de la recherche vectorielle.

Architecture

Le schéma suivant illustre une architecture de référence pour l'utilisation de la recherche vectorielle dans le paysage d'applications SAP:

Vector Search pour SAP

Cette architecture de référence comprend les composants suivants:

# Composant Détails
1 Point de départ de la requête dans SAP

Lancez une recherche à l'aide de l'une des options suivantes:

  • Service OData: fournissez une requête de recherche via le service OData dans votre application frontale SAP.
  • Logique d'application SAP: fournissez une requête de recherche via la logique d'application SAP, comme les améliorations, les rapports ou les tâches en arrière-plan de SAP.
2 SDK Vertex AI pour ABAP Le module Vector Search Invoker du SDK effectue une recherche vectorielle en fonction de votre requête de recherche.
3 Vertex AI Vector Search

Les données d'entreprise sont indexées en tant que représentations vectorielles continues et organisées dans un indice déployé.

Lorsqu'une requête de recherche est saisie, une recherche vectorielle est effectuée sur ces données indexées pour trouver les correspondances les plus proches.

Ces correspondances les plus proches sont ensuite renvoyées aux applications SAP, ce qui permet d'utiliser des fonctionnalités telles que la recherche sémantique et la génération augmentée.

Produits utilisés

Cette architecture de référence utilise les produits Google Cloud suivants :

  • SDK Vertex AI pour ABAP: fournit des modules et des ensembles d'outils pour créer des applications axées sur l'IA en mode natif à partir d'ABAP.
  • Vertex AI Vector Search: permet d'effectuer des recherches à grande échelle et efficaces dans vos données d'entreprise à l'aide de représentations vectorielles continues. Cela signifie que vous pouvez effectuer des recherches par sens et contexte, et pas seulement par mots clés.

Cas d'utilisation

La liste suivante présente les cas d'utilisation de Vector Search dans les applications SAP:

  • Créer des moteurs de recommandation: analysez les entrées et le comportement des utilisateurs pour suggérer des éléments pertinents dans les entreprises SAP, tels que des produits, des codes d'entreprise et des comptes GL, en allant au-delà de la simple mise en correspondance des mots clés.
  • Créer des pipelines RAG: accédez à des informations provenant de diverses sources et intégrez-les pour enrichir le contexte d'un modèle d'IA avec des informations SAP et non SAP pertinentes afin de générer des réponses de modèle précises et pertinentes.
  • Effectuer une recherche sémantique d'images: activez la recherche d'images visuellement similaires, utile pour les achats, la découverte visuelle et l'analyse d'images médicales.
  • Effectuer une recherche sémantique de texte: comprendre le sens et le contexte du texte pour améliorer la précision de la recherche dans l'analyse des commentaires juridiques, universitaires et des clients.
  • Effectuer une recherche en langage naturel: fournissez des réponses instantanées aux questions des utilisateurs, en améliorant les questions fréquentes, les bases de connaissances et les outils pédagogiques.
  • Effectuer une détection d'anomalies: identifiez les tendances inhabituelles et les menaces potentielles dans les domaines de la finance, de la sécurité réseau et de la fabrication.

Considérations de conception

Cette section fournit des conseils pour vous aider à utiliser cette architecture de référence afin de développer des architectures qui vous aident à répondre à vos exigences spécifiques en termes de sécurité, de confidentialité, de conformité, de coût et de performances.

Sécurité, confidentialité et conformité

La sécurité et la conformité sont des responsabilités partagées. Pour en savoir plus, consultez la page Responsabilité partagée de Vertex AI.

Pour en savoir plus sur l'engagement de Google Cloud en matière de confidentialité des données, consultez le Centre de ressources sur la confidentialité.

Optimisation des coûts

Pour réduire vos coûts, envisagez de choisir des tailles de fragments et des représentations vectorielles continues de dimension inférieure pour vos index. Vous pourrez ainsi utiliser une machine de calcul plus petite pour les déployer.

Vertex AI est une offre facturable de Google Cloud. Pour en savoir plus sur la tarification, consultez les pages Tarifs de Vertex AI et Tarifs de Vector Search. Pour générer une estimation des coûts en fonction de votre utilisation prévue, utilisez le simulateur de coût.

Optimisation des performances

Pour améliorer la latence de recherche de grands ensembles de données, envisagez de choisir des tailles de partitions plus élevées lors de la création de votre index et des machines de calcul hautes performances lors du déploiement de votre index. Pour en savoir plus sur les tailles de segments pour un index, consultez la section Taille de l'index.

Pour améliorer la pertinence des réponses de recherche, générez des représentations vectorielles continues de vos données d'entreprise dans des dimensions plus élevées. Les machines de calcul et les dimensions d'encapsulation plus élevées sont coûteuses. Pour générer une estimation des coûts en fonction de votre utilisation prévue, utilisez le simulateur de coût.

Avant de commencer

Avant d'utiliser Vector Search dans votre paysage d'applications SAP, assurez-vous que vous ou vos administrateurs avez effectué les opérations suivantes:

Créer et gérer un index vectoriel

Pour utiliser Vector Search, vous devez indexer et déployer vos données d'entreprise sous forme d'embeddings vectoriels. Pour ce faire, procédez comme suit:

  1. Générez des embeddings vectoriels à l'aide de modèles d'IA d'embeddings textuels ou multimodaux dans Vertex AI ou toute autre plate-forme.
  2. Importez les embeddings dans un bucket Cloud Storage.
  3. Créez un indice vectoriel avec le bucket Cloud Storage contenant les représentations vectorielles continues.
  4. Créez un point de terminaison d'index et déployez l'index vectoriel sur ce point de terminaison pour effectuer une recherche sémantique sur vos données d'entreprise indexées.

Vous pouvez effectuer les étapes précédentes à partir de la console Google Cloud ou utiliser le SDK Vertex AI pour ABAP pour les déclencher à partir de votre environnement SAP.

Pour obtenir les résultats de recherche vectorielle les plus précis pour une solution d'IA d'entreprise, vous devez également mettre à jour l'index avec les données d'entreprise les plus récentes. Pour en savoir plus, consultez Mettre à jour et recréer un index vectoriel.

Appeler la recherche vectorielle à partir d'applications SAP

Depuis vos applications SAP, vous pouvez utiliser le SDK Vertex AI pour ABAP pour effectuer des recherches sémantiques sur vos données d'entreprise indexées de différentes manières:

Vous pouvez utiliser les résultats de la recherche vectorielle pour enrichir le contexte de votre modèle d'IA avec le contexte de l'entreprise à l'aide de la méthode RAG. Les réponses du modèle restent ainsi ancrées dans vos données d'entreprise. Vous pouvez également utiliser ces résultats comme entrée pour des processus métier ou pour générer des recommandations.

Recherche sémantique à l'aide de requêtes de texte

Pour effectuer une recherche sur votre texte indexé et vos données multimodales à l'aide de requêtes textuelles, vous pouvez utiliser la méthode FIND_NEIGHBORS_BY_STRING de la classe /GOOG/CL_VECTOR_SEARCH du SDK Vertex AI pour ABAP. Vous pouvez enchaîner l'appel de la méthode GET_NEAREST_NEIGHBORS avec l'appel de la méthode FIND_NEIGHBORS_BY_STRING pour obtenir la réponse de recherche.

L'exemple de code suivant montre comment effectuer une recherche sémantique à l'aide d'invites textuelles:

TRY.
    DATA(lo_vector_search) = NEW /goog/cl_vector_search( iv_search_key  = 'SEARCH_KEY' ).
    DATA(lt_vector_search_response) = lo_vector_search->find_neighbors_by_string(
                                                          iv_search_string         = 'SEARCH_STRING'
                                                          iv_embeddings_model_key  = 'MODEL_KEY'
                                                          iv_neighbor_count        = NEIGHBOR_COUNT
                                                     )->get_nearest_neighbors( ).
    cl_demo_output=>display( lt_vector_search_response ).
  CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
    cl_demo_output=>display( 'Search not successful.' && lo_cx_sdk->get_text( ) ).

ENDTRY.

Remplacez les éléments suivants :

  • SEARCH_KEY: clé de recherche, configurée dans les paramètres de recherche vectorielle.
  • SEARCH_STRING: requête de texte à saisir.
  • MODEL_KEY: clé du modèle configurée dans les paramètres de génération du modèle. Ce modèle permet de convertir votre requête de recherche en représentations vectorielles continues.
  • NEIGHBOR_COUNT: nombre de voisins les plus proches à récupérer par la requête de recherche.

Pour trouver des exemples de recherche basée sur le texte sur des exemples de texte d'entreprise et de données multimodales, consultez les exemples de code GitHub pour la recherche sémantique sur un ensemble de données textuelles à l'aide d'invites textuelles et la recherche sémantique sur des images à l'aide d'invites textuelles.

Recherche sémantique à l'aide de requêtes multimodales

Ce type de recherche est utile lorsque vous souhaitez trouver les correspondances les plus proches à partir de vos données multimodales, qui peuvent être des images ou des vidéos. Par exemple, si vous disposez d'une application Web SAP (Fiori ou UI5) et que vous souhaitez prendre une photo d'un vêtement, d'un produit ou d'une pièce d'équipement, et trouver les correspondances les plus proches par rapport à l'image, vous pouvez choisir cette option de recherche.

Pour effectuer une recherche dans vos données multimodales indexées à l'aide d'invites multimodales, vous pouvez utiliser la méthode FIND_NEIGHBORS_BY_EMBEDDING de la classe /GOOG/CL_VECTOR_SEARCH du SDK Vertex AI pour ABAP. Vous pouvez enchaîner l'appel de la méthode GET_NEAREST_NEIGHBORS avec l'appel de la méthode FIND_NEIGHBORS_BY_EMBEDDING pour obtenir la réponse de recherche.

L'exemple de code suivant montre comment effectuer une recherche sémantique à l'aide d'une image:

DATA lv_search_string TYPE string,
DATA ls_image TYPE /goog/cl_embeddings_model=>ty_image.

TRY.
    DATA(lo_vector_search) = NEW /goog/cl_vector_search( iv_search_key = 'SEARCH_KEY' ).
    DATA(lo_embeddings_model) = NEW /goog/cl_embeddings_model( iv_model_key = 'MODEL_KEY' ).

    ls_image-bytes_base64_encoded = 'RAW_DATA'.

    DATA(lt_embeddings) = lo_embeddings_model->gen_image_embeddings( iv_image     = ls_image
                                                                     iv_dimension = 'DIMENSION'
                                            )->get_vector( ).
    DATA(lt_vector_search_response) = lo_vector_search->find_neighbors_by_embedding(
                                                          iv_neighbor_count = NEIGHBOR_COUNT
                                                          it_embeddings     = lt_embeddings
                                                     )->get_nearest_neighbors( ).
    cl_demo_output=>display( lt_vector_search_response ).
  CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
    cl_demo_output=>display( 'Search not successful.' && lo_cx_sdk->get_text( ) ).

ENDTRY.

Remplacez les éléments suivants :

  • SEARCH_KEY: clé de recherche, qui est configurée dans les paramètres de recherche vectorielle.
  • MODEL_KEY: clé du modèle configurée dans les paramètres de génération du modèle. Ce modèle permet de convertir votre requête de recherche en représentations vectorielles continues.
  • RAW_DATA: données brutes encodées en base64 de l'image, du PDF ou de la vidéo à intégrer à la requête.
  • DIMENSION: nombre de dimensions des embeddings de sortie.
  • NEIGHBOR_COUNT: nombre de voisins les plus proches à récupérer par la requête de recherche.

Pour trouver des exemples de recherche basée sur des images sur des exemples de données d'entreprise, consultez l'exemple de code GitHub.

Recherche sémantique à l'aide d'un ID d'entité d'entreprise

Ce type de recherche peut être utile pour les cas d'utilisation SAP dans lesquels vous souhaitez rechercher des entités d'entreprise similaires pour un ID d'entité particulier, par exemple pour trouver ou recommander des produits similaires si un produit particulier est en rupture de stock. Les ID d'entité correspondent aux points de données stockés dans votre index vectoriel.

Pour rechercher un indice vectoriel à l'aide d'un ID d'entité d'entreprise, vous pouvez utiliser la méthode FIND_NEIGHBORS_BY_ENTITY_ID de la classe /GOOG/CL_VECTOR_SEARCH du SDK Vertex AI pour ABAP. Vous pouvez enchaîner l'appel de la méthode GET_NEAREST_NEIGHBORS avec l'appel de la méthode FIND_NEIGHBORS_BY_ENTITY_ID pour obtenir la réponse de recherche.

L'exemple de code suivant montre comment effectuer une recherche sémantique à l'aide d'un ID d'entité d'entreprise:

Below is a code snippet that can be taken as reference for an entity id search.
TRY.
    DATA(lo_vector_search) = NEW /goog/cl_vector_search( iv_search_key  = 'SEARCH_KEY' ).
    DATA(lt_vector_search_response) = lo_vector_search->find_neighbors_by_entity_id(
                                                          iv_entity_id = 'ENTITY_ID'
                                                     )->get_nearest_neighbors( ).
    cl_demo_output=>display( lt_vector_search_response ).
  CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
    cl_demo_output=>display( 'Search not successful.' && lo_cx_sdk->get_text( ) ).

ENDTRY.

Remplacez les éléments suivants :

Pour obtenir des exemples de recherche à l'aide de l'ID d'entité sur des exemples de données d'entreprise, consultez l'exemple de code GitHub.

Utiliser la recherche vectorielle avec RAG pour fournir un contexte supplémentaire à votre modèle d'IA

La recherche vectorielle renvoie les données d'entreprise les plus pertinentes en réponse à votre requête de recherche. Vous pouvez fournir un contexte supplémentaire à votre modèle d'IA en lui fournissant la réponse de recherche de la recherche vectorielle à l'aide de la RAG. La génération augmentée par récupération améliore la qualité des réponses de votre modèle d'IA en fournissant un contexte pertinent à partir des données d'entreprise récupérées, ce qui garantit que les réponses du modèle restent ancrées à vos données d'entreprise.

Pour fournir un contexte supplémentaire à votre modèle d'IA à l'aide de la recherche vectorielle avec RAG, procédez comme suit:

  1. Préparez une requête de recherche pour obtenir le contexte d'entreprise.
  2. Effectuez une recherche vectorielle sur l'index contenant les données d'entreprise.
  3. Concatenate ou augment the search response to the final prompt following the best practices for efficient prompting.

Pour obtenir les réponses les plus pertinentes des modèles d'IA pour vos architectures basées sur le RAG, mettez à jour votre index avec les représentations vectorielles continues de vos données d'entreprise les plus récentes. Pour en savoir plus, consultez Mettre à jour et recréer un index vectoriel.

Pour tester un cas d'utilisation d'entreprise avec des exemples de jeux de données, essayez l'exemple de solution Recherche vectorielle alimentée par des représentations vectorielles continues de SAP sur GitHub. Cet exemple de solution présente un moteur de recommandation de produits en ABAP, avec des conseils sur les configurations requises et les détails d'implémentation. Vous pouvez utiliser les exemples de codes et de références comme base pour d'autres systèmes de recommandation, dans lesquels vous pouvez exécuter une recherche sémantique directement à partir de vos applications SAP.

Étape suivante

Contributeurs

Auteur : Devesh Singh | Ingénieur des applications SAP

Autre contributeur : Vikash Kumar | Rédacteur technique