Zephyrnet-logo

Ontgrendel gepersonaliseerde ervaringen mogelijk gemaakt door AI met Amazon Personalize en Amazon OpenSearch Service | Amazon-webservices

Datum:

OpenSearch is een schaalbare, flexibele en uitbreidbare open source-softwaresuite voor zoek-, analyse-, beveiligingsmonitoring- en observatietoepassingen, gelicentieerd onder de Apache 2.0-licentie. Amazon OpenSearch-service is een volledig beheerde service die het eenvoudig maakt om OpenSearch in de AWS Cloud te implementeren, te schalen en te gebruiken.

OpenSearch gebruikt een probabilistisch rankingframework genaamd BM-25 om relevantiescores te berekenen. Als een onderscheidend trefwoord vaker voorkomt in een document, kent BM-25 een hogere relevantiescore toe aan dat document. Dit raamwerk houdt echter geen rekening met gebruikersgedrag zoals doorklik- of aankoopgegevens, wat de relevantie voor individuele gebruikers verder kan verbeteren.

Het verbeteren van de zoekfunctionaliteit is een integraal aspect van het verbeteren van de algehele gebruikerservaring en betrokkenheid op een website of applicatie. Zoekverkeer wordt als een hoge intentie beschouwd omdat gebruikers actief op zoek zijn naar een bepaald item en gemiddeld tot twee keer meer conversies genereren dan bezoekers die niet op de site zoeken. Door gebruikersinteractiegegevens zoals klikken, vind-ik-leuks en aankopen te gebruiken, kunnen bedrijven de zoekrelevantie verbeteren om van dit verkeer te profiteren en het aantal gebruikers dat hun sessies verlaat vanwege problemen bij het vinden van de gewenste items, verminderen. Door de kwaliteit van de zoekresultaten te verfijnen, kunnen bedrijven hun klantbetrokkenheid, tevredenheid en loyaliteit aanzienlijk verbeteren en hun conversiepercentages verhogen, wat uiteindelijk leidt tot grotere winstgevendheid en succes.

Amazon personaliseren Hiermee kunt u geavanceerde personalisatiemogelijkheden aan uw applicaties toevoegen door gebruik te maken van dezelfde machine learning (ML)-technologie die wordt gebruikt Amazon.com al meer dan 20 jaar. Er is geen ML-expertise vereist.

Amazon Personalize ondersteunt de automatische aanpassing van aanbevelingen op basis van contextuele informatie over uw gebruiker, zoals apparaattype, locatie, tijdstip of andere informatie die u verstrekt. U verstrekt Amazon Personalize historische gegevens over uw gebruikers en hun interacties binnen uw applicatie, zoals aankoopgeschiedenis, beoordelingen en likes. Je kunt gegevens in bulk toevoegen aan Amazon Personalize door grote historische datasets in één keer te importeren vanuit een Amazon eenvoudige opslagservice (Amazon S3) CSV-bestand, met een formaat vereist door Amazon Personalize. Je kunt gegevens ook stapsgewijs toevoegen door records te importeren met behulp van de Amazon Personalize-console of API. Nadat uw historische gegevens zijn geïmporteerd, kunt u in realtime nieuwe gegevens blijven verstrekken door gebruikersinteractiegebeurtenissen te verzenden. Op basis van de use case die u wilt aanpakken, zoals productaanbevelingen, selecteert u een kant-en-klaar recept dat voor dat doel is geoptimaliseerd. Amazon Personalize analyseert uw gegevens en traint een aangepast ML-model op basis van de parameters in het recept om gepersonaliseerde aanbevelingen te genereren die zijn geoptimaliseerd voor uw gebruikers en applicatie. Nadat het model is getraind, kunt u realtime gepersonaliseerde aanbevelingen voor uw gebruikers genereren.

