Amazon OpenSearch Service의 AI/ML 커넥터를 사용한 강력한 신경 검색 | 아마존 웹 서비스

Amazon OpenSearch Service의 AI/ML 커넥터를 사용한 강력한 신경 검색 | 아마존 웹 서비스

소스 노드 : 3068091

신경망 검색 기능 출시로 아마존 오픈서치 서비스 OpenSearch 2.9에서는 이제 AI/ML 모델과 통합하여 의미 체계 검색 및 기타 사용 사례를 지원하는 것이 쉬워졌습니다. OpenSearch 서비스는 2020년에 k-NN(k-Nearest Neighbor) 기능이 도입된 이후 어휘 검색과 벡터 검색을 모두 지원해 왔습니다. 그러나 의미 체계 검색을 구성하려면 수집 및 검색을 위해 기계 학습(ML) 모델을 통합하는 프레임워크를 구축해야 했습니다. 신경망 검색 기능은 수집 및 검색 중에 텍스트를 벡터로 쉽게 변환할 수 있습니다. 검색 중에 신경망 쿼리를 사용하면 쿼리는 벡터 임베딩으로 변환되고 k-NN은 코퍼스에서 가장 가까운 벡터 임베딩을 반환하는 데 사용됩니다.

신경망 검색을 사용하려면 ML 모델을 설정해야 합니다. AI/ML 커넥터를 AWS AI 및 ML 서비스(예: 아마존 세이지 메이커 or 아마존 기반암) 또는 타사 대안. OpenSearch Service 버전 2.9부터 AI/ML 커넥터는 신경 검색과 통합되어 데이터 코퍼스 및 쿼리를 벡터 임베딩으로 변환하는 작업을 단순화하고 운영화함으로써 벡터 수화 및 검색의 복잡성을 상당 부분 제거합니다.

이 게시물에서는 OpenSearch Service 콘솔을 통해 AI/ML 커넥터를 외부 모델에 구성하는 방법을 보여줍니다.

솔루션 개요

특히 이 게시물에서는 SageMaker에서 모델에 연결하는 과정을 안내합니다. 그런 다음 ML 모델 연결을 통해 지원되는 사용 사례의 예로 커넥터를 사용하여 OpenSearch 서비스에서 의미 체계 검색을 구성하는 방법을 안내합니다. Amazon Bedrock 및 SageMaker 통합은 현재 OpenSearch Service 콘솔 UI에서 지원되며 UI 지원 자사 및 타사 통합 목록은 계속해서 늘어날 것입니다.

UI를 통해 지원되지 않는 모델의 경우 대신 사용 가능한 API와 ML 청사진. 자세한 내용은 다음을 참조하십시오. OpenSearch 모델 소개. 각 커넥터에 대한 청사진은 다음에서 찾을 수 있습니다. ML Commons GitHub 저장소.

사전 조건

OpenSearch Service 콘솔을 통해 모델을 연결하기 전에 OpenSearch Service 도메인을 생성하세요. 지도 AWS 자격 증명 및 액세스 관리 (IAM) 역할 이름 LambdaInvokeOpenSearchMLCommonsRole 백엔드 역할로 ml_full_access 다음 비디오에 표시된 대로 OpenSearch 대시보드에서 보안 플러그인을 사용하여 역할을 수행합니다. OpenSearch 서비스 통합 워크플로우는 다음을 사용하도록 미리 채워져 있습니다. LambdaInvokeOpenSearchMLCommonsRole 기본적으로 OpenSearch 서비스 도메인과 SageMaker에 배포된 모델 사이에 커넥터를 생성하는 IAM 역할입니다. OpenSearch Service 콘솔 통합에서 사용자 지정 IAM 역할을 사용하는 경우 사용자 지정 역할이 다음을 사용하여 백엔드 역할로 매핑되었는지 확인하세요. ml_full_access 템플릿을 배포하기 전에 권한이 필요합니다.

AWS CloudFormation을 사용하여 모델 배포

다음 비디오는 OpenSearch Service 콘솔을 사용하여 Amazon SageMaker에서 몇 분 안에 모델을 배포하고 AI 커넥터를 통해 모델 ID를 생성하는 단계를 보여줍니다. 첫 번째 단계는 선택하는 것입니다. 통합 OpenSearch Service AWS 콘솔의 탐색 창에서 사용 가능한 통합 목록으로 연결됩니다. 통합은 필요한 입력을 요청하는 UI를 통해 설정됩니다.

통합을 설정하려면 OpenSearch 서비스 도메인 엔드포인트를 제공하고 모델 연결을 고유하게 식별하는 모델 이름만 제공하면 됩니다. 기본적으로 템플릿은 Hugging Face 문장 변환기 모델을 배포합니다. djl://ai.djl.huggingface.pytorch/sentence-transformers/all-MiniLM-L6-v2.

