제퍼넷 로고

Amazon Personalize 및 Amazon OpenSearch Service를 사용하여 AI로 구동되는 개인화된 경험을 활용하세요 | 아마존 웹 서비스

시간

오픈 검색 Apache 2.0 라이센스에 따라 라이센스가 부여된 검색, 분석, 보안 모니터링 및 관찰 가능성 애플리케이션을 위한 확장 가능하고 유연하며 확장 가능한 오픈 소스 소프트웨어 제품군입니다. 아마존 오픈서치 서비스 AWS 클라우드에서 OpenSearch를 간편하게 배포, 확장 및 운영할 수 있게 해주는 완전관리형 서비스입니다.

OpenSearch는 BM-25라는 확률적 순위 프레임워크를 사용하여 관련성 점수를 계산합니다. 고유한 키워드가 문서에 더 자주 나타나는 경우 BM-25는 해당 문서에 더 높은 관련성 점수를 할당합니다. 그러나 이 프레임워크는 클릭 연결이나 구매 데이터와 같은 사용자 행동을 고려하지 않으므로 개별 사용자에 대한 관련성을 더욱 향상시킬 수 있습니다.

검색 기능을 개선하는 것은 웹사이트나 애플리케이션에 대한 전반적인 사용자 경험과 참여를 향상시키는 데 있어 필수적인 측면입니다. 검색 트래픽은 사용자가 특정 항목을 적극적으로 찾고 있기 때문에 의도가 높은 것으로 간주되며 사이트를 방문하지 않은 검색 방문자보다 평균 최대 2배 더 많이 전환되는 것으로 나타났습니다. 클릭, 좋아요, 구매 등의 사용자 상호 작용 데이터를 사용함으로써 기업은 검색 관련성을 향상하여 이 트래픽을 활용하고 원하는 항목을 찾는 데 어려움을 겪어 사용자가 세션을 포기하는 사례를 줄일 수 있습니다. 검색 결과의 품질을 개선함으로써 기업은 고객 참여, 만족도 및 충성도를 크게 향상시킬 수 있을 뿐만 아니라 전환율을 높여 궁극적으로 수익성과 성공을 높일 수 있습니다.

아마존 개인화 사용되는 것과 동일한 기계 학습(ML) 기술을 사용하여 애플리케이션에 정교한 개인화 기능을 추가할 수 있습니다. Amazon.com 20년 넘게. ML 전문 지식은 필요하지 않습니다.

Amazon Personalize는 장치 유형, 위치, 시간 또는 귀하가 제공하는 기타 정보 등 사용자에 대한 상황별 정보를 기반으로 권장 사항의 자동 조정을 지원합니다. 구매 내역, 평점, 좋아요 등 사용자와 애플리케이션 내 상호 작용에 대한 기록 데이터를 Amazon Personalize에 제공합니다. 대규모 기록 데이터 세트를 한 번에 가져오면 Amazon Personalize에 데이터를 대량으로 추가할 수 있습니다. 아마존 단순 스토리지 서비스 (Amazon S3) Amazon Personalize에 필요한 형식을 사용하는 CSV 파일입니다. Amazon Personalize 콘솔이나 API를 사용하여 레코드를 가져와 점진적으로 데이터를 추가할 수도 있습니다. 기록 데이터를 가져온 후에는 사용자 상호 작용 이벤트를 전송하여 계속해서 실시간으로 새 데이터를 제공할 수 있습니다. 제품 추천 등 해결하려는 사용 사례에 따라 해당 목표에 최적화된 사전 구축된 레시피를 선택합니다. Amazon Personalize는 데이터를 분석하고 레시피의 매개변수를 기반으로 사용자 지정 ML 모델을 교육하여 사용자와 애플리케이션에 최적화된 맞춤형 추천을 생성합니다. 모델이 훈련된 후에는 사용자를 위한 실시간 맞춤형 추천을 생성할 수 있습니다.