Met de nieuw gelanceerde Amazon gepersonaliseerde zoekplug-in voor Amazon OpenSearch Service, kunt u de geschiedenis en interesses van gebruikersinteracties gebruiken om hun zoekresultaten te verbeteren. Door gebruik te maken van een Amazon Personaliseer recept zoals Gepersonaliseerde ranking, kunt u de zoekresultaten voor relevante items helpen verbeteren op basis van gebruikersinteresses op het moment dat u zoekresultaten ontvangt van de OpenSearch Service.

In dit bericht wordt uitgelegd hoe u de Amazon Personalize Search Ranking-plug-in kunt integreren met OpenSearch Service om gepersonaliseerde zoekervaringen mogelijk te maken. Om Amazon Personalize-artefacten in dit bericht te bouwen, gebruiken we een dataset van IMDb, 's werelds meest gezaghebbende bron voor film-, tv- en beroemdheidsinhoud. beschikbaar op AWS Marktplaats, alsmede de MovieLens-gegevensset opgesteld door GroupLens-onderzoek aan de Universiteit van Minnesota, bestaande uit gebruikersranglijsten voor verschillende films.

Overzicht oplossingen

Het volgende diagram illustreert de oplossingsarchitectuur.

De workflow omvat de volgende stappen:

  1. Een gebruiker geeft een zoekopdracht door via zijn website of portal. Dit zoekverzoek wordt verzonden naar de OpenSearch Service.
  2. De top N zoekresultaten worden geretourneerd uit de OpenSearch Service-index en naar de plug-in gestuurd om de invoer voor te verwerken en voor te bereiden op een Amazon Personaliseer campagne.
  3. Het verzoek wordt naar Amazon Personalize gestuurd om de opnieuw gerangschikte zoekresultaten te ontvangen.
  4. Amazon Personalize retourneert de gepersonaliseerde rangschikking van de zoekresultaten met de relevante score voor elk resultaat.
  5. De opnieuw gerangschikte hits worden door de plug-in teruggestuurd naar de OpenSearch Service, waarbij een weging wordt toegepast tussen de relevantiescore van de OpenSearch Service en de gepersonaliseerde rankingscore van Amazon Personalize. U specificeert een gewichtsparameter (tussen 0.0 en 1.0) die de balans tussen OpenSearch Service en Amazon Personalize regelt bij het herschikken van resultaten. Een hoger gewicht betekent meer invloed van de Amazon Personalize-ranglijstscores versus de OpenSearch Service-scores. Hiermee kunt u aanpassen hoeveel de gepersonaliseerde aanbevelingen van invloed zijn op de uiteindelijke rangschikking van de zoekresultaten die aan de gebruiker wordt geretourneerd.
  6. De gebruiker krijgt gepersonaliseerde zoekresultaten op basis van zijn voorkeuren en interacties.

Voorwaarden

U moet de volgende vereisten hebben:

  • An AWS-account.
  • An AWS Identiteits- en toegangsbeheer (IAM)-rol met de juiste toegangsmachtigingen. Wij voorzien AWS CloudFormatie sjablonen en Jupyter-notebooks om de vereiste IAM-rol en toegang in te stellen.
  • Om personalisatie in OpenSearch Service in te schakelen, moet u de vereiste Amazon Personalize-bronnen instellen, inclusief een datasetgroep, oplossingsversie en campagne. Wij hebben voorzien van een Jupyter notitieboek dat alle Amazon Personalize-bronnen creëert en profiteert van de volledig beheerde Jupyter-notebookinstantiemogelijkheden van Amazon Sage Maker.

De CloudFormation-stack implementeren

