Logo Zéphyrnet

Débloquez des expériences personnalisées optimisées par l'IA à l'aide d'Amazon Personalize et d'Amazon OpenSearch Service | Services Web Amazon

Date :

Opensearch est une suite logicielle open source évolutive, flexible et extensible pour les applications de recherche, d'analyse, de surveillance de la sécurité et d'observabilité, sous licence Apache 2.0. Service Amazon OpenSearch est un service entièrement géré qui facilite le déploiement, la mise à l'échelle et l'exploitation d'OpenSearch dans le cloud AWS.

OpenSearch utilise un cadre de classement probabiliste appelé BM-25 pour calculer les scores de pertinence. Si un mot-clé distinctif apparaît plus fréquemment dans un document, le BM-25 attribue un score de pertinence plus élevé à ce document. Cependant, ce cadre ne prend pas en compte le comportement des utilisateurs, tel que les données de clic ou d'achat, ce qui peut encore améliorer la pertinence pour les utilisateurs individuels.

L'amélioration des fonctionnalités de recherche fait partie intégrante de l'amélioration de l'expérience utilisateur globale et de l'engagement sur un site Web ou une application. Le trafic de recherche est considéré comme ayant une intention élevée, car les utilisateurs recherchent activement un élément particulier, et il a été constaté qu'ils convertissent en moyenne jusqu'à deux fois plus que les visiteurs de recherche hors site. En utilisant les données d'interaction des utilisateurs telles que les clics, les likes et les achats, les entreprises peuvent améliorer la pertinence des recherches pour capitaliser sur ce trafic et réduire les cas d'utilisateurs abandonnant leurs sessions en raison de difficultés à trouver les éléments souhaités. En affinant la qualité des résultats de recherche, les entreprises peuvent améliorer considérablement l'engagement, la satisfaction et la fidélité de leurs clients, ainsi qu'augmenter leurs taux de conversion, conduisant finalement à une rentabilité et un succès accrus.

Amazon Personnaliser vous permet d'ajouter des fonctionnalités de personnalisation sophistiquées à vos applications en utilisant la même technologie d'apprentissage automatique (ML) utilisée sur - depuis plus de 20 ans. Aucune expertise en ML n’est requise.

Amazon Personalize prend en charge l'ajustement automatique des recommandations en fonction des informations contextuelles sur votre utilisateur, telles que le type d'appareil, l'emplacement, l'heure de la journée ou d'autres informations que vous fournissez. Vous fournissez à Amazon Personalize des données historiques sur vos utilisateurs et leurs interactions au sein de votre application, telles que l'historique des achats, les notes et les likes. Vous pouvez ajouter des données à Amazon Personalize en masse en important d'un seul coup de grands ensembles de données historiques à partir d'un Service de stockage simple Amazon (Amazon S3) Fichier CSV, utilisant un format requis par Amazon Personalize. Vous pouvez également ajouter des données de manière incrémentielle en important des enregistrements à l'aide de la console ou de l'API Amazon Personalize. Une fois vos données historiques importées, vous pouvez continuer à fournir de nouvelles données en temps réel en envoyant des événements d'interaction utilisateur. En fonction du cas d'utilisation que vous souhaitez aborder, tel que les recommandations de produits, vous sélectionnez une recette prédéfinie optimisée pour cet objectif. Amazon Personalize analyse vos données et entraîne un modèle ML personnalisé basé sur les paramètres de la recette pour générer des recommandations personnalisées optimisées pour vos utilisateurs et votre application. Une fois le modèle entraîné, vous pouvez générer des recommandations personnalisées en temps réel pour vos utilisateurs.

Avec le nouveau lancement Plugin de recherche personnalisé Amazon pour Amazon OpenSearch Service, vous pouvez utiliser l'historique des interactions et les centres d'intérêt des utilisateurs pour améliorer leurs résultats de recherche. En utilisant un Recette personnalisée Amazon tel que Classement personnalisé, vous pouvez contribuer à améliorer les résultats de recherche pour les éléments pertinents en fonction des intérêts des utilisateurs au moment d'obtenir les résultats de recherche d'OpenSearch Service.