새롭게 출시된 Amazon OpenSearch 서비스용 Amazon 맞춤형 검색 플러그인, 사용자 상호작용 기록 및 관심분야를 사용하여 검색 결과를 향상할 수 있습니다. 활용함으로써 Amazon Personalize 레시피개인별 순위, OpenSearch 서비스에서 검색 결과를 얻을 때 사용자 관심을 기반으로 관련 항목에 대한 검색 결과를 향상시키는 데 도움을 줄 수 있습니다.

이 게시물에서는 Amazon Personalize Search Ranking 플러그인을 OpenSearch Service와 통합하여 맞춤형 검색 경험을 구현하는 방법을 설명합니다. 이 게시물에서는 Amazon Personalize 아티팩트를 구축하기 위해 영화, TV 및 유명인 콘텐츠에 대한 세계에서 가장 권위 있는 소스인 IMDb의 데이터 세트를 사용합니다. AWS Marketplace에서 사용 가능, 뿐만 아니라 MovieLens 데이터세트 다양한 영화에 대한 사용자 순위로 구성된 미네소타 대학의 GroupLens 연구에서 작성되었습니다.

솔루션 개요

다음 다이어그램은 솔루션 아키텍처를 보여줍니다.

워크 플로우에는 다음 단계가 포함됩니다.

  1. 사용자는 웹사이트나 포털을 통해 검색 요청을 발행합니다. 이 검색 요청은 OpenSearch 서비스로 전송됩니다.
  2. 상위 N개 검색 결과는 OpenSearch 서비스 인덱스에서 반환되고 플러그인으로 전송되어 입력을 사전 처리하고 준비합니다. Amazon Personalize 캠페인.
  3. 순위가 다시 지정된 검색 결과를 얻기 위해 요청이 Amazon Personalize로 전송됩니다.
  4. Amazon Personalize는 각 결과에 대한 관련 점수와 함께 검색 결과의 개인화된 순위를 반환합니다.
  5. 순위가 변경된 조회수는 OpenSearch Service 관련성 점수와 Amazon Personalize 맞춤형 순위 점수 사이에 가중치가 적용되어 플러그인에 의해 OpenSearch Service로 반환됩니다. 결과 순위를 다시 지정할 때 OpenSearch Service와 Amazon Personalize 간의 균형을 제어하는 ​​가중치 매개변수(0.0~1.0 사이)를 지정합니다. 가중치가 높을수록 Amazon Personalize 순위 점수와 OpenSearch Service 점수의 영향이 더 크다는 의미입니다. 이를 통해 개인화된 추천이 사용자에게 반환되는 최종 검색 결과 순위에 얼마나 영향을 미치는지 맞춤 설정할 수 있습니다.
  6. 사용자는 자신의 선호도와 상호 작용을 기반으로 개인화된 검색 결과를 얻습니다.

사전 조건

다음과 같은 전제 조건이 있어야 합니다.

  • An AWS 계정.
  • An AWS 자격 증명 및 액세스 관리 (IAM) 적절한 액세스 권한이 있는 역할. 우리가 제공하다 AWS 클라우드 포메이션 필요한 IAM 역할 및 액세스를 설정하는 데 도움이 되는 템플릿 및 Jupyter 노트북입니다.
  • OpenSearch Service에서 개인화를 활성화하려면 데이터 세트 그룹, 솔루션 버전 및 캠페인을 포함하여 필요한 Amazon Personalize 리소스를 설정해야 합니다. 우리는 주피터 노트 완전히 관리되는 Jupyter 노트북 인스턴스 기능을 활용하여 모든 Amazon Personalize 리소스를 생성합니다. 아마존 세이지 메이커.

CloudFormation 스택 배포