De CloudFormation-stack automatiseert de implementatie van het OpenSearch Service-domein en de SageMaker Notebook-instantie. Voer de volgende stappen uit om de stapel te implementeren:

  1. Log in op AWS-beheerconsole met uw inloggegevens in het account waarop u de CloudFormation-stack wilt implementeren.
  2. Start de CloudFormation-stack direct.
  3. Op de Geef details op pagina, geef alle parameters op die vereist zijn door de sjabloon, zoals de OpenSearch Service- en SageMaker-instantiegroottes.
  4. Op de Configureer stapelopties pagina, geef een stapelnaam op en eventuele andere opties die u wilt instellen.
  5. Voltooi het maken van de stapel en controleer de status op de pagina met stapeldetails.
  6. Nadat de stapel is gemaakt, opent u de SageMaker-notebookinstantie vanaf de console.

De notebookinstantie is al vooraf geladen met de vereiste notebooks.

Stel de Amazon Personalize-workflow in en voltooi deze

Open de 1. Configureer_Amazon_Personalize.ipynb notebook om de Amazon Personalize-artefacten in te stellen. Dit notitieboekje leidt u door de volgende stappen:

  1. Download de dataset en verwerk de gegevens voor om de vereiste invoerbestanden te maken voor het maken van de datasets.
  2. Maak een datasetgroep.
  3. Maak datasets en schema's.
  4. Gegevens voorbereiden en importeren.
  5. Maak een oplossing en een oplossingsversie.
  6. Maak een campagne voor de oplossingsversie.

Installeer de Amazon Personalize Search Ranking-plug-in met behulp van een Jupyter-notebook

Open de 2.Configureer_Amazon_OpenSearch.ipynb notitieboekje en doorloop de instructies. Dit notitieboekje leidt u door de volgende stappen:

  1. Neem voorbeeldindexgegevens op in de OpenSearch Service-instantie. Het vullen van de index met representatieve gegevens vergemakkelijkt het grondig testen en valideren van de plug-in.
  2. Installeer het plug-inpakket in het OpenSearch Service-domein. Hiermee worden de personalisatiemogelijkheden geïntegreerd in de OpenSearch-omgeving.
  3. Stel zoekpijplijnen in om de functionaliteit van de plug-in te activeren. Zoekpijplijnen bevatten preprocessors voor aanvragen en postprocessors voor antwoorden die query's en resultaten transformeren. Geef bij het samenstellen van een pijplijn de Amazon Personalize-campagne ARN op die eerder in a is gemaakt personalized_search_ranking postprocessor om gepersonaliseerde herrangschikking mogelijk te maken. Hiermee configureert u de plug-in om real-time personalisatieresultaten van Amazon Personalize op te halen voor toepassing tijdens de resultaatverwerking. Door pijplijnen te definiëren, kan de plug-in de zoekrelevantie vergroten op basis van gebruikersvoorkeuren.

Installeer de plug-in Amazon Personalize Search Ranking via de console

U kunt ook de Amazon Personalize-zoekplug-in instellen vanaf de console. U hoeft dit alleen te doen als u de plug-in nog niet met het Jupyter-notebook van eerder hebt geïnstalleerd.

Om de Amazon Personalize Search Ranking-plug-in op OpenSearch Service te installeren, voert u de volgende stappen uit:

  1. Navigeer op de OpenSearch Service-console naar uw domein.
  2. Op de Pakketten tabblad, kies Bijbehorend pakket om de Amazon Personalize Search Ranking-plug-in te koppelen aan uw OpenSearch Service-domein. De plug-inversie moet overeenkomen met de OpenSearch Service-domeinversie.

De Amazon Personalize Search Ranking-plug-in kan worden geïnstalleerd op OpenSearch Service-versies 2.9 en hoger.

  1. Zoek de plug-in Amazon Personalize Search Ranking in de lijst met beschikbare plug-ins.
  2. Kies Associëren naast de plug-in om deze te installeren en te koppelen aan uw bestaande OpenSearch Service-domein.

Nadat u de plug-in heeft aangesloten, verschijnt deze als plug-intype in de lijst met pakketten. Nu de plug-in is geïnstalleerd, is het installatieproces nu voltooid.

Schakel de plug-in Amazon Personalize Search Ranking in

