Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan Nova Embeddings
Amazon Nova Multimodal Embeddings adalah model embeddings state-of-the-art multimodal untuk RAG agen dan aplikasi pencarian semantik. Ini adalah model embeddings terpadu pertama yang mendukung teks, dokumen, gambar, video, dan audio melalui satu model, untuk memungkinkan pengambilan lintas modal dengan akurasi terdepan. Nova Multimodal Embeddings memetakan masing-masing jenis konten ini ke dalam ruang semantik terpadu yang memungkinkan pengembang untuk melakukan operasi vektor unimodal, lintas-modal, dan multimodal.
Nova Embeddings API dapat dimanfaatkan dalam berbagai aplikasi, seperti:
-
Pengambilan dan Rekomendasi Konten Semantik: Buat penyematan untuk konten Anda, lalu gunakan untuk menemukan item serupa atau memberikan rekomendasi yang dipersonalisasi kepada pengguna Anda.
-
Pencarian Multimodal: Gabungkan penyematan dari berbagai jenis konten untuk memungkinkan kemampuan pencarian lintas modal yang kuat.
-
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
-
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. API memungkinkan Anda menentukan apakah Anda ingin satu penyematan yang mewakili kedua modalitas atau dua penyematan terpisah yang masing-masing mewakili aliran video dan audio.
-
Tujuan penyematan: Nova Multimodal Embeddings memungkinkan Anda mengoptimalkan penyematan Anda tergantung pada aplikasi hilir yang dimaksud. Kasus penggunaan yang didukung termasuk pengambilan (RAG/pencarian), klasifikasi, dan pengelompokan. Nilai spesifik tergantung pada aplikasi (lihat praktik terbaik).
-
Ukuran dimensi: 4 ukuran dimensi untuk menukar akurasi penyematan dan biaya penyimpanan vektor: 3072; 1024; 384; 256.
-
Metode input: Anda dapat meneruskan konten yang akan disematkan dengan menentukan URI S3 atau inline sebagai pengkodean base64.
Bagaimana Nova Multimodal Embeddings bekerja
-
Ketika sepotong konten dilewatkan melalui penyematan Nova, model mengubah konten itu menjadi format numerik universal, yang disebut sebagai vektor. Vektor adalah seperangkat nilai numerik arbitrer yang kemudian dapat digunakan untuk berbagai fungsi pencarian. Konten serupa diberikan vektor yang lebih dekat daripada konten yang kurang mirip. Misalnya konten yang dapat digambarkan sebagai “bahagia” diberikan vektor yang lebih dekat ke vektor seperti “gembira” sebagai lawan dari yang seperti “kesedihan”.
Prasyarat
Untuk menggunakan Multimodal Embeddings, Anda memerlukan yang berikut ini:
-
Python diinstal
-
AWS CLI Terpasang
-
AWS CLI dikonfigurasi dengan kredensi akses untuk akun Anda AWS
-
Model Nova Multimodal Embeddings diaktifkan di Akun Anda AWS
Dengan ini diaktifkan, Anda dapat melakukan permintaan penyematan asinkron atau sinkron.
Menghasilkan embeddings secara serempak
Untuk item konten yang lebih kecil, Anda dapat menggunakan API Runtime InvokeModel Batuan Dasar. Ini adalah opsi yang baik untuk menghasilkan embeddings dengan cepat untuk teks, gambar, atau file pendek. audio/video
Contoh berikut menghasilkan embedding sinkron untuk teks “Hello World!”
import json import boto3 # 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))
Outputnya akan terlihat seperti ini:
Request ID: fde55db5-c129-423b-c62d-7a8b36cf2859 { "embeddings": [ { "embeddingType": "TEXT", "embedding": [ 0.031115104, 0.032478657, 0.10006265, ... ] } ] }
Menghasilkan penyematan secara asinkron
Untuk file konten yang lebih besar, Anda dapat menggunakan StartAsyncInvoke fungsi Bedrock Runtime untuk menghasilkan embeddings secara asinkron. Ini memungkinkan Anda untuk mengirimkan pekerjaan dan mengambil hasilnya nanti, tanpa memblokir eksekusi aplikasi. Hasil disimpan ke Amazon S3.
Contoh berikut memulai pekerjaan pembuatan penyematan asinkron untuk file video:
import boto3 # Create the Bedrock Runtime client. 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://amzn-s3-demo-bucket/path/to/video.mp4"} }, "segmentationConfig": { "durationSeconds": 15 # Segment into 15 second chunks }, }, }, } try: # Invoke the Nova Embeddings model. response = bedrock_runtime.start_async_invoke( modelId="amazon.nova-2-multimodal-embeddings-v1:0", modelInput=model_input, outputDataConfig={ "s3OutputDataConfig": { "s3Uri": "s3://amzn-s3-demo-bucket" } }, ) 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 invocation ARN. print("Invocation ARN:", response.get("invocationArn"))
Outputnya akan terlihat seperti ini:
Request ID: 07681e80-5ce0-4723-cf52-68bf699cd23e Invocation ARN: arn:aws:bedrock:us-east-1:111122223333:async-invoke/g7ur3b32a10n
Setelah Anda memulai pekerjaan async, gunakan InvocationArn untuk memeriksa status pekerjaan dengan fungsi tersebut. GetAsyncInvoke Untuk melihat pemanggilan asinkron terbaru dan statusnya, gunakan fungsi tersebut. ListAsyncInvokes
Saat pembuatan embeddings asinkron selesai, artefak ditulis ke bucket S3 yang Anda tentukan sebagai tujuan keluaran. File-file tersebut akan memiliki struktur sebagai berikut:
amzn-s3-demo-bucket/job-id/ segmented-embedding-result.json embedding-audio.jsonl embedding-image.json embedding-text.jsonl embedding-video.jsonl manifest.json