Transformers 및 Amazon OpenSearch Service를 사용하여 테이블 열에 대한 시맨틱 검색 엔진 구축

Transformers 및 Amazon OpenSearch Service를 사용하여 테이블 열에 대한 시맨틱 검색 엔진 구축

소스 노드 : 1986937

에서 유사한 열 찾기 데이터 레이크 데이터 정리 및 주석, 스키마 일치, 데이터 검색 및 여러 데이터 소스에 대한 분석에 중요한 응용 프로그램이 있습니다. 서로 다른 소스에서 데이터를 정확하게 찾고 분석할 수 없다는 것은 데이터 과학자, 의료 연구원, 학계에서 금융 및 정부 분석가에 이르기까지 모든 사람에게 잠재적인 효율성 킬러를 나타냅니다.

기존 솔루션에는 어휘 키워드 검색 또는 정규식 일치가 포함되며, 이는 다양한 데이터 세트에서 열 이름이 없거나 다른 열 이름 지정 규칙과 같은 데이터 품질 문제에 취약합니다(예: zip_code, zcode, postalcode).

이 게시물에서는 열 이름, 열 내용 또는 둘 다를 기반으로 유사한 열을 검색하는 솔루션을 시연합니다. 솔루션은 근사 최근접 이웃 알고리즘 가능 아마존 오픈서치 서비스 의미상 유사한 열을 검색합니다. 검색을 용이하게 하기 위해 사전 훈련된 Transformer 모델을 사용하여 데이터 레이크의 개별 열에 대한 기능 표현(임베딩)을 생성합니다. 문장 변환기 라이브러리 in 아마존 세이지 메이커. 마지막으로 솔루션의 결과와 상호 작용하고 시각화하기 위해 대화형 스트림릿 에서 실행되는 웹 애플리케이션 AWS 파게이트.

우리는 포함 코드 튜토리얼 샘플 데이터 또는 자체 데이터에서 솔루션을 실행하기 위해 리소스를 배포할 수 있습니다.

솔루션 개요

다음 아키텍처 다이어그램은 의미상 유사한 열을 찾기 위한 XNUMX단계 워크플로를 보여줍니다. 첫 번째 단계는 AWS 단계 함수 테이블 형식 열에서 임베딩을 생성하고 OpenSearch Service 검색 색인을 작성하는 워크플로입니다. 두 번째 단계 또는 온라인 추론 단계에서는 Fargate를 통해 Streamlit 애플리케이션을 실행합니다. 웹 응용 프로그램은 입력 검색 쿼리를 수집하고 OpenSearch Service 인덱스에서 쿼리와 가장 유사한 대략적인 k-가장 유사한 열을 검색합니다.

솔루션 아키텍처

그림 1. 솔루션 아키텍처

자동화된 워크플로는 다음 단계로 진행됩니다.

  1. 사용자는 테이블 형식 데이터 세트를 아마존 단순 스토리지 서비스 (Amazon S3) 버킷, AWS 람다 Step Functions 워크플로우를 시작하는 기능.
  2. 워크플로우는 AWS 접착제 CSV 파일을 변환하는 작업 아파치 마루 데이터 형식.
  3. SageMaker 처리 작업은 사전 훈련된 모델 또는 사용자 지정 열 임베딩 모델을 사용하여 각 열에 대한 임베딩을 생성합니다. SageMaker 처리 작업은 Amazon S3의 각 테이블에 대한 열 임베딩을 저장합니다.
  4. Lambda 함수는 OpenSearch Service 도메인과 클러스터를 생성하여 이전 단계에서 생성된 열 임베딩을 인덱싱합니다.
  5. 마지막으로 대화형 Streamlit 웹 애플리케이션이 Fargate와 함께 배포됩니다. 웹 애플리케이션은 유사한 열에 대한 OpenSearch Service 도메인을 검색하기 위해 사용자가 쿼리를 입력할 수 있는 인터페이스를 제공합니다.

