View a markdown version of this page

Amazon Nova 임베딩 사용 - Amazon Nova

Amazon Nova 임베딩 사용

Amazon Nova Multimodal Embeddings는 에이전트 RAG 및 시맨틱 검색 애플리케이션을 위한 멀티모달 임베딩 모델입니다. 단일 모델을 통해 텍스트, 문서, 이미지, 비디오 및 오디오를 지원하므로 교차 모달 검색을 지원합니다. Nova Multimodal Embeddings에서는 이러한 각 콘텐츠 유형을 통합 시맨틱 공간에 매핑하므로 단일 모달, 교차 모달 및 멀티모달 벡터 작업을 수행할 수 있습니다.

콘텐츠가 Nova Embeddings를 통해 전달되면 모델은 해당 콘텐츠를 벡터라고 하는 범용 숫자 형식으로 변환합니다. 벡터는 다양한 검색 기능에 사용할 수 있는 임의의 숫자 값 세트입니다. 유사한 콘텐츠에는 덜 유사한 콘텐츠보다 더 가까운 벡터가 부여됩니다.

애플리케이션:

  • 시맨틱 콘텐츠 검색 및 추천: 콘텐츠에 대한 임베딩을 생성한 후 이를 사용하여 유사한 항목을 찾거나 개인화된 추천을 제공합니다.

  • 멀티모달 검색: 여러 콘텐츠 유형의 임베딩을 결합하여 교차 모달 검색 기능을 구현합니다.

  • RAG: 인터리브 텍스트 및 이미지가 있는 문서와 같은 멀티모달 콘텐츠에서 임베딩을 생성하여 GenAI 애플리케이션의 검색 워크플로를 지원합니다.

주요 기능

이러한 주요 기능은 Nova 임베딩을 차별화합니다.

  • 통합 시맨틱 공간에서 텍스트, 이미지, 문서 이미지, 비디오 및 오디오 지원. 최대 컨텍스트 길이는 8K 토큰 또는 비디오 30초 및 오디오 30초입니다.

  • 동기식 및 비동기식 API: API는 동기식 및 비동기식 사용을 모두 지원합니다.

  • 대용량 파일 분할: 비동기 API는 사용자 정의 파라미터로 제어되는 긴 텍스트, 비디오 및 오디오에 대한 API 기반 분할을 제공하여 대용량 입력을 쉽게 처리할 수 있게 합니다. 이 모델은 각 세그먼트에 대해 단일 임베딩을 생성합니다.

  • 오디오가 포함된 비디오: 오디오와 비디오를 동시에 처리합니다. 두 양식을 모두 나타내는 단일 임베딩을 원하는지 아니면 두 개의 개별 임베딩을 원하는지 지정할 수 있습니다.

  • 임베딩 용도: 의도한 다운스트림 애플리케이션(검색/RAG, 분류, 클러스터링)에 따라 임베딩을 최적화합니다.

  • 차원 크기: 임베딩 정확도와 벡터 스토리지 비용의 균형을 맞추기 위한 4가지 차원 크기: 3072, 1024, 384, 256.

  • 입력 방법: S3 URI를 지정하거나 base64 인코딩으로 인라인 처리하여 임베딩할 콘텐츠를 전달합니다.

임베딩 생성

다음을 완료하여 임베딩을 생성합니다.

텍스트에 대한 동기식 임베딩:

import boto3 import json # Create the Bedrock Runtime client. bedrock_runtime = boto3.client( service_name='bedrock-runtime', region_name='us-east-1', ) # Define the request body. request_body = { 'taskType': 'SINGLE_EMBEDDING', 'singleEmbeddingParams': { 'embeddingPurpose': 'GENERIC_INDEX', 'embeddingDimension': 3072, 'text': {'truncationMode': 'END', 'value': 'Hello, World!'}, }, } try: # Invoke the Nova Embeddings model. response = bedrock_runtime.invoke_model( body=json.dumps(request_body, indent=2), modelId='amazon.nova-2-multimodal-embeddings-v1:0', accept='application/json', contentType='application/json', ) except Exception as e: # Add your own exception handling here. print(e) # Print the request ID. print('Request ID:', response.get('ResponseMetadata').get('RequestId')) # Print the response body. response_body = json.loads(response.get('body').read()) print(json.dumps(response_body, indent=2))