CloudFormation 스택은 OpenSearch Service 도메인 및 SageMaker 노트북 인스턴스의 배포를 자동화합니다. 스택을 배포하려면 다음 단계를 완료하세요.

  1. 에 로그인 AWS 관리 콘솔 CloudFormation 스택을 배포하려는 계정의 자격 증명을 사용하세요.
  2. CloudFormation 스택 시작 직접.
  3. 세부 사항 지정 페이지에서 OpenSearch Service 및 SageMaker 인스턴스 크기와 같이 템플릿에 필요한 매개변수를 제공합니다.
  4. 스택 옵션 구성 페이지에서 스택 이름과 설정하려는 기타 옵션을 지정합니다.
  5. 스택 생성을 완료하고 스택 세부 정보 페이지에서 상태를 모니터링합니다.
  6. 스택이 생성된 후 콘솔에서 SageMaker 노트북 인스턴스를 엽니다.

노트북 인스턴스에는 필요한 노트북이 이미 사전 로드되어 있습니다.

Amazon Personalize 워크플로 설정 및 완료

열기 1.Configure_Amazon_Personalize.ipynb Amazon Personalize 아티팩트를 설정하기 위한 노트북입니다. 이 노트북은 다음 단계를 안내합니다.

  1. 데이터 세트를 다운로드하고 데이터를 사전 처리하여 데이터 세트 생성에 필요한 입력 파일을 생성합니다.
  2. 데이터 세트 그룹을 만듭니다.
  3. 데이터세트와 스키마를 만듭니다.
  4. 데이터를 준비하고 가져옵니다.
  5. 솔루션과 솔루션 버전을 생성합니다.
  6. 솔루션 버전에 대한 캠페인을 만듭니다.

Jupyter 노트북을 사용하여 Amazon Personalize 검색 순위 플러그인 설치

열기 2.Configure_Amazon_OpenSearch.ipynb 노트북을 들고 지침을 살펴보세요. 이 노트북은 다음 단계를 안내합니다.

  1. 샘플 인덱스 데이터를 OpenSearch Service 인스턴스로 수집합니다. 대표 데이터로 인덱스를 채우면 플러그인의 철저한 테스트 및 검증이 용이해집니다.
  2. OpenSearch Service 도메인에 플러그인 패키지를 설치합니다. 이는 개인화 기능을 OpenSearch 환경에 통합합니다.
  3. 플러그인 기능을 활성화하려면 검색 파이프라인을 설정하세요. 검색 파이프라인에는 쿼리와 결과를 변환하는 요청 전처리기와 응답 후처리기가 포함되어 있습니다. 파이프라인을 구성할 때 이전에 생성된 Amazon Personalize 캠페인 ARN을 지정합니다. personalized_search_ranking 개인화된 재순위 지정을 가능하게 하는 후처리기. 이는 결과 처리 중 적용을 위해 Amazon Personalize에서 실시간 개인화 결과를 검색하도록 플러그인을 구성합니다. 파이프라인을 정의하면 플러그인이 사용자 기본 설정에 따라 검색 관련성을 높일 수 있습니다.

콘솔을 사용하여 Amazon Personalize 검색 순위 플러그인 설치

콘솔에서 Amazon Personalize 검색 플러그인을 설정할 수도 있습니다. 이전에 Jupyter 노트북을 사용하여 플러그인을 설치하지 않은 경우에만 이 작업을 수행하면 됩니다.

OpenSearch Service에 Amazon Personalize 검색 순위 플러그인을 설치하려면 다음 단계를 완료하십시오.

  1. OpenSearch Service 콘솔에서 도메인으로 이동합니다.
  2. 패키지 탭에서 제휴 패키지 Amazon Personalize 검색 순위 플러그인을 OpenSearch Service 도메인과 연결합니다. 플러그인 버전은 OpenSearch 서비스 도메인 버전과 일치해야 합니다.

Amazon Personalize 검색 순위 플러그인은 OpenSearch Service 버전 2.9 이상에 설치할 수 있습니다.

  1. 사용 가능한 플러그인 목록에서 Amazon Personalize 검색 순위 플러그인을 찾으세요.
  2. 왼쪽 메뉴에서 플러그인 옆에 있는 플러그인을 설치하고 기존 OpenSearch Service 도메인과 연결합니다.