당신이 선택할 때 스택 생성, 귀하는 다음 주소로 연결됩니다: AWS 클라우드 포메이션 콘솔. CloudFormation 템플릿은 다음 다이어그램에 자세히 설명된 아키텍처를 배포합니다.

CloudFormation 스택은 AWS 람다 모델을 배포하는 애플리케이션 아마존 단순 스토리지 서비스 (Amazon S3) 커넥터를 생성하고 출력에 모델 ID를 생성합니다. 그런 다음 이 모델 ID를 사용하여 의미 체계 색인을 생성할 수 있습니다.

기본 all-MiniLM-L6-v2 모델이 목적에 부합하지 않는 경우 모델 아티팩트를 액세스 가능한 S3 객체로 제공하여 선택한 모델 호스트(SageMaker 또는 Amazon Bedrock)에 원하는 텍스트 임베딩 모델을 배포할 수 있습니다. 또는 다음 중 하나를 선택할 수 있습니다. 사전 훈련된 언어 모델 SageMaker에 배포합니다. 엔드포인트 및 모델 설정에 대한 지침은 다음을 참조하세요. 사용 가능한 Amazon SageMaker 이미지.

SageMaker는 모든 사용 사례에 대해 고성능, 저비용 ML을 지원하는 광범위한 도구 세트를 통합하여 모델 모니터링, 서버리스 호스팅, 지속적인 교육 및 배포를 위한 워크플로 자동화와 같은 주요 이점을 제공하는 완전 관리형 서비스입니다. SageMaker를 사용하면 텍스트 임베딩 모델의 수명 주기를 호스팅 및 관리하고 이를 사용하여 OpenSearch Service에서 의미론적 검색 쿼리를 강화할 수 있습니다. 연결되면 SageMaker는 모델을 호스팅하고 OpenSearch 서비스는 SageMaker의 추론 결과를 기반으로 쿼리하는 데 사용됩니다.

OpenSearch 대시보드를 통해 배포된 모델 보기

CloudFormation 템플릿이 OpenSearch Service 도메인에 모델을 성공적으로 배포했는지 확인하고 모델 ID를 얻으려면 OpenSearch Dashboards Dev Tools를 통해 ML Commons REST GET API를 사용할 수 있습니다.

GET _plugins REST API는 이제 모델 상태를 볼 수 있는 추가 API를 제공합니다. 다음 명령을 사용하면 원격 모델의 상태를 확인할 수 있습니다.

GET _plugins/_ml/models/<modelid>

다음 스크린샷에 표시된 것처럼 DEPLOYED 응답의 상태는 모델이 OpenSearch 서비스 클러스터에 성공적으로 배포되었음을 나타냅니다.

또는 다음을 사용하여 OpenSearch Service 도메인에 배포된 모델을 볼 수 있습니다. 기계 학습 OpenSearch 대시보드 페이지.

이 페이지에는 모델 정보와 배포된 모든 모델의 상태가 나열됩니다.

모델 ID를 사용하여 신경 파이프라인 만들기

모델의 상태가 다음 중 하나로 표시되는 경우 DEPLOYED 개발자 도구 또는 녹색 및 응답 OpenSearch 대시보드에서는 모델 ID를 사용하여 신경 수집 파이프라인을 구축할 수 있습니다. 다음 수집 파이프라인은 도메인의 OpenSearch 대시보드 개발자 도구에서 실행됩니다. 모델 ID를 도메인에 배포된 모델에 대해 생성된 고유 ID로 바꿔야 합니다.

PUT _ingest/pipeline/neural-pipeline
{
  "description": "Semantic Search for retail product catalog ",
  "processors" : [
    {
      "text_embedding": {
        "model_id": "sfG4zosBIsICJFsINo3X",
        "field_map": {
           "description": "desc_v",
           "name": "name_v"
        }
      }
    }
  ]
}

신경 파이프라인을 기본 파이프라인으로 사용하여 의미 체계 검색 인덱스 생성

이제 이전 단계에서 생성한 새 신경 파이프라인을 사용하도록 구성된 기본 파이프라인을 사용하여 인덱스 매핑을 정의할 수 있습니다. 벡터 필드가 다음과 같이 선언되었는지 확인하세요. knn_vector 치수는 SageMaker에 배포된 모델에 적합합니다. SageMaker에서 all-MiniLM-L6-v2 모델을 배포하기 위해 기본 구성을 유지한 경우 다음 설정을 그대로 유지하고 Dev Tools에서 명령을 실행하십시오.

PUT semantic_demostore
{
  "settings": {
    "index.knn": true,  
    "default_pipeline": "neural-pipeline",
    "number_of_shards": 1,
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "desc_v": {
        "type": "knn_vector",
        "dimension": 384,
        "method": {
          "name": "hnsw",
          "engine": "nmslib",
          "space_type": "cosinesimil"
        }
      },
      "name_v": {
        "type": "knn_vector",
        "dimension": 384,
        "method": {
          "name": "hnsw",
          "engine": "nmslib",
          "space_type": "cosinesimil"
        }
      },
      "description": {
        "type": "text" 
      },
      "name": {
        "type": "text" 
      } 
    }
  }
}