시도:

response = bedrock_runtime.invoke_model(         body=json.dumps(request_body, indent=2),         modelId='amazon.nova-2-multimodal-embeddings-v1:0',         accept='application/json',         contentType='application/json',     ) except Exception as e:     print(e) print('Request ID:', response.get('ResponseMetadata').get('RequestId')) response_body = json.loads(response.get('body').read()) print(json.dumps(response_body, indent=2))

비디오에 대한 비동기 임베딩:

import boto3 bedrock_runtime = boto3.client(     service_name='bedrock-runtime',     region_name='us-east-1', ) model_input = {     'taskType': 'SEGMENTED_EMBEDDING',     'segmentedEmbeddingParams': {         'embeddingPurpose': 'GENERIC_INDEX',         'embeddingDimension': 3072,         'video': {             'format': 'mp4',             'embeddingMode': 'AUDIO_VIDEO_COMBINED',             'source': {                 's3Location': {'uri': 's3://my-bucket/path/to/video.mp4'}             },             'segmentationConfig': {                 'durationSeconds': 15  # Segment into 15 second chunks             },         },     }, }

시도:

response = bedrock_runtime.start_async_invoke(         modelId='amazon.nova-2-multimodal-embeddings-v1:0',         modelInput=model_input,         outputDataConfig={             's3OutputDataConfig': {                 's3Uri': 's3://my-bucket'             }         },     ) except Exception as e:     print(e) print('Request ID:', response.get('ResponseMetadata').get('RequestId')) print('Invocation ARN:', response.get('invocationArn'))

배치 추론

배치 추론을 사용하면 여러 요청을 제출하고 임베딩을 비동기적으로 생성할 수 있습니다. 배치 추론을 사용하면 단일 요청을 보내고 Amazon S3 버킷에서 응답을 생성하여 많은 수의 요청을 효율적으로 처리할 수 있습니다.

  • 만든 파일에서 모델 입력을 정의한 후 파일을 S3 버킷에 업로드합니다.

  • 그런 다음 배치 추론 요청을 제출하고 S3 버킷을 지정합니다.

  • 작업이 완료되면 S3에서 출력 파일을 검색할 수 있습니다.

  • 배치 추론을 사용하여 대규모 데이터 세트에 대한 모델 추론 성능을 개선할 수 있습니다.

배치 추론 데이터의 형식 지정 및 업로드

모델 간접 호출 작업을 제출할 때 선택하거나 지정할 S3 위치에 배치 추론 데이터를 추가해야 합니다. S3 위치에는 다음 항목이 있어야 합니다.

모델 입력을 정의하는 하나 이상의 JSONL 파일. JSONL에는 JSON 객체 행이 포함됩니다. JSONL 파일은 확장명 .jsonl로 끝나야 하며 다음 형식이어야 합니다.

{ "recordId": "record001", "modelInput": { "taskType": "SINGLE_EMBEDDING", "singleEmbeddingParams": { "embeddingPurpose": "GENERIC_INDEX", "embeddingDimension": 3072, "text": { "source": { "s3Location": { "uri": "s3://batch-inference-input-bucket/text_001.txt", "bucketOwner": "111122223333" } }, "truncationMode": "END" } } } }

지원되는 입력 파일 유형

  • 이미지 형식: PNG, JPEG, WEBP, GIF

  • 오디오 형식: MP3, WAV, OGG

  • 비디오 형식: MP4, MOV, MKV, WEBM, FLV, MPEG, MPG, WMV, 3GP