De Amazon Personalize Search Ranking-plug-in maakt gebruik van de search-pipeline functie van OpenSearch Service, uitgebracht vanaf versie 2.9. De plug-in is afhankelijk van de search-pipeline functie om Amazon Personalised ranking toe te passen op zoekresultaten geleverd door OpenSearch Service en moet ook worden ingesteld als een search-pipeline responsprocessor. Deze pijplijndefinitie bevat de configuratie voor de Amazon Personalize-plug-in, waaronder de Amazon Personalize-campagne die moet worden aangeroepen voor het verkrijgen van de Amazon Personalize-ranglijst, de IAM-rol voor toegang tot Amazon Personalize-bronnen, evenals de parameters die in de volgende tabel zijn gedefinieerd.

Instellingen Nodig Standaard Omschrijving
campaign Ja Geen Geef de ARN op van de Amazon Personalize-campagne die moet worden gebruikt om de resultaten te personaliseren.
recipe Ja Geen Geef de naam op van het Amazon Personalize-recept dat u wilt gebruiken. Op het moment van schrijven is aws-personalized-ranking is de enige ondersteunde waarde.
item_id_field Nee "_ID kaart" Indien de _id veld voor een geïndexeerd document in OpenSearch komt niet overeen met uw Amazon Personalize itemId, geef de naam op van het veld dat dat wel doet.
weight Ja Geen Specificeer de nadruk die de responsprocessor legt op personalisatie wanneer hij de resultaten opnieuw rangschikt. Geef een waarde op binnen een bereik van 0.0–1.0. Hoe dichter het bij 1.0 ligt, hoe waarschijnlijker het is dat de resultaten van Amazon Personalize hoger scoren. Als u 0.0 opgeeft, vindt er geen personalisatie plaats en heeft de OpenSearch Service voorrang.
tag Nee Geen Geef een ID op voor de processor.
iam_role_arn Ja Geen Geef de IAM-rol op voor toegang tot Amazon Personalize-bronnen. Dit is vereist voor OpenSearch Service en optioneel voor open source OpenSearch.
aws_region Ja Geen Geef de AWS-regio op waar u uw Amazon Personalize-campagne heeft gemaakt.
ignore_failure Nee Geen Geef op of de plug-in eventuele processorfouten negeert. Geef voor waarden op true or false. Voor uw productieomgevingen raden wij u aan dit op te geven true om onderbrekingen voor de antwoorden op vragen te voorkomen. Voor testomgevingen kunt u dit opgeven false om eventuele fouten te bekijken die de plug-in genereert.
external_account_iam_role_arn Nee Geen Als u de OpenSearch Service gebruikt en uw Amazon Personalize- en OpenSearch Service-bronnen in verschillende accounts bestaan, specificeert u de ARN van de rol die toestemming heeft voor toegang tot Amazon Personalize.

Met het volgende Python-codefragment wordt een zoekpijplijn gemaakt met a personalized_search_ranking responsprocessor op een OpenSearch Service-domein. U voert deze stap één keer uit als onderdeel van het notitieblok dat bij dit bericht hoort:

Definieer de zoekpijplijn voor gepersonaliseerde ranking

U kunt de volgende Python-code gebruiken om een ​​zoekpijplijn te maken met a personalized_search_ranking responsprocessor op een OpenSearch Service-domein. Vervang het domeineindpunt door de URL van uw domeineindpunt. Bijvoorbeeld: 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}")

Pas een zoekpijplijn toe op een individuele zoekopdracht