Cet article explique comment intégrer le plugin Amazon Personalize Search Ranking avec OpenSearch Service pour permettre des expériences de recherche personnalisées. Pour créer des artefacts Amazon Personalize dans cet article, nous utilisons un ensemble de données d'IMDb, la source la plus fiable au monde en matière de contenu de films, de télévision et de célébrités, disponible sur AWS Marketplace, la Ensemble de données MovieLens préparé par la recherche GroupLens de l'Université du Minnesota, composé de classements d'utilisateurs pour divers films.

Vue d'ensemble de la solution

Le diagramme suivant illustre l'architecture de la solution.

Le workflow comprend les étapes suivantes:

  1. Un utilisateur émet une demande de recherche via son site Web ou son portail. Cette demande de recherche est envoyée à OpenSearch Service.
  2. Les N premiers résultats de recherche sont renvoyés par l'index OpenSearch Service et envoyés au plugin pour prétraiter et préparer l'entrée pour un Campagne Amazon Personalize.
  3. La demande est envoyée à Amazon Personalize pour obtenir les résultats de recherche reclassés.
  4. Amazon Personalize renvoie le classement personnalisé des résultats de recherche avec le score pertinent pour chaque résultat.
  5. Les appels reclassés sont renvoyés par le plug-in à OpenSearch Service, avec une pondération appliquée entre le score de pertinence d'OpenSearch Service et le score de classement personnalisé d'Amazon Personalize. Vous spécifiez un paramètre de pondération (entre 0.0 et 1.0) qui contrôle l'équilibre entre OpenSearch Service et Amazon Personalize lors du reclassement des résultats. Un poids plus élevé signifie plus d'influence des scores de classement Amazon Personalize par rapport aux scores OpenSearch Service. Cela vous permet de personnaliser dans quelle mesure les recommandations personnalisées affectent le classement final des résultats de recherche renvoyé à l'utilisateur.
  6. L'utilisateur obtient des résultats de recherche personnalisés en fonction de ses préférences et de ses interactions.

Pré-requis

Vous devez avoir les prérequis suivants :

  • An Compte AWS.
  • An Gestion des identités et des accès AWS (IAM) avec les autorisations d'accès appropriées. Nous fournissons AWS CloudFormation des modèles et des notebooks Jupyter pour vous aider à configurer le rôle et l'accès IAM requis.
  • Pour activer la personnalisation dans OpenSearch Service, vous devez configurer les ressources Amazon Personalize requises, notamment un groupe d'ensembles de données, une version de solution et une campagne. Nous avons fourni un Carnet Jupyter qui crée toutes les ressources Amazon Personalize, en tirant parti des capacités d'instance de bloc-notes Jupyter entièrement gérées de Amazon Sage Maker.

Déployer la pile CloudFormation

La pile CloudFormation automatise le déploiement du domaine OpenSearch Service et de l'instance SageMaker Notebook. Effectuez les étapes suivantes pour déployer la pile :

  1. Connectez-vous à la Console de gestion AWS avec vos informations d'identification dans le compte sur lequel vous souhaitez déployer la pile CloudFormation.
  2. Lancez la pile CloudFormation directement.
  3. Sur le Préciser les détails , fournissez tous les paramètres requis par le modèle, tels que les tailles d'instance OpenSearch Service et SageMaker.
  4. Sur le Configurer les options de pile page, spécifiez un nom de pile et toutes les autres options que vous souhaitez définir.
  5. Terminez la création de la pile et surveillez l'état sur la page de détails de la pile.
  6. Une fois la pile créée, ouvrez l'instance de notebook SageMaker à partir de la console.

L'instance de notebook sera déjà préchargée avec les notebooks requis.

Configurer et terminer le flux de travail Amazon Personalize