다음에서 코드 자습서를 다운로드할 수 있습니다. GitHub의 샘플 데이터 또는 자신의 데이터에서 이 솔루션을 사용해 보십시오. 이 자습서에 필요한 리소스를 배포하는 방법에 대한 지침은 다음에서 확인할 수 있습니다. 깃허브.

전제 조건

이 솔루션을 구현하려면 다음이 필요합니다.

  • An AWS 계정.
  • 다음과 같은 AWS 서비스에 대한 기본 지식 AWS 클라우드 개발 키트 (AWS CDK), Lambda, OpenSearch 서비스 및 SageMaker 처리.
  • 검색 인덱스를 생성하기 위한 테이블 형식의 데이터 세트입니다. 자신의 표 형식 데이터를 가져오거나 다음에서 샘플 데이터 세트를 다운로드할 수 있습니다. GitHub의.

검색 인덱스 구축

첫 번째 단계는 열 검색 엔진 인덱스를 빌드합니다. 다음 그림은 이 단계를 실행하는 Step Functions 워크플로를 보여줍니다.

단계 기능 워크플로우

그림 2 - 단계 기능 워크플로우 - 다중 임베딩 모델

데이터 세트

이 게시물에서는 400개 이상의 테이블 형식 데이터 세트에서 25개 이상의 열을 포함하는 검색 인덱스를 구축합니다. 데이터 세트는 다음 공개 소스에서 가져옵니다.

인덱스에 포함된 테이블의 전체 목록은 다음 코드 자습서를 참조하십시오. GitHub의.

고유한 표 형식 데이터 세트를 가져와서 샘플 데이터를 보강하거나 고유한 검색 인덱스를 구축할 수 있습니다. 개별 CSV 파일 또는 CSV 파일 배치에 대한 검색 인덱스를 각각 구축하기 위해 Step Functions 워크플로를 시작하는 두 개의 Lambda 함수가 포함되어 있습니다.

CSV를 Parquet로 변환

원시 CSV 파일은 AWS Glue를 사용하여 Parquet 데이터 형식으로 변환됩니다. Parquet는 효율적인 압축 및 인코딩을 제공하는 빅 데이터 분석에서 선호되는 열 지향 형식 파일 형식입니다. 실험에서 Parquet 데이터 형식은 원시 CSV 파일에 비해 스토리지 크기가 크게 줄었습니다. 또한 Parquet은 고급 중첩 데이터 구조를 지원하므로 다른 데이터 형식(예: JSON 및 NDJSON)을 변환하기 위한 공통 데이터 형식으로 사용했습니다.

테이블 형식 열 임베딩 만들기

이 게시물의 샘플 테이블 형식 데이터 세트에서 개별 테이블 열에 대한 임베딩을 추출하기 위해 다음에서 사전 훈련된 모델을 사용합니다. sentence-transformers 도서관. 추가 모델은 다음을 참조하십시오. 사전 훈련된 모델.

SageMaker 처리 작업이 실행됩니다. create_embeddings.py(암호) 단일 모델의 경우. 여러 모델에서 임베딩을 추출하기 위해 워크플로는 Step Functions 워크플로에 표시된 대로 병렬 SageMaker 처리 작업을 실행합니다. 이 모델을 사용하여 두 세트의 임베딩을 생성합니다.

  • 컬럼_이름_임베딩 – 열 이름 포함(헤더)
  • 열_내용_임베딩 – 열에 있는 모든 행의 평균 임베딩

열 임베딩 프로세스에 대한 자세한 내용은 에 대한 코드 자습서를 참조하십시오. GitHub의.

SageMaker 처리 단계의 대안은 SageMaker 일괄 변환을 생성하여 대규모 데이터 세트에서 열 임베딩을 가져오는 것입니다. 이렇게 하려면 모델을 SageMaker 엔드포인트에 배포해야 합니다. 자세한 내용은 다음을 참조하십시오. 일괄 변환 사용.

OpenSearch 서비스를 사용한 인덱스 임베딩

