

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# TwelveLabs Marengo Embed 3.0
<a name="model-parameters-marengo-3"></a>

TwelveLabs Marengo Embed 3.0 모델은 비디오, 텍스트, 오디오 또는 이미지 입력에서 향상된 임베딩을 생성합니다. 이 최신 버전은 유사성 검색, 클러스터링 및 기타 기계 학습 작업에 향상된 성능과 정확도를 제공합니다.
+ 공급자 - TwelveLabs
+ 모델 ID - twelvelabs.marengo-embed-3-0-v1:0

Marengo Embed 3.0은 몇 가지 주요 개선 사항을 제공합니다.
+ **확장된 비디오 처리 용량** - 최대 4시간의 비디오 및 오디오 콘텐츠를 처리합니다. 파일은 최대 6GB일 수 있으며, 이는 이전 버전의 두 배 용량입니다. 따라서 전체 스포츠 이벤트, 확장 훈련 비디오 및 전체 영화 제작을 분석하는 데 이상적입니다.
+ **향상된 스포츠 분석** - 모델은 상당한 개선을 제공합니다. 게임 플레이 역학, 플레이어 움직임 및 이벤트 감지를 더 잘 이해할 수 있습니다.
+ **글로벌 다국어 지원** - 12개 언어에서 36개 언어로 언어 기능을 확장했습니다. 이를 통해 글로벌 조직은 다양한 리전 및 시장에서 원활하게 작동하는 통합 검색 및 검색 시스템을 구축할 수 있습니다.
+ **멀티모달 검색 정밀도** - 이미지와 설명 텍스트를 단일 임베딩 요청으로 결합합니다. 이를 통해 시각적 유사성과 의미론적 이해를 결합하여 보다 정확하고 상황에 맞는 검색 결과를 제공할 수 있습니다.
+ **임베딩 차원 감소** - 1024에서 512로 감소하여 스토리지 비용을 절감할 수 있습니다.

TwelveLabs Marengo Embed 3.0 모델은 다음 표에서 Amazon Bedrock 런타임 작업을 지원합니다.
+ 다양한 API 방법 사용 사례에 대한 자세한 내용은 [다양한 모델 추론 방법의 사용 사례에 대해 알아봅니다.다양한 추론 방법](inference-methods.md) 섹션을 참조하세요.
+ 사용자 정의 모델 유형에 대한 자세한 내용은 [Amazon Bedrock에서 추론이 작동하는 방식추론 작동 방식](inference-how.md) 섹션을 참조하세요.
  + 모델 IDs 목록과에서 TwelveLabs Marengo Embed 3.0 지원되는 모델 및 AWS리전을 보려면의 표에서 모델을 검색합니다[Amazon Bedrock에서 지원되는 파운데이션 모델](models-supported.md).
  + 추론 프로파일 ID의 전체 목록의 경우 [추론 프로파일에 지원되는 리전 및 모델](inference-profiles-support.md) 섹션을 참조하세요. 추론 프로필 ID는 AWS리전을 기반으로 합니다.


****  

| API 작업 | 지원되는 모델 유형 | 입력 양식 | 출력 양식 | 
| --- | --- | --- | --- | 
|  InvokeModel  |  미국 동부(버지니아 북부) - [기본 모델](models-supported.md) 및 [추론 프로필](inference-profiles-support.md) 유럽(아일랜드) - [추론 프로필](inference-profiles-support.md) 아시아 태평양(서울) - [기본 모델](models-supported.md)  |  텍스트 이미지 **참고:** 텍스트 및 이미지 인터리브도 지원됩니다.  |  임베딩  | 
| StartAsyncInvoke | [기본 모델](models-supported.md) |  비디오 오디오 이미지 텍스트 **참고:** 인터리브된 텍스트 및 이미지도 지원됩니다.  |  임베딩  | 

**참고**  
`InvokeModel`을 사용하여 검색 쿼리에 대한 임베딩을 생성합니다. `StartAsyncInvoke`를 사용하여 자산에 대한 임베딩을 대규모로 생성합니다.

입력에는 다음과 같은 할당량이 적용됩니다.


****  

| 입력 양식 | 최대 | 
| --- | --- | 
| 텍스트 | 토큰 500개 | 
| 이미지 | 이미지당 5MB | 
| 비디오(S3) | 6GB, 4시간 길이 | 
| 오디오(S3) | 6GB, 4시간 길이 | 