Ouvrez le 1.Configure_Amazon_Personalize.ipynb notebook pour configurer les artefacts Amazon Personalize. Ce bloc-notes vous guide à travers les étapes suivantes :

  1. Téléchargez l'ensemble de données et prétraitez les données pour créer les fichiers d'entrée requis pour la création des ensembles de données.
  2. Créez un groupe de jeux de données.
  3. Créez des ensembles de données et des schémas.
  4. Préparer et importer des données.
  5. Créez une solution et une version de solution.
  6. Créez une campagne pour la version de la solution.

Installez le plug-in Amazon Personalize Search Ranking à l'aide d'un bloc-notes Jupyter

Ouvrez le 2.Configure_Amazon_OpenSearch.ipynb cahier et parcourez les instructions. Ce bloc-notes vous guide à travers les étapes suivantes :

  1. Ingérez des exemples de données d’index dans l’instance OpenSearch Service. Remplir l'index avec des données représentatives facilite des tests et une validation approfondis du plugin.
  2. Installez le package du plug-in dans le domaine OpenSearch Service. Cela intègre les capacités de personnalisation dans l’environnement OpenSearch.
  3. Configurez des pipelines de recherche pour activer les fonctionnalités du plugin. Les pipelines de recherche contiennent des préprocesseurs de requêtes et des postprocesseurs de réponses qui transforment les requêtes et les résultats. Lors de la création d'un pipeline, spécifiez l'ARN de la campagne Amazon Personalize créé précédemment dans un personalized_search_ranking postprocesseur pour permettre un reclassement personnalisé. Cela configure le plug-in pour récupérer les résultats de personnalisation en temps réel d'Amazon Personalize pour l'application pendant le traitement des résultats. La définition de pipelines permet au plugin d'augmenter la pertinence de la recherche en fonction des préférences de l'utilisateur.

Installez le plugin Amazon Personalize Search Ranking à l'aide de la console

Vous pouvez également configurer le plug-in de recherche Amazon Personalize à partir de la console. Vous ne devez le faire que si vous n'avez pas installé le plugin à l'aide du notebook Jupyter précédent.

Pour installer le plug-in Amazon Personalize Search Ranking sur OpenSearch Service, procédez comme suit :

  1. Sur la console OpenSearch Service, accédez à votre domaine.
  2. Sur le Formules onglet, choisissez Forfait associé pour associer le plug-in Amazon Personalize Search Ranking à votre domaine OpenSearch Service. La version du plugin doit correspondre à la version du domaine OpenSearch Service.

Le plug-in Amazon Personalize Search Ranking peut être installé sur les versions 2.9 et supérieures d'OpenSearch Service.

  1. Recherchez le plug-in Amazon Personalize Search Ranking dans la liste des plug-ins disponibles.
  2. Selectionnez Associé(e) à côté du plugin pour l'installer et l'associer à votre domaine OpenSearch Service existant.

Après avoir connecté le plugin, il apparaîtra dans la liste des packages en tant que type de plugin. Une fois le plugin installé, le processus d'installation est maintenant terminé.

Activer le plug-in Amazon Personalize Search Ranking

Le plugin Amazon Personalize Search Ranking utilise le search-pipeline fonctionnalité d'OpenSearch Service, publiée à partir de la version 2.9. Le plugin dépend du search-pipeline fonctionnalité pour appliquer le classement personnalisé d'Amazon sur les résultats de recherche fournis par OpenSearch Service et doit également être configurée en tant que search-pipeline processeur de réponse. Cette définition de pipeline contiendra la configuration du plug-in Amazon Personalize, qui inclut la campagne Amazon Personalize pour appeler à obtenir le classement Amazon Personalize, le rôle IAM pour accéder aux ressources Amazon Personalize, ainsi que les paramètres définis dans le tableau suivant.