Nadat u een zoekpijplijn hebt geconfigureerd met een personalized_search_ranking responsprocessor, kunt u de plug-in Amazon Personalize Search Ranking toepassen op uw OpenSearch-zoekopdrachten en de opnieuw gerangschikte resultaten bekijken. Werk de code bij om uw domeineindpunt, uw OpenSearch Service-index, de naam van uw pijplijn (die u hierboven hebt geconfigureerd) en uw zoekopdracht (we gebruiken "Tom Cruise" voor zoekopdrachten) op te geven. Voor user_id, geef de ID op van de gebruiker waarvoor u zoekresultaten ontvangt. Deze gebruiker moet voorkomen in de gegevens die u hebt gebruikt om uw Amazon Personalize-oplossingsversie te maken.

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}")

Evalueer de resultaten

Open de 3.Testen.ipynb notebook en doorloop de stappen om de resultaten te testen en te vergelijken voor zoekopdrachten die personalisatie gebruiken en zoekopdrachten die dat niet doen. De plug-in Amazon Personalize Search Ranking herrangschikt de zoekresultaten in het queryantwoord van de OpenSearch Service. Er wordt rekening gehouden met zowel de ranking van Amazon Personalize als de ranking van OpenSearch Service. Dit notitieboekje leidt u door de volgende stappen:

  1. Definieer de noodzakelijke verbindingsparameters om een ​​verbinding tot stand te brengen met uw OpenSearch Service-domein. Hierbij moet u het domeineindpunt, de authenticatiereferenties en eventuele aanvullende configuratie-instellingen opgeven die vereist zijn voor uw specifieke OpenSearch Service-installatie.
  2. Maak een set voorbeeldquery's, inclusief query's met personalisatieparameters en query's zonder personalisatieparameters. Deze zoekopdrachten worden gebruikt om de impact van personalisatie op de zoekresultaten te evalueren.
  3. Voer de resultaten uit en vergelijk deze voor zoekopdrachten die gebruikmaken van personalisatie en zoekopdrachten die dat niet doen.

Voor ons voorbeeld hebben we een zoekopdracht voor 'Tom Cruise' gebruikt en voor de personalisatieparameter hebben we een gebruiker gebruikt met een recente geschiedenis van het bekijken van drama- en romantische filmgenres. De daaropvolgende zoekresultaten laten zien hoe de plug-in aanbevelingen op maat maakt en prioriteert, gebaseerd op het waargenomen kijkgedrag van de gebruiker. Dit illustreert het vermogen van de plug-in om een ​​op maat gemaakte, samengestelde ervaring te bieden door rekening te houden met individuele gebruikersvoorkeuren en betrokkenheidspatronen. De mogelijkheid om zoekresultaten te verfijnen en af ​​te stemmen op basis van gevolgtrekkingen uit de voorkeuren van een gebruiker, maakt het mogelijk de relevantie en bruikbaarheid te vergroten.

Gepersonaliseerde versus niet-gepersonaliseerde resultaten

Laten we overwegen de resultaten te personaliseren voor een gebruiker met ID 12. Eerst controleren we de recente interacties van deze gebruiker door de code uit te voeren in de 3.Testen.ipynb notebook om hun interactiegeschiedenis op te halen. Hierdoor kunnen we zien welke soorten films deze gebruiker onlangs heeft beoordeeld, wat kan bepalen hoe we aanbevelingen voor hen personaliseren.

In dit voorbeeld zien we dat de gebruiker interesse heeft getoond in de filmgenres drama, romantiek en thriller. Om gepersonaliseerde aanbevelingen te kunnen doen, voeren we eerst zoekopdrachten uit waarbij personalisatieparameters zijn ingeschakeld, waarbij gebruik wordt gemaakt van de genrevoorkeuren van de gebruiker. Ter vergelijking voeren we vervolgens dezelfde zoekopdrachten uit zonder dat personalisatie is ingeschakeld. De volgende resultaten laten het verschil zien tussen de niet-gepersonaliseerde en gepersonaliseerde aanbevelingsoutputs.