이 단계의 마지막 단계에서 Lambda 함수는 열 임베딩을 OpenSearch 서비스 근사 k-Nearest-Neighbor에 추가합니다(kNN) 검색 인덱스. 각 모델에는 자체 검색 인덱스가 할당됩니다. 대략적인 kNN 검색 색인 매개변수에 대한 자세한 내용은 다음을 참조하세요. k-NN.

웹 앱을 사용한 온라인 추론 및 시맨틱 검색

워크플로우의 두 번째 단계는 스트림릿 입력을 제공하고 OpenSearch Service에서 인덱싱된 의미론적으로 유사한 열을 검색할 수 있는 웹 응용 프로그램입니다. 애플리케이션 계층은 애플리케이션로드 밸런서, Fargate 및 Lambda. 애플리케이션 인프라는 솔루션의 일부로 자동으로 배포됩니다.

이 애플리케이션을 사용하면 입력을 제공하고 의미상 유사한 열 이름, 열 내용 또는 둘 다를 검색할 수 있습니다. 또한 임베딩 모델과 검색에서 반환할 가장 가까운 이웃 수를 선택할 수 있습니다. 응용 프로그램은 입력을 수신하고 지정된 모델과 함께 입력을 포함하며 다음을 사용합니다. OpenSearch 서비스에서 kNN 검색 인덱싱된 열 임베딩을 검색하고 주어진 입력과 가장 유사한 열을 찾습니다. 표시되는 검색 결과에는 식별된 열에 대한 테이블 이름, 열 이름 및 유사성 점수와 추가 탐색을 위한 Amazon S3의 데이터 위치가 포함됩니다.

다음 그림은 웹 애플리케이션의 예를 보여줍니다. 이 예에서는 데이터 레이크에서 유사한 열을 검색했습니다. Column Names (페이로드 유형)에 district (페이로드). 사용한 애플리케이션 all-MiniLM-L6-v2임베딩 모델 돌아왔다 10 (k) OpenSearch Service 인덱스에서 가장 가까운 이웃.

신청서가 반환되었습니다. transit_district, city, boroughlocation OpenSearch Service에서 인덱싱된 데이터를 기반으로 가장 유사한 XNUMX개의 열로 표시됩니다. 이 예는 데이터 집합에서 의미론적으로 유사한 열을 식별하는 검색 접근 방식의 기능을 보여줍니다.

웹 애플리케이션 사용자 인터페이스

그림 3: 웹 애플리케이션 사용자 인터페이스

정리

이 자습서에서 AWS CDK가 생성한 리소스를 삭제하려면 다음 명령을 실행합니다.

cdk destroy --all

결론

이 게시물에서는 테이블 형식 열에 대한 시맨틱 검색 엔진을 구축하기 위한 종단 간 워크플로를 제시했습니다.

에서 제공되는 코드 튜토리얼을 통해 자신의 데이터로 오늘 시작하십시오. GitHub의. 제품 및 프로세스에서 ML 사용을 가속화하는 데 도움이 필요한 경우 다음으로 문의하십시오. 아마존 머신 러닝 솔루션 랩.


저자에 관하여

카치 오되메네 AWS AI의 응용 과학자입니다. 그는 AWS 고객의 비즈니스 문제를 해결하기 위해 AI/ML 솔루션을 구축합니다.

테일러 맥널리 Amazon Machine Learning Solutions Lab의 딥 러닝 설계자입니다. 그는 다양한 산업 분야의 고객이 AWS에서 AI/ML을 활용하는 솔루션을 구축하도록 돕습니다. 그는 좋은 커피 한 잔, 야외 활동, 가족 및 활기찬 개와 함께 시간을 즐깁니다.

오스틴 웰치 Amazon ML Solutions Lab의 데이터 과학자입니다. 그는 AWS 공공 부문 고객이 AI 및 클라우드 채택을 가속화할 수 있도록 사용자 지정 딥 러닝 모델을 개발합니다. 여가 시간에는 독서, 여행, 주짓수를 즐깁니다.

타임 스탬프 :

더보기 AWS 빅 데이터