Paramètres Requis Réglage par défaut Description
campaign Oui Aucun Spécifiez l'ARN de la campagne Amazon Personalize à utiliser pour personnaliser les résultats.
recipe Oui Aucun Spécifiez le nom de la recette Amazon Personalize à utiliser. Au moment d'écrire ces lignes, aws-personalized-ranking est la seule valeur prise en charge.
item_id_field Non "_identifiant" Si la _id Le champ d'un document indexé dans OpenSearch ne correspond pas à votre Amazon Personalize itemId, spécifiez le nom du champ qui le fait.
weight Oui Aucun Spécifiez l'accent que le processeur de réponses met sur la personnalisation lorsqu'il reclasse les résultats. Spécifiez une valeur comprise entre 0.0 et 1.0. Plus il est proche de 1.0, plus il est probable que les résultats d'Amazon Personalize soient classés plus haut. Si vous spécifiez 0.0, aucune personnalisation n’a lieu et OpenSearch Service est prioritaire.
tag Non Aucun Spécifiez un identifiant pour le processeur.
iam_role_arn Oui Aucun Spécifiez le rôle IAM pour accéder aux ressources Amazon Personalize. Ceci est requis pour le service OpenSearch et facultatif pour OpenSearch open source.
aws_region Oui Aucun Spécifiez la région AWS dans laquelle vous avez créé votre campagne Amazon Personalize.
ignore_failure Non Aucun Spécifiez si le plugin ignore les pannes de processeur. Pour les valeurs, précisez true or false. Pour vos environnements de production, nous vous recommandons de spécifier true pour éviter toute interruption des réponses aux requêtes. Pour les environnements de test, vous pouvez spécifier false pour afficher les erreurs générées par le plugin.
external_account_iam_role_arn Non Aucun Si vous utilisez OpenSearch Service et que vos ressources Amazon Personalize et OpenSearch Service existent dans des comptes différents, spécifiez l'ARN du rôle autorisé à accéder à Amazon Personalize.

L'extrait de code Python suivant crée un pipeline de recherche avec un personalized_search_ranking processeur de réponse sur un domaine OpenSearch Service. Vous exécutez cette étape une fois dans le cadre du bloc-notes qui accompagne ce message :

Définir un pipeline de recherche pour un classement personnalisé

Vous pouvez utiliser le code Python suivant pour créer un pipeline de recherche avec un personalized_search_ranking processeur de réponse sur un domaine OpenSearch Service. Remplacez le point de terminaison du domaine par l'URL du point de terminaison de votre domaine. Par exemple: https://<domain name>.<AWS region>.es.amazonaws.com.

import requests
from requests_auth_aws_sigv4 import AWSSigV4

domain_endpoint = 'domain endpoint'
pipeline_name = 'pipeline name'
url = f'{domain_endpoint}/_search/pipeline/{pipeline_name}'
auth = AWSSigV4('es')

headers = {'Content-Type': 'application/json'}