샘플 문서를 수집하여 벡터 생성

이 데모에서는 샘플 소매 데모 스토어 제품 카탈로그 새로운 semantic_demostore 색인. 사용자 이름, 비밀번호, 도메인 엔드포인트를 도메인 정보로 바꾸고 원시 데이터를 OpenSearch Service에 수집합니다.

curl -XPOST -u 'username:password' 'https://domain-end-point/_bulk' --data-binary @semantic_demostore.json -H 'Content-Type: application/json'

새로운 semantic_demostore 인덱스 검증

이제 OpenSearch Service 도메인에 데이터 세트를 수집했으므로 모든 필드를 가져오는 간단한 검색을 사용하여 필요한 벡터가 생성되었는지 확인합니다. 필드가 다음과 같이 정의되었는지 확인합니다. knn_vectors 필요한 벡터를 갖습니다.

검색 결과 비교 도구를 사용하여 신경망 검색을 통해 제공되는 어휘 검색과 의미 검색을 비교하세요.

XNUMXD덴탈의 검색 결과 비교 도구 OpenSearch 대시보드에서는 프로덕션 워크로드에 사용할 수 있습니다. 다음으로 이동할 수 있습니다. 검색결과 비교 페이지에서 앞서 생성한 모델 ID를 사용하도록 구성된 어휘 검색과 신경망 검색 간의 쿼리 결과를 비교합니다.

정리

CloudFormation 스택을 삭제하면 이 게시물의 지침에 따라 생성한 리소스를 삭제할 수 있습니다. 그러면 SageMaker에 배포된 모델이 포함된 Lambda 리소스와 S3 버킷이 삭제됩니다. 다음 단계를 완료하세요.

  1. AWS CloudFormation 콘솔에서 스택 세부 정보 페이지로 이동합니다.
  2. 왼쪽 메뉴에서 ..

  1. 왼쪽 메뉴에서 . 확인.

AWS CloudFormation 콘솔에서 스택 삭제 진행 상황을 모니터링할 수 있습니다.

CloudFormation 스택을 삭제해도 SageMaker 도메인에 배포된 모델과 생성된 AI/ML 커넥터는 삭제되지 않습니다. 이는 이러한 모델과 커넥터가 도메인 내의 여러 인덱스와 연결될 수 있기 때문입니다. 모델 및 관련 커넥터를 구체적으로 삭제하려면 다음 스크린샷에 표시된 대로 모델 API를 사용하세요.

첫째, undeploy OpenSearch 서비스 도메인 메모리의 모델:

POST /_plugins/_ml/models/<model_id>/_undeploy

그런 다음 모델 인덱스에서 모델을 삭제할 수 있습니다.

DELETE /_plugins/_ml/models/<model_id>

마지막으로 커넥터 인덱스에서 커넥터를 삭제합니다.

DELETE /_plugins/_ml/connectors/<connector_id>

결론

이 게시물에서는 SageMaker에서 모델을 배포하고, OpenSearch 서비스 콘솔을 사용하여 AI/ML 커넥터를 생성하고, 신경 검색 인덱스를 구축하는 방법을 배웠습니다. OpenSearch Service에서 AI/ML 커넥터를 구성하는 기능은 외부 모델에 대한 통합을 기본으로 만들어 벡터 수화 프로세스를 단순화합니다. 신경 수집 파이프라인과 모델 ID를 사용하여 수집 및 검색 중에 즉석에서 벡터 임베딩을 생성하는 신경 검색을 사용하여 몇 분 안에 신경 검색 인덱스를 생성할 수 있습니다.

이러한 AI/ML 커넥터에 대해 자세히 알아보려면 다음을 참조하세요. AWS 서비스용 Amazon OpenSearch Service AI 커넥터, 의미 체계 검색을 위한 AWS CloudFormation 템플릿 통합타사 ML 플랫폼용 커넥터 만들기.


저자에 관하여

아루나 고빈다라주 Amazon OpenSearch 전문가 솔루션 설계자이며 많은 상용 및 오픈 소스 검색 엔진과 협력해 왔습니다. 그녀는 검색, 관련성, 사용자 경험에 열정을 갖고 있습니다. 최종 사용자 신호를 검색 엔진 행동과 연관시키는 그녀의 전문 지식은 많은 고객이 검색 경험을 개선하는 데 도움이 되었습니다.

다그니 브라운 OpenSearch에 중점을 두고 있는 AWS의 수석 제품 관리자입니다.

타임 스탬프 :

더보기 AWS 빅 데이터