

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan penyematan Amazon Nova
<a name="embeddings"></a>

Amazon Nova Multimodal Embeddings adalah model embeddings multimodal untuk RAG agen dan aplikasi pencarian semantik. Ini mendukung teks, dokumen, gambar, video dan audio melalui satu model, memungkinkan pengambilan lintas modal. Nova Multimodal Embeddings memetakan masing-masing jenis konten ini ke dalam ruang semantik terpadu, memungkinkan Anda untuk melakukan operasi vektor unimodal, lintas-modal, dan multimodal.

Ketika sepotong konten dilewatkan melalui penyematan Nova, model mengubah konten itu menjadi format numerik universal, yang disebut sebagai vektor. Vektor adalah seperangkat nilai numerik yang dapat digunakan untuk berbagai fungsi pencarian. Konten serupa diberikan vektor yang lebih dekat daripada konten yang kurang mirip. 

 Aplikasi:
+ Pengambilan dan Rekomendasi Konten Semantik: Buat penyematan untuk konten Anda, lalu gunakan untuk menemukan item serupa atau memberikan rekomendasi yang dipersonalisasi. 
+ Pencarian Multimodal: Gabungkan penyematan dari berbagai jenis konten untuk mengaktifkan kemampuan pencarian lintas modal.
+ RAG: Hasilkan penyematan dari konten multimodal seperti dokumen dengan teks dan gambar yang disisipkan untuk memberi daya pada alur kerja pengambilan Anda untuk aplikasi GenAI.

## Fitur utama
<a name="embeddings-features"></a>

 Fitur-fitur utama ini membedakan Nova Embeddings: 
+ Support untuk teks, gambar, gambar dokumen, video, dan audio dalam ruang semantik terpadu. Panjang konteks maksimum adalah 8K token atau 30-an video dan 30-an audio.
+ Sinkron dan asinkron APIs: API mendukung penggunaan sinkron dan asinkron.
+ Segmentasi file besar: API async memudahkan untuk bekerja dengan input besar dengan menyediakan segmentasi yang dibangun API untuk teks panjang, video, dan audio, yang dikendalikan oleh parameter yang ditentukan pengguna. Model akan menghasilkan satu embedding untuk setiap segmen.
+ Video dengan audio: Proses video dengan audio secara bersamaan. Tentukan apakah Anda ingin satu penyematan yang mewakili kedua modalitas atau dua penyematan terpisah. 
+ Tujuan penyematan: Optimalkan penyematan Anda tergantung pada aplikasi hilir yang dimaksud (retrieval/RAG/Search, klasifikasi, pengelompokan). 
+ Ukuran dimensi: 4 ukuran dimensi untuk menukar akurasi penyematan dan biaya penyimpanan vektor: 3072; 1024; 384; 256.
+ Metode input: Lulus konten yang akan disematkan dengan menentukan URI S3 atau inline sebagai pengkodean base64.

## Menghasilkan embeddings
<a name="embeddings-examples"></a>

 Lengkapi yang berikut ini untuk menghasilkan embeddings. 

Penyematan sinkron untuk teks: 

```
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))
```

 coba: 

```
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))
```

 Penyematan asinkron untuk video: 

```
 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 
            }, 
        }, 
    }, 
}
```

 coba: 

```
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'))
```

**Inferensi Batch**

 Dengan inferensi batch, Anda dapat mengirimkan beberapa permintaan dan menghasilkan penyematan secara asinkron. Inferensi Batch membantu Anda memproses banyak permintaan secara efisien dengan mengirimkan satu permintaan dan menghasilkan respons dalam bucket Amazon S3. 
+  Setelah menentukan input model dalam file yang Anda buat, Anda mengunggah file ke bucket S3. 
+  Anda kemudian mengirimkan permintaan inferensi batch dan menentukan bucket S3. 
+ Setelah pekerjaan selesai, Anda dapat mengambil file output dari S3. 
+  Anda dapat menggunakan inferensi batch untuk meningkatkan kinerja inferensi model pada kumpulan data besar. 

**Format dan unggah data inferensi batch Anda**

Anda harus menambahkan data inferensi batch ke lokasi S3 yang akan Anda pilih atau tentukan saat mengirimkan pekerjaan pemanggilan model. Lokasi S3 harus item berikut: 

 Setidaknya satu file JSONL yang mendefinisikan input model. Sebuah JSONL berisi baris objek JSON. File JSONL Anda harus diakhiri dengan ekstensi.jsonl dan dalam format berikut: 

```
{
    "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"
            }
        }
    }
}
```

**Jenis file masukan yang didukung**
+ Format Gambar: PNG, JPEG, WEBP, GIF
+ Format Audio: MP3, WAV, OGG
+ Format Video: MP4, MOV, MKV, WEBM, FLV, MPEG, MPG, WMV, 3GP