body = {
  "description": "A pipeline to apply custom re-ranking from Amazon Personalize",
  "response_processors": [
    {
      "personalized_search_ranking" : {
        "campaign_arn" : "<Replace with Amazon Personalize Campaign ARN>",
        "item_id_field" : "itemId",
        "recipe" : "aws-personalized-ranking",
        "weight" : "0.3",
        "tag" : "personalize-processor",
        "iam_role_arn": "<Replace with Role ARN>",
        "aws_region": "<Replace with AWS region>",
        "ignore_failure": true
    }
  ]
}
try:
    response = requests.put(url, auth=auth, json=body, headers=headers)
    print(response.text)
except Exception as e:
    print(f"Error: {e}")

Appliquer un pipeline de recherche à une requête individuelle

Après avoir configuré un pipeline de recherche avec un personalized_search_ranking processeur de réponse, vous pouvez appliquer le plug-in Amazon Personalize Search Ranking à vos requêtes OpenSearch et afficher les résultats reclassés. Mettez à jour le code pour spécifier le point de terminaison de votre domaine, votre index OpenSearch Service, le nom de votre pipeline (vous avez configuré ci-dessus) et votre requête (nous utilisons « Tom Cruise » pour la requête). Pour user_id, spécifiez l'ID de l'utilisateur pour lequel vous obtenez les résultats de recherche. Cet utilisateur doit figurer dans les données que vous avez utilisées pour créer la version de votre solution Amazon Personalize.

import requests
from requests_auth_aws_sigv4 import AWSSigV4

domain_endpoint = 'domain endpoint'
index = 'index name'
url = f'{domain_endpoint}/{index}/_search/'

auth = AWSSigV4('es')
headers = {'Content-Type': 'application/json'}
params = {"search_pipeline": "<Replace with pipeline-name>"}
body = {
    "query": {
        "multi_match": {
            "query": "Tom Cruise",
            "fields": ["title", "plot", "genres", "directedBy", "starring"]
        }
    },
    "ext": {
        "personalize_request_parameters": {
            "user_id": "<Replace with USER ID>"
        }
    }
}
try:
    response = requests.post(url, auth=auth, params=params, json=body, headers=headers)
    print(response)
except Exception as e:
    print(f"Error: {e}")

Évaluer les résultats

Ouvrez le 3.Test.ipynb notebook et parcourez les étapes pour tester et comparer les résultats des requêtes qui utilisent la personnalisation et celles qui ne l'utilisent pas. Le plug-in Amazon Personalize Search Ranking reclasse les résultats de recherche dans la réponse à la requête OpenSearch Service. Il prend en compte à la fois le classement d'Amazon Personalize et le classement d'OpenSearch Service. Ce bloc-notes vous guide à travers les étapes suivantes :

  1. Définissez les paramètres de connexion nécessaires pour établir une connexion avec votre domaine OpenSearch Service. Cela implique de spécifier le point de terminaison du domaine, les informations d'authentification et tous les paramètres de configuration supplémentaires requis pour la configuration spécifique de votre service OpenSearch.
  2. Créez un ensemble d'exemples de requêtes, notamment des requêtes avec des paramètres de personnalisation et des requêtes sans paramètres de personnalisation. Ces requêtes seront utilisées pour évaluer l’impact de la personnalisation sur les résultats de recherche.
  3. Exécutez et comparez les résultats des requêtes qui utilisent la personnalisation et de celles qui ne le font pas.

Pour notre exemple, nous avons utilisé une requête pour « Tom Cruise » et pour le paramètre de personnalisation, nous avons utilisé un utilisateur ayant un historique récent de visionnage de genres de films dramatiques et romantiques. Les résultats de recherche suivants montrent comment le plugin adapte et hiérarchise les recommandations en fonction du comportement de visualisation observé par l'utilisateur. Cela illustre la capacité du plugin à offrir une expérience personnalisée et organisée en tenant compte des préférences individuelles des utilisateurs et des modèles d'engagement. La capacité d'affiner et d'ajuster les résultats de recherche sur la base des inférences des préférences d'un utilisateur permet d'offrir une pertinence et une utilité améliorées.

Résultats personnalisés ou non personnalisés

Envisageons de personnaliser les résultats pour un utilisateur avec l'ID 12. Tout d'abord, nous vérifions les interactions récentes de cet utilisateur en exécutant le code dans le 3.Test.ipynb notebook pour récupérer leur historique d’interaction. Cela nous permet de voir quels types de films cet utilisateur a récemment visionnés, ce qui peut nous aider à personnaliser les recommandations à leur intention.

Dans cet exemple, nous voyons que l’utilisateur a exprimé son intérêt pour les genres de films dramatiques, romantiques et thrillers. Pour fournir des recommandations personnalisées, nous exécutons d'abord des requêtes avec les paramètres de personnalisation activés, en utilisant les préférences de genre de l'utilisateur. Nous exécutons ensuite les mêmes requêtes sans la personnalisation activée, à des fins de comparaison. Les résultats suivants montrent la différence entre les résultats de recommandation non personnalisés et personnalisés.

Les deux premières colonnes affichent les résultats par défaut d'OpenSearch Service pour la requête « Tom Cruise » sur un index de films, montrant une variété de films de Tom Cruise dans différents genres. Les deux colonnes suivantes présentent des résultats OpenSearch Service personnalisés pour la même requête « Tom Cruise », mais personnalisés pour un utilisateur intéressé par les genres dramatiques, romantiques et thrillers. Par rapport aux résultats génériques, les résultats personnalisés mettent en évidence les films de Tom Cruise dans les genres dramatiques, romantiques et thrillers préférés de l'utilisateur. Le delta met en évidence la façon dont les résultats personnalisés ont été reclassés par rapport aux résultats non personnalisés, en donnant la priorité aux films qui correspondent aux préférences de genre de l'utilisateur. Cela démontre comment la personnalisation peut adapter les résultats d'OpenSearch Service aux goûts et aux intérêts de chaque utilisateur.

Cette comparaison montre comment Amazon Personalize peut personnaliser les résultats des films OpenSearch Service pour qu'ils correspondent aux intérêts d'un utilisateur individuel. Bien que le service OpenSearch standard vise à fournir universellement des résultats de films pertinents pour Tom Cruise, Amazon Personalize adapte les résultats pour se concentrer sur les films de Tom Cruise qu'il prédit que cet utilisateur appréciera en fonction de son historique de visionnage et de ses préférences uniques.

Les résultats côte à côte illustrent comment Amazon Personalize offre une expérience de recherche plus ciblée et centrée sur l'utilisateur en personnalisant les résultats du film en fonction de l'individu.

Nettoyer

Effectuez les étapes suivantes pour nettoyer vos ressources :

  1. Suivez les étapes dans le 4.Nettoyage.ipynb notebook pour nettoyer les ressources créées via le notebook.
  2. Sur la console AWS CloudFormation, supprimez la pile que vous avez créée.

Conclusion

Le plugin Amazon Personalize Search Ranking s'intègre parfaitement à OpenSearch Service pour permettre des expériences de recherche personnalisées. En utilisant les données sur le comportement des utilisateurs et les capacités ML d'Amazon Personalize, le plugin peut réorganiser les classements des résultats d'OpenSearch Service afin d'améliorer la pertinence pour chaque utilisateur unique. Cela crée une expérience de recherche sur mesure qui fait apparaître le contenu le plus pertinent plus haut dans les résultats. Le plugin est configurable pour équilibrer la personnalisation avec la notation native d'OpenSearch Service afin de s'adapter à divers cas d'utilisation. Dans l'ensemble, le plugin Amazon Personalize Search Ranking est un moyen puissant d'améliorer la pertinence et l'engagement de la recherche OpenSearch Service en prenant en compte les intérêts et préférences individuels de vos utilisateurs. En quelques étapes de configuration seulement, vous pouvez commencer à proposer des résultats hyper pertinents qui trouvent un fort écho auprès de vos utilisateurs.

Ressources additionnelles


À propos des auteurs

Jacques Jory est un architecte principal de solutions en IA appliquée avec AWS. Il s'intéresse particulièrement aux systèmes de personnalisation et de recommandation et possède une formation en commerce électronique, en technologie marketing et en analyse de données client. Dans ses temps libres, il aime le camping et les simulations de course automobile.

Reagan Rosario est un architecte de solutions chez AWS, spécialisé dans la création de solutions cloud évolutives, hautement disponibles et sécurisées pour les entreprises de technologie éducative. Avec plus de 10 ans d'expérience dans des rôles d'ingénierie et d'architecture logicielle, Reagan aime utiliser ses connaissances techniques pour aider les clients AWS à concevoir des solutions cloud robustes qui tirent parti de l'étendue et de la profondeur d'AWS.

spot_img

Dernières informations

spot_img