**참고**  
base64 인코딩을 사용하여 오디오 또는 비디오를 인라인으로 정의하는 경우 요청 본문 페이로드가 Amazon Bedrock 25MB 모델 간접 호출 할당량을 초과하지 않는지 확인합니다.

**Topics**
+ [TwelveLabs Marengo Embed 3.0 요청 파라미터](#model-parameters-marengo-3-async-request)
+ [TwelveLabs Marengo Embed 3.0 응답](#model-parameters-marengo-3-response)
+ [TwelveLabs Marengo Embed 3.0 코드 예제](#model-parameters-marengo-3-examples)

## TwelveLabs Marengo Embed 3.0 요청 파라미터
<a name="model-parameters-marengo-3-async-request"></a>

요청을 할 때 모델별 입력이 지정된 필드는 API 작업에 따라 달라집니다.
+ [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) – `body` 요청입니다.
+ [StartAsyncInvoke](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_StartAsyncInvoke.html) - 요청 본문의 `modelInput` 필드에 있습니다.

모델 입력 형식은 입력 형식에 따라 다릅니다.

------
#### [ Text ]

```
{
    "inputType": "text",
    "text": {
        "inputText": "string"
    }
}
```

------
#### [ Image ]

```
{
  "inputType": "image",
  "image": {
    "mediaSource": {
      "base64String": "base64-encoded string", // base64String OR s3Location, exactly one
      "s3Location": {
        "uri": "s3://amzn-s3-demo-bucket/folder/dog.jpg",
        "bucketOwner": "123456789012"
      }
    }
  }
}
```

------
#### [ Text & image ]

```
{
  "inputType": "text_image",
  "text_image": {
    "inputText": "man walking a dog",
    "mediaSource": {
      "base64String": "base64-encoded string", // base64String OR s3Location, exactly one
      "s3Location": {
        "uri": "s3://amzn-s3-demo-bucket/folder/dog.jpg",
        "bucketOwner": "123456789012"
      }
    }
  }
}
```

------
#### [ Audio ]

```
{
  "inputType": "audio",
  "audio": {
    "mediaSource": {
      "base64String": "base64-encoded string", // base64String OR s3Location, exactly one
      "s3Location": {
        "uri": "s3://amzn-s3-demo-bucket/audio/a.wav",
        "bucketOwner": "123456789012"
      }
    },
    "startSec": 0,
    "endSec": 6,
    "segmentation": {
      "method": "fixed", 
      "fixed": {
        "durationSec": 6
      }
    },
    "embeddingOption": [
      "audio",
      "transcription"
    ], // optional, default=both
    "embeddingScope": [
      "clip",
      "asset"
    ] // optional, one or both
  }
}
```

------
#### [ Video ]

```
{
  "inputType": "video",
  "video": {
    "mediaSource": {
      "base64String": "base64-encoded string", // base64String OR s3Location, exactly one
      "s3Location": {
        "uri": "s3://amzn-s3-demo-bucket/video/clip.mp4",
        "bucketOwner": "123456789012"
      }
    },
    "startSec": 0,
    "endSec": 6,
    "segmentation": {
      "method": "dynamic", // dynamic OR fixed, exactly one
      "dynamic": {
        "minDurationSec": 4
      }
      "method": "fixed",
      "fixed": {
        "durationSec": 6
      }
    },
    "embeddingOption": [
      "visual",
      "audio", 
      "transcription"
    ], // optional, default=all
    "embeddingScope": [
      "clip",
      "asset"
    ] // optional, one or both
  },
  "inferenceId": "some inference id"
}
```

------

입력 파라미터에 대한 자세한 내용은 다음 섹션을 확장하세요.

### inputType
<a name="model-parameters-marengo-3-inputType"></a>

임베딩 방식입니다.
+ **유형**: 문자열
+ **필수 항목 여부:** 예
+ **유효한 값:** `text` \$1 `image` \$1 `text_image` \$1 `audio` \$1 `video`

### inputText
<a name="model-parameters-marengo-3-inputText"></a>

임베딩할 텍스트입니다.
+ **유형**: 문자열
+ **필수:** 예(호환되는 입력 유형의 경우)
+ **호환되는 입력 유형:** 텍스트

### mediaSource
<a name="model-parameters-marengo-3-mediaSource"></a>

미디어 소스에 대한 정보를 포함합니다.
+ **유형:** 객체
+ **필수:** 예(호환되는 유형인 경우)
+ **호환되는 입력 유형:** 이미지, 비디오, 오디오

요청 본문의 `mediaSource` 객체 형식은 미디어가 Base64 인코딩 문자열 또는 S3 위치로 정의되는지 여부에 따라 달라집니다.
+ **Base64-encoded 문자열**

  ```
  {
      "mediaSource": {
          "base64String": "base64-encoded string"
      }
  }
  ```
  + `base64String` - 미디어용 Base64 인코딩 문자열입니다.
+ **S3 위치** - S3 URI와 버킷 소유자를 지정합니다.

  ```
  {
      "s3Location": {
          "uri": "string",
          "bucketOwner": "string"
      }
  }
  ```
  + `uri` - 미디어가 포함된 S3 URI입니다.
  + `bucketOwner` - S3 버킷 소유자의 AWS계정 ID입니다.

### embeddingOption
<a name="model-parameters-marengo-3-embeddingOption"></a>

검색할 임베딩 유형을 지정합니다.
+ **유형**: 목록
+ **필수 항목 여부**: 아니요
+ **목록 멤버에 유효한 값:**
  + `visual` - 비디오의 시각적 임베딩입니다.
  + `audio` - 비디오에 오디오를 임베딩합니다.
  + `transcription` - 트랜스크립션된 텍스트의 임베딩입니다.
+ **기본값:**
  + 동영상: ["시각", "오디오", "트랜스크립션"]
  + 오디오: ["audio", "transcription"]
+ **호환되는 입력 유형:** 비디오, 오디오

### embeddingScope
<a name="model-parameters-marengo-3-embeddingScope"></a>

검색할 임베딩의 범위를 지정합니다.
+ **유형**: 목록
+ **필수 항목 여부**: 아니요
+ **목록 멤버에 유효한 값:**
  + `clip` - 각 클립에 대한 임베딩을 반환합니다.
  + `asset` - 전체 자산에 대한 임베딩을 반환합니다.
+ **호환되는 입력 유형:** 비디오, 오디오

### startSec
<a name="model-parameters-marengo-3-startSec"></a>

처리가 시작되어야 하는 클립의 초 단위 시점입니다.
+ **유형**: Double
+ **필수 항목 여부**: 아니요
+ **최솟값:** 0
+ **기본값:** 0
+ **호환되는 입력 유형:** 비디오, 오디오

### endSec
<a name="model-parameters-marengo-3-endSec"></a>

처리가 종료되어야 하는 초 단위 시점입니다.
+ **유형**: Double
+ **필수 항목 여부**: 아니요
+ **최소값:** startSec \$1 세그먼트 길이
+ **최댓값:** 미디어 지속 시간
+ **기본값:** 미디어 기간
+ **호환되는 입력 유형:** 비디오, 오디오

### 세분화
<a name="model-parameters-marengo-3-segmentation"></a>

임베딩 생성을 위해 미디어를 세그먼트로 나누는 방법을 정의합니다.
+ **유형:** 객체
+ **필수 항목 여부**: 아니요
+ **호환되는 입력 유형:** 비디오, 오디오

분할 객체에는 `method` 필드와 메서드별 파라미터가 포함됩니다.
+ `method` - 사용할 분할 방법입니다. 유효한 값: `dynamic` \$1 `fixed`
+ `dynamic` - 비디오의 경우는 샷 경계 감지를 사용하여 콘텐츠를 동적으로 분할합니다. 다음으로 구성됩니다.
  + `minDurationSec` - 각 세그먼트의 최소 초 단위 기간입니다. 유형: 정수입니다. 범위: 1\$15. 기본값: 4.
+ `fixed` - 콘텐츠를 동일한 기간의 세그먼트로 나눕니다. 다음으로 구성됩니다.
  + `durationSec` - 각 세그먼트의 초 단위 지속 시간입니다. 유형: 정수입니다. 범위: 1\$110. 기본값: 6.

**기본 동작**:
+ 비디오: 샷 경계 감지와 함께 동적 분할을 사용합니다.
+ 오디오: 고정 분할을 사용합니다. 콘텐츠는 가능한 한 균등하게 분할되며 세그먼트는 10초에 가깝습니다.

### inferenceId
<a name="model-parameters-marengo-3-inferenceId"></a>

추론 요청의 고유 식별자입니다.
+ **유형**: 문자열
+ **필수 항목 여부**: 아니요

## TwelveLabs Marengo Embed 3.0 응답
<a name="model-parameters-marengo-3-response"></a>

출력 임베딩 및 관련 메타데이터의 위치는 간접 호출 방법에 따라 달라집니다.
+ InvokeModel - 응답 본문에 있습니다.
+ StartAsyncInvoke -에 정의된 S3 버킷에서 비동기 호출 작업이 완료된 `s3OutputDataConfig`후.

임베딩 벡터가 여러 개 있는 경우 출력은 각각 벡터와 관련 메타데이터를 포함하는 객체 목록입니다.

출력 임베딩 벡터의 형식은 다음과 같습니다.

```
{
  "data": {
    "embedding": [
    0.111, 0.234, ...
    ],
    "embeddingOption": ["visual", "audio", "transcription" (for video input) | "audio", "transcription" (for audio input)],
    "embeddingScope": ["asset" | "clip"],
    "startSec": 0,
    "endSec": 4.2
  }
}
```

임베딩은 부동 소수점 배열로 반환됩니다.

이 응답이 표시되는 위치는 사용한 API 메서드에 따라 달라집니다.
+ InvokeModel - 응답 본문에 표시됩니다.
+ StartAsyncInvoke - 요청에서 지정한 S3 위치에 표시됩니다. 응답은를 반환합니다`invocationArn`. 이를 사용하여 비동기 호출에 대한 메타데이터를 가져올 수 있습니다. 여기에는 상태 및 결과가 기록되는 S3 위치가 포함됩니다.

응답 파라미터에 대한 자세한 내용은 다음 섹션을 확장하세요.

### 임베딩
<a name="model-parameters-marengo-3-embedding"></a>

입력의 벡터 표현을 임베딩합니다.
+ **유형:** Double 목록

### embeddingOption
<a name="model-parameters-marengo-3-embeddingOption-response"></a>

임베딩의 유형입니다.
+ **유형**: 문자열
+ **가능한 값:**
  + 시각적 객체 - 비디오의 시각적 객체 임베딩입니다.
  + 오디오 - 비디오에 오디오를 임베딩합니다.
  + 트랜스크립션 - 트랜스크립션된 텍스트의 임베딩입니다.
+ **호환되는 입력 유형:** 비디오, 오디오

### embeddingScope
<a name="model-parameters-marengo-3-embeddingScope"></a>

검색할 임베딩의 범위를 지정합니다.
+ **유형**: 문자열

다음 값 중 하나 이상을 포함할 수 있습니다.
+ 클립: 각 클립에 대한 임베딩을 반환합니다.
+ asset: 전체 자산에 대한 임베딩을 반환합니다.

### startSec
<a name="model-parameters-marengo-3-startSec-response"></a>

클립의 시작 오프셋입니다.
+ **유형**: Double
+ **호환되는 입력 유형:** 비디오, 오디오

### endSec
<a name="model-parameters-marengo-3-endSec-response"></a>

클립의 끝 오프셋입니다. 텍스트, 이미지 및 text\$1image 임베딩에는 적용되지 않습니다.
+ **유형**: Double
+ **호환되는 입력 유형:** 비디오, 오디오

## TwelveLabs Marengo Embed 3.0 코드 예제
<a name="model-parameters-marengo-3-examples"></a>

이 섹션에서는 Python을 사용하여 다양한 입력 유형으로 TwelveLabs Marengo Embed 3.0 모델을 사용하는 방법을 보여줍니다. 이 예제에서는 모델별 입력을 정의하고 모델 호출을 실행하는 방법을 보여줍니다.

**참고**  
InvokeModel은 이미지 인터리브 입력이 있는 텍스트, 이미지 및 텍스트를 지원합니다. 비디오 및 오디오 입력의 경우 StartAsyncInvoke를 사용합니다.

다음 단계에 따라 코드를 통합합니다.

**1. 모델별 입력 정의**  
입력 유형에 따라 모델별 입력을 정의합니다.

------
#### [ Text ]

```
# Create the model-specific input
model_id = "twelvelabs.marengo-embed-3-0-v1:0"
# Replace the us prefix depending on your region
inference_profile_id = "us.twelvelabs.marengo-embed-3-0-v1:0"

model_input = {
    "inputType": "text",
    "text": {
        "inputText": "man walking a dog"
    }
}
```

------
#### [ Image ]

```
# Create the model-specific input
model_id = "twelvelabs.marengo-embed-3-0-v1:0"
# Replace the us prefix depending on your region
inference_profile_id = "us.twelvelabs.marengo-embed-3-0-v1:0"

model_input = {
    "inputType": "image",
    "image": {
        "mediaSource": {
            "s3Location": {
                "uri": "s3://amzn-s3-demo-bucket/my_image.png",
                "bucketOwner": "123456789012"
            }
        }
    }
}
```

------
#### [ Text & image ]

```
# Create the model-specific input
model_id = "twelvelabs.marengo-embed-3-0-v1:0"
# Replace the us prefix depending on your region
inference_profile_id = "us.twelvelabs.marengo-embed-3-0-v1:0"

model_input = {
    "inputType": "text_image",
    "text_image": {
        "inputText": "man walking a dog",
        "mediaSource": {
            "s3Location": {
                "uri": "s3://amzn-s3-demo-bucket/my_image.jpg",
                "bucketOwner": "123456789012"
            }
        }
    }
}
```

------
#### [ Audio ]

```
# Create the model-specific input
model_id = "twelvelabs.marengo-embed-3-0-v1:0"
# Replace the us prefix depending on your region
inference_profile_id = "us.twelvelabs.marengo-embed-3-0-v1:0"
 
model_input = {
    "inputType": "audio",
    "audio": {
        "mediaSource": {  
            "s3Location": { 
                "uri": "s3://amzn-s3-demo-bucket/my-audio.wav", 
                "bucketOwner": "123456789012" 
            }
        },
        "startSec": 0,
        "endSec": 5,
        "segmentation": {
            "method": "fixed",
            "fixed": {
                "durationSec": 5
            }
        },
        "embeddingScope": ["clip", "asset"],
        "embeddingOption": ["audio"]
    }
}
```

------
#### [ Video ]

```
# Create the model-specific input
model_id = "twelvelabs.marengo-embed-3-0-v1:0"
# Replace the us prefix depending on your region
inference_profile_id = "us.twelvelabs.marengo-embed-3-0-v1:0"
 
model_input = {
    "inputType": "video",
    "video": {
        "mediaSource": {
            "s3Location": {
                "uri": "s3://amzn-s3-demo-bucket/my-video.mp4",
                "bucketOwner": "123456789012"
            }
        },
        "startSec": 10,
        "endSec": 20,
        "segmentation": {
            "method": "fixed",
            "fixed": {
                "durationSec": 5
            }
        },
        "embeddingOption": [
            "visual", 
            "audio"
        ],
        "embeddingScope": [
            "clip",
            "asset"
        ]
    }
}
```

------

**2. 모델 입력을 사용하여 모델 간접 호출 실행**  
그런 다음 선택한 모델 간접 호출 방법에 해당하는 코드 조각을 추가합니다.

------
#### [ InvokeModel ]

```
# Run model invocation with InvokeModel
import boto3
import json

# Initialize the Bedrock Runtime client
client = boto3.client('bedrock-runtime')

# Make the request
response = client.invoke_model(
    modelId=inference_profile_id,
    body=json.dumps(model_input)
)

# Print the response body
response_body = json.loads(response['body'].read().decode('utf-8'))

print(response_body)
```

------
#### [ StartAsyncInvoke ]

```
# Run model invocation asynchronously
import boto3
import json

# Initalize the Bedrock Runtime client.
client = boto3.client("bedrock-runtime")

try:
    # Start the asynchronous job
    invocation = client.start_async_invoke(
        modelId=model_id,
        modelInput=model_input,
        outputDataConfig={
            "s3OutputDataConfig": {
                "s3Uri": "s3://amzn-s3-demo-bucket"
            }
        }
    )

    # Print the response JSON
    print("Response:")
    print(json.dumps(invocation, indent=2, default=str))

except Exception as e:
    # Implement error handling here.
    message = e.response["Error"]["Message"]
    print(f"Error: {message}")
```

------