De eerste twee kolommen tonen de standaard resultaten van de OpenSearch Service voor de zoekopdracht “Tom Cruise” in een filmindex, met een verscheidenheid aan Tom Cruise-films in verschillende genres. De volgende twee kolommen tonen gepersonaliseerde OpenSearch Service-resultaten voor dezelfde “Tom Cruise”-zoekopdracht, maar aangepast voor een gebruiker die geïnteresseerd is in drama-, romantiek- en thrillergenres. Vergeleken met de algemene resultaten bevatten de gepersonaliseerde resultaten prominent Tom Cruise-films in de favoriete drama-, romantiek- en thrillergenres van de gebruiker. De delta laat zien hoe de gepersonaliseerde resultaten opnieuw zijn gerangschikt ten opzichte van de niet-gepersonaliseerde resultaten, waarbij prioriteit wordt gegeven aan films die overeenkomen met de genrevoorkeuren van de gebruiker. Dit laat zien hoe personalisatie de resultaten van de OpenSearch Service kan afstemmen op de smaak en interesses van individuele gebruikers.

Deze vergelijking laat zien hoe Amazon Personalize de filmresultaten van de OpenSearch Service kan aanpassen aan de interesses van een individuele gebruiker. Hoewel de standaard OpenSearch Service ernaar streeft om universeel relevante filmresultaten voor Tom Cruise weer te geven, stemt Amazon Personalize de resultaten af ​​op de films van Tom Cruise waarvan wordt voorspeld dat deze gebruiker ervan zal genieten op basis van hun unieke kijkgeschiedenis en voorkeuren.

De resultaten naast elkaar illustreren hoe Amazon Personalize een meer gerichte, gebruikersgerichte zoekervaring biedt door de filmresultaten aan het individu te personaliseren.

Opruimen

Voer de volgende stappen uit om uw bronnen op te schonen:

  1. Volg de stappen in het 4.Opschonen.ipynb notebook om de bronnen op te ruimen die via het notebook zijn gemaakt.
  2. Verwijder op de AWS CloudFormation-console de stapel die u hebt gemaakt.

Conclusie

De Amazon Personalize Search Ranking-plug-in kan naadloos worden geïntegreerd met OpenSearch Service om gepersonaliseerde zoekervaringen mogelijk te maken. Door gebruik te maken van gegevens over gebruikersgedrag en de ML-mogelijkheden van Amazon Personalize, kan de plug-in de resultaten van de OpenSearch Service opnieuw rangschikken om de relevantie voor elke unieke gebruiker te vergroten. Hierdoor ontstaat een op maat gemaakte zoekervaring die de meest relevante inhoud hoger in de resultaten naar voren brengt. De plug-in is configureerbaar om personalisatie in evenwicht te brengen met native scores van OpenSearch Service voor uiteenlopende gebruiksscenario's. Over het geheel genomen is de Amazon Personalize Search Ranking-plug-in een krachtige manier om de zoekrelevantie en betrokkenheid van OpenSearch Service te verbeteren door rekening te houden met de individuele interesses en voorkeuren van uw gebruikers. Met slechts een paar configuratiestappen kunt u hyperrelevante resultaten aanbieden die veel weerklank vinden bij uw gebruikers.

Extra middelen


Over de auteurs

James Jory is Principal Solutions Architect in Applied AI bij AWS. Hij heeft een speciale interesse in personalisatie- en aanbevelingssystemen en een achtergrond in e-commerce, marketingtechnologie en analyse van klantgegevens. In zijn vrije tijd houdt hij van camping- en autoracesimulaties.

Reagan Rosario is een Solutions Architect bij AWS, gespecialiseerd in het bouwen van schaalbare, zeer beschikbare en veilige cloudoplossingen voor onderwijstechnologiebedrijven. Met meer dan 10 jaar ervaring in software-engineering en architectuurrollen gebruikt Reagan zijn technische kennis graag om AWS-klanten te helpen bij het ontwerpen van robuuste cloudoplossingen die de breedte en diepte van AWS benutten.

spot_img

Laatste intelligentie

spot_img