플러그인을 연결하면 패키지 목록에 플러그인 유형으로 표시됩니다. 플러그인이 설치되면 이제 설치 프로세스가 완료됩니다.

Amazon Personalize 검색 순위 플러그인 활성화

Amazon Personalize 검색 순위 플러그인은 다음을 사용합니다. search-pipeline 버전 2.9부터 출시된 OpenSearch Service의 기능입니다. 플러그인은 다음에 따라 다릅니다. search-pipeline OpenSearch Service에서 제공하는 검색 결과에 Amazon Personalized 순위를 적용하는 기능이며, search-pipeline 응답 프로세서. 이 파이프라인 정의에는 Amazon Personalize 순위를 얻기 위해 호출하는 Amazon Personalize 캠페인, Amazon Personalize 리소스에 액세스하기 위한 IAM 역할 및 다음 표에 정의된 매개 변수를 포함하는 Amazon Personalize 플러그인에 대한 구성이 포함됩니다.

설정 필수 태만 상품 설명
campaign 가능 없음 결과를 개인화하는 데 사용할 Amazon Personalize 캠페인의 ARN을 지정합니다.
recipe 가능 없음 사용할 Amazon Personalize 레시피의 이름을 지정합니다. 이 글을 쓰는 시점에서, aws-personalized-ranking 유일하게 지원되는 값입니다.
item_id_field 아니 "_ID" 경우 _id OpenSearch의 인덱싱된 문서 필드가 Amazon Personalize와 일치하지 않습니다. itemId, 해당 필드의 이름을 지정합니다.
weight 가능 없음 응답 프로세서가 결과 순위를 다시 매길 때 개인화에 중점을 두는 방식을 지정합니다. 0.0~1.0 범위 내에서 값을 지정합니다. 1.0에 가까울수록 Amazon Personalize의 결과 순위가 더 높아질 가능성이 높습니다. 0.0을 지정하면 개인화가 발생하지 않으며 OpenSearch 서비스가 우선 적용됩니다.
tag 아니 없음 프로세서의 식별자를 지정합니다.
iam_role_arn 가능 없음 Amazon Personalize 리소스에 액세스하기 위한 IAM 역할을 지정합니다. 이는 OpenSearch 서비스에는 필수이며, 오픈 소스 OpenSearch에는 선택 사항입니다.
aws_region 가능 없음 Amazon Personalize 캠페인을 생성한 AWS 리전을 지정합니다.
ignore_failure 아니 없음 플러그인이 프로세서 오류를 무시하는지 여부를 지정합니다. 값에 대해 다음을 지정하십시오. true or false. 프로덕션 환경의 경우 다음을 지정하는 것이 좋습니다. true 쿼리 응답이 중단되지 않도록 합니다. 테스트 환경의 경우 다음을 지정할 수 있습니다. false 플러그인이 생성하는 오류를 보려면
external_account_iam_role_arn 아니 없음 OpenSearch Service를 사용하고 Amazon Personalize 및 OpenSearch Service 리소스가 서로 다른 계정에 존재하는 경우 Amazon Personalize에 액세스할 수 있는 권한이 있는 역할의 ARN을 지정합니다.

다음 Python 코드 조각은 다음을 사용하여 검색 파이프라인을 생성합니다. personalized_search_ranking OpenSearch 서비스 도메인의 응답 프로세서. 이 게시물과 함께 제공되는 노트북의 일부로 이 단계를 한 번 실행합니다.

개인화된 순위를 위한 검색 파이프라인 정의

다음 Python 코드를 사용하여 검색 파이프라인을 생성할 수 있습니다. personalized_search_ranking OpenSearch 서비스 도메인의 응답 프로세서. 도메인 엔드포인트를 도메인 엔드포인트 URL로 바꾸세요. 예를 들어: 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}")

개별 쿼리에 검색 파이프라인 적용

검색 파이프라인을 구성한 후 personalized_search_ranking 응답 프로세서를 사용하면 Amazon Personalize Search Ranking 플러그인을 OpenSearch 쿼리에 적용하고 다시 순위가 매겨진 결과를 볼 수 있습니다. 도메인 엔드포인트, OpenSearch 서비스 인덱스, 파이프라인 이름(위에서 구성) 및 쿼리(쿼리에는 "Tom Cruise" 사용)를 지정하도록 코드를 업데이트합니다. 을 위한 user_id에서 검색 결과를 받을 사용자의 ID를 지정하세요. 이 사용자는 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}")

결과 평가

열기 3.Testing.ipynb 노트북을 사용하여 개인화를 사용하는 쿼리와 그렇지 않은 쿼리에 대한 결과를 테스트하고 비교하는 단계를 안내합니다. Amazon Personalize 검색 순위 플러그인은 OpenSearch Service 쿼리 응답에서 검색 결과의 순위를 다시 매깁니다. Amazon Personalize의 순위와 OpenSearch Service의 순위를 모두 고려합니다. 이 노트북은 다음 단계를 안내합니다.

  1. OpenSearch Service 도메인과의 연결을 설정하는 데 필요한 연결 매개변수를 정의합니다. 여기에는 특정 OpenSearch 서비스 설정에 필요한 도메인 엔드포인트, 인증 자격 증명 및 추가 구성 설정을 지정하는 작업이 포함됩니다.
  2. 개인화 매개변수가 있는 쿼리와 개인화 매개변수가 없는 쿼리를 포함하여 샘플 쿼리 세트를 만듭니다. 이러한 쿼리는 개인화가 검색 결과에 미치는 영향을 평가하는 데 사용됩니다.
  3. 개인화를 사용하는 쿼리와 그렇지 않은 쿼리에 대한 결과를 실행하고 비교합니다.

예시에서는 "Tom Cruise"에 대한 쿼리를 사용했고 개인화 매개변수에는 최근 드라마와 로맨스 영화 장르를 시청한 이력이 있는 사용자를 사용했습니다. 후속 검색 결과는 플러그인이 사용자가 관찰한 시청 행동에 따라 권장 사항을 맞춤화하고 우선 순위를 지정하는 방법을 보여줍니다. 이는 개별 사용자 선호도와 참여 패턴을 고려하여 맞춤화되고 선별된 경험을 제공하는 플러그인의 능력을 보여줍니다. 사용자 선호도에 대한 추론을 기반으로 검색 결과를 구체화하고 조정할 수 있는 기능을 통해 관련성과 유용성을 높일 수 있습니다.

개인화된 결과와 개인화되지 않은 결과

ID가 12인 사용자에 대한 결과를 개인화하는 것을 고려해 보겠습니다. 먼저 다음에서 코드를 실행하여 이 사용자의 최근 상호 작용을 확인합니다. 3.Testing.ipynb 노트북을 사용하여 상호작용 기록을 검색하세요. 이를 통해 이 사용자가 최근에 리뷰한 영화 유형을 확인할 수 있으며, 이를 통해 추천을 개인화하는 방법을 알 수 있습니다.

이 예에서는 사용자가 드라마, 로맨스, 스릴러 영화 장르에 관심을 표현한 것을 볼 수 있습니다. 개인화된 추천을 제공하기 위해 먼저 사용자의 장르 선호도를 활용하여 개인화 매개변수가 활성화된 쿼리를 실행합니다. 그런 다음 비교를 위해 개인화를 활성화하지 않고 동일한 쿼리를 실행합니다. 다음 결과는 비개인화 추천 출력과 개인화 추천 출력의 차이를 보여줍니다.

처음 두 열에는 영화 인덱스의 "Tom Cruise" 쿼리에 대한 기본 OpenSearch Service 결과가 표시되어 다양한 장르의 다양한 Tom Cruise 영화를 보여줍니다. 다음 두 열은 동일한 "Tom Cruise" 쿼리에 대한 개인화된 OpenSearch Service 결과를 보여 주지만 드라마, 로맨스, 스릴러 장르에 관심이 있는 사용자를 위해 맞춤화되었습니다. 일반적인 결과와 비교하여 개인화된 결과에서는 사용자가 선호하는 드라마, 로맨스, 스릴러 장르의 Tom Cruise 영화가 눈에 띄게 표시됩니다. 델타는 개인화되지 않은 결과에 비해 개인화된 결과의 순위가 어떻게 다시 지정되었는지 강조하여 사용자의 장르 선호도와 일치하는 영화의 우선순위를 지정합니다. 이는 개인화가 OpenSearch 서비스 결과를 개별 사용자의 취향과 관심 사항에 맞게 조정할 수 있는 방법을 보여줍니다.

이 비교는 Amazon Personalize가 어떻게 OpenSearch Service 영화 결과를 개별 사용자의 관심사에 맞게 사용자 정의할 수 있는지 보여줍니다. 표준 OpenSearch Service는 Tom Cruise에 대한 관련 영화 결과를 보편적으로 제공하는 것을 목표로 하지만 Amazon Personalize는 Tom Cruise 영화에 초점을 맞춰 결과를 맞춤화하며 고유한 시청 기록 및 선호도를 기반으로 이 사용자가 즐길 것이라고 예측합니다.

나란히 표시된 결과는 Amazon Personalize가 영화 결과를 개인에게 맞춤화하여 더욱 타겟팅된 사용자 중심 검색 경험을 제공하는 방법을 보여줍니다.

정리

리소스를 정리하려면 다음 단계를 완료하세요.

  1. 다음 단계를 따르십시오. 4.Cleanup.ipynb 노트북을 통해 생성된 리소스를 정리합니다.
  2. AWS CloudFormation 콘솔에서 생성한 스택을 삭제합니다.

결론

Amazon Personalize 검색 순위 플러그인은 OpenSearch Service와 원활하게 통합되어 맞춤형 검색 경험을 제공합니다. 사용자 행동 데이터와 Amazon Personalize의 ML 기능을 사용하여 플러그인은 OpenSearch Service 결과 순위를 재정렬하여 각 고유 사용자에 대한 관련성을 높일 수 있습니다. 이를 통해 결과에서 가장 관련성이 높은 콘텐츠를 더 높게 표시하는 맞춤형 검색 환경이 만들어집니다. 플러그인은 다양한 사용 사례에 맞게 OpenSearch 서비스 기본 채점과 개인화의 균형을 맞추도록 구성할 수 있습니다. 전반적으로 Amazon Personalize 검색 순위 플러그인은 사용자의 개별 관심 사항과 선호도를 고려하여 OpenSearch Service 검색 관련성과 참여도를 향상시키는 강력한 방법입니다. 몇 가지 구성 단계만 거치면 사용자의 공감을 불러일으키는 관련성이 높은 결과 제공을 시작할 수 있습니다.

추가 리소스


저자에 관하여

제임스 조리 AWS의 Applied AI 부문 수석 솔루션 아키텍트입니다. 그는 개인화 및 추천 시스템에 특별한 관심을 가지고 있으며 전자상거래, 마케팅 기술 및 고객 데이터 분석에 대한 배경 지식을 가지고 있습니다. 여가 시간에는 캠핑과 자동차 경주 시뮬레이션을 즐깁니다.

레이건 로사리오 교육 기술 회사를 위한 확장 가능하고 가용성이 높으며 안전한 클라우드 솔루션 구축을 전문으로 하는 AWS의 솔루션스 아키텍트입니다. 소프트웨어 엔지니어링 및 아키텍처 역할 분야에서 10년 이상의 경험을 보유한 Reagan은 자신의 기술 지식을 활용하여 AWS 고객이 AWS의 폭과 깊이를 활용하는 강력한 클라우드 솔루션을 설계하도록 돕는 것을 좋아합니다.

spot_img

최신 인텔리전스

spot_img