Model embedding multimodal menghasilkan vektor multidimensi berdasarkan input yang Anda berikan, yang dapat mencakup kombinasi data gambar, teks, dan video. Vektor embedding kemudian dapat digunakan untuk tugas selanjutnya seperti klasifikasi gambar atau moderasi konten video.
Vektor embedding gambar dan embedding teks berada dalam ruang semantik yang sama dengan dimensi yang sama. Oleh karena itu, vektor ini dapat digunakan secara bergantian untuk kasus penggunaan seperti menelusuri gambar berdasarkan teks atau menelusuri video berdasarkan gambar.
Untuk kasus penggunaan embedding hanya teks, sebaiknya gunakan API embedding teks Gemini Enterprise Agent Platform. Misalnya, API embedding teks mungkin lebih baik untuk penelusuran semantik berbasis teks, pengelompokan, analisis dokumen berformat panjang, dan kasus penggunaan pengambilan teks atau question answering lainnya. Untuk informasi selengkapnya, lihat Mendapatkan embedding teks.
Model yang didukung
Anda bisa mendapatkan embedding multimodal menggunakan model berikut:
gemini-embedding-2multimodalembedding@001
Praktik terbaik
Pertimbangkan aspek input berikut saat menggunakan model embedding multimodal:
- Teks dalam gambar - Model dapat membedakan teks dalam gambar, mirip dengan
pengenalan karakter optik (OCR). Jika Anda perlu membedakan antara
deskripsi konten gambar dan teks dalam gambar, pertimbangkan
untuk menggunakan rekayasa perintah guna menentukan konten target Anda.
Misalnya: alih-alih hanya "kucing" (cat), gunakan "gambar kucing" atau
"text 'kucing", bergantung pada kasus penggunaan Anda.
teks 'kucing'
Kata 'kucing' ditampilkan dalam font besar dan tebal.
gambar kucing
Kredit gambar: Manja Vitolic di Unsplash. - Kemiripan embedding - Produk titik embedding bukan merupakan probabilitas yang dikalibrasi. Produk titik adalah metrik kesamaan dan mungkin memiliki distribusi skor yang berbeda untuk kasus penggunaan yang berbeda. Oleh karena itu, hindari penggunaan nilai minimum tetap untuk mengukur kualitas. Sebagai gantinya, gunakan pendekatan peringkat untuk pengambilan, atau gunakan sigmoid untuk klasifikasi.
Gunakan gemini-embedding-2
Model gemini-embedding-2 menerima input yang diselingi di seluruh modalitas gambar, teks, dokumen, audio, dan video.
Menentukan petunjuk tugas untuk meningkatkan performa
Anda dapat menggunakan embedding untuk berbagai tugas, mulai dari klasifikasi hingga penelusuran dokumen. Menentukan petunjuk tugas yang tepat akan membantu mengoptimalkan sematan untuk hubungan yang diinginkan, sehingga memaksimalkan akurasi dan efisiensi.
Tabel berikut menunjukkan contoh cara memformat kueri dan dokumen untuk
kasus penggunaan simetris dan asimetris menggunakan model gemini-embedding-2.
Kasus penggunaan pengambilan (Format asimetris)
| Kasus penggunaan | Struktur kueri | Struktur dokumen |
|---|---|---|
| Kueri penelusuran | task: search result | query: {content} |
title: {title} | text: {content}Jika tidak ada judul, gunakan title: none. |
| Question answering | task: question answering | query: {content} |
title: {title} | text: {content} |
| Pengecekan fakta | task: fact checking | query: {content} |
title: {title} | text: {content} |
| Pengambilan kode | task: code retrieval | query: {content} |
title: {title} | text: {content} |
Kasus penggunaan input tunggal (Format simetris)
| Kasus penggunaan | Struktur input |
|---|---|
| Klasifikasi | task: classification | query: {content} |
| Pengelompokan | task: clustering | query: {content} |
| Kemiripan semantik | task: sentence similarity | query: {content}Jangan gunakan ini untuk penelusuran atau pengambilan. Tujuannya adalah untuk kemiripan tekstual semantik. |
Contoh penggunaan di Python
Python
# Generate embedding for a search query def prepare_query(query): return f"task: search result | query: {query}" # Generate embedding for a search document def prepare_document(content, title=None): if title is None: title = "none" return f"title: {title} | text: {content}" # Generate embedding for classification def prepare_classification_input(content): return f"task: classification | query: {content}"
Penggunaan API
Batas API
Batas berikut berlaku saat Anda menggunakan model gemini-embedding-2.
| Batas | Nilai dan deskripsi |
|---|---|
| Data teks, gambar, dokumen, video, dan audio | |
| Batas token input | 8.192 token Input yang lebih panjang dari 8.192 token akan dipangkas tanpa pemberitahuan. Semua modalitas berbagi jendela konteks total 8192 token. Token dihitung sebagai berikut per modalitas:
|
| Dimensi output | 3072 (default, dapat dikonfigurasi menggunakan parameter output_dimensionality) |
| Batas gambar | 6 gambar per permintaan |
| Format gambar | JPEG, PNG, WebP, BMP, HEIC, HEIF, AVIF |
| Dimensi gambar | Maksimum 16384 x 16384 piksel per gambar |
| Batas dokumen | 1 file per permintaan, hingga 6 halaman Sebaiknya gunakan 1 halaman per PDF untuk kualitas terbaik. |
| Format dokumen | |
| Data video dan audio | |
| Batas video | 1 video per permintaan, hingga 120 frame Batas 120 detik didasarkan pada setelan default 1 FPS. Durasi bervariasi saat Anda menyetel FPS yang berbeda: Durasi = 120 / FPS. Secara default, ekstraksi audio dinonaktifkan untuk video. Jika opsi ekstraksi trek audio diaktifkan, durasi tunduk pada durasi audio maksimum 180 detik, dan total durasi video dibatasi oleh batas audio dan jendela konteks token (8.192 token). |
| Format video | Penampung: MOV, MP4. Codec: AV1, H264, H265, VP9. |
| Batas audio | 180 detik per permintaan Dukungan audio dioptimalkan untuk ucapan. Suara sekitar dan musik mungkin tidak diputar dengan kualitas tertinggi. |
| Format audio | MP3, WAV |
Durasi video dengan ekstraksi audio
Karena semua modalitas berbagi jendela konteks total 8.192 token, durasi video maksimum bervariasi saat Anda mengaktifkan audio_track_extraction:
| Modalitas | Jumlah Token |
|---|---|
| Audio | 25 token per detik |
| Frame video | 66 token per frame |
| Stempel waktu | 10 token per detik (dua stempel waktu per detik yang diformat sebagai "mm:ss") |
| FPS | Ditentukan oleh setelan FPS (defaultnya adalah 1) |
Total durasi video dibatasi oleh dukungan audio maksimum 180 detik dan jendela konteks 8192 token.
Contoh penghitungan:
Jika Anda memproses video dengan frekuensi sampling default 1 FPS dan mengaktifkan ekstraksi audio:
- Kecepatan penggunaan: Setiap detik video menggunakan 66 token (1 frame) + 25 token (1 detik audio) + 10 token (stempel waktu) = 101 token.
- Durasi maksimum: Dengan batas token 8192, durasi maksimumnya adalah sekitar 8192 / 101 ≈ 81 detik.
Jika input melebihi jendela konteks, bagian yang melebihi akan dipangkas tanpa pemberitahuan.
Mendapatkan embeddings multimodal
REST
PROJECT_ID="YOUR_PROJECT_ID" LOCATION="us" curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://aiplatform.${LOCATION}.rep.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/gemini-embedding-2:embedContent" \ -d '{ "content": { "parts": [ { "text": "Whats this" }, { "file_data": { "mime_type": "video/mp4", "file_uri": "gs://cloud-samples-data/generative-ai/video/pixel8.mp4" } } ] } }'
Python
from google import genai from google.genai import types # Initialize the client. client = genai.Client(vertexai=True, project="YOUR_PROJECT_ID", location="us") content = types.Content( parts=[ types.Part.from_text(text="Audio AI"), types.Part.from_uri( file_uri="gs://cloud-samples-data/generative-ai/audio/Chirp-3-Docs-Dive.mp3", mime_type="audio/mpeg", ), ], ) response = client.models.embed_content( model="gemini-embedding-2", contents=[content] ) print(response.embeddings[0].values)
Lokasi
Lokasi adalah region yang dapat Anda tentukan dalam permintaan untuk mengontrol tempat penyimpanan data saat istirahat. Untuk mengetahui daftar region yang tersedia, lihat Lokasi Agent Platform.
Kuota
Untuk memeriksa batas kuota gemini-embedding-2, lihat
Kuota dan batas sistem Agent Platform.
Dimensi
Saat menggunakan model gemini-embedding-2, Anda dapat menentukan dimensi yang lebih rendah menggunakan parameter output_dimensionality di EmbedContentConfig.
Contoh berikut menampilkan vektor berdimensi 128. Untuk
gemini-embedding-2, sematan output sudah dinormalisasi L2
untuk dimensi non-default (tidak seperti gemini-embedding-001).
Python
import numpy as np from google import genai from google.genai import types # Initialize the client. client = genai.Client(vertexai=True, project="YOUR_PROJECT_ID", location="us") content = types.Content( parts=[ types.Part.from_uri( file_uri="gs://cloud-samples-data/generative-ai/audio/Chirp-3-Docs-Dive.mp3", mime_type="audio/mpeg", ), ], ) response = client.models.embed_content( model="gemini-embedding-2", contents=[content], config=types.EmbedContentConfig(output_dimensionality=128), ) embedding_values_np = np.array(response.embeddings[0].values) print(f"Embedding length: {len(embedding_values_np)}") print(f"Norm of embedding: {np.linalg.norm(embedding_values_np):.6f}") # Should be very close to 1
Parameter
Kecepatan sampling video default adalah 1 frame per detik (FPS). Parameter
tambahan dapat ditambahkan menggunakan video_metadata:
Python
from google import genai from google.genai import types # Initialize the client. client = genai.Client(vertexai=True, project="YOUR_PROJECT_ID", location="us") content = types.Content( parts=[ types.Part( file_data=types.FileData( file_uri="gs://cloud-samples-data/generative-ai/video/pixel8.mp4", mime_type="video/mp4", ), video_metadata=types.VideoMetadata( fps=0.5, start_offset="10s", end_offset="20s", ), ), ] ) response = client.models.embed_content( model="gemini-embedding-2", contents=[content] ) print(response.embeddings[0].values)
Ada opsi tambahan di EmbedContentConfig.
| Opsi | Jenis | Deskripsi |
|---|---|---|
output_dimensionality |
int |
Kurangi dimensi untuk penyematan output. |
document_ocr |
bool |
Aktifkan OCR untuk input dokumen. |
audio_track_extraction |
bool |
Mengekstrak audio dari input video. |
Gunakan multimodalembedding@001
Batas berikut berlaku saat Anda menggunakan model multimodalembedding@001
untuk embedding teks dan gambar:
| Batas | Nilai dan deskripsi |
|---|---|
| Data teks dan gambar | |
| Jumlah maksimum permintaan API per menit per project | 120-600 bergantung pada wilayah |
| Panjang teks maksimum | 32 token (~32 kata) Panjang teks maksimum adalah 32 token (sekitar 32 kata). Jika input melebihi 32 token, model akan mempersingkat input menjadi 32 token secara internal. |
| Pemodelan bahasa | Inggris |
| Format gambar | BMP, GIF, JPG, PNG |
| Ukuran gambar | Gambar berenkode Base64: 20 MB (saat ditranskode ke PNG) Gambar Cloud Storage: 20 MB (format file asli) Ukuran gambar maksimum yang diterima adalah 20 MB. Untuk menghindari peningkatan latensi jaringan, gunakan gambar yang lebih kecil. Selain itu, model ini mengubah ukuran gambar menjadi resolusi 512 x 512 piksel. Jadi, Anda tidak perlu memberikan gambar yang beresolusi lebih tinggi. |
| Data video | |
| Audio didukung | T/A - Model tidak mempertimbangkan konten audio saat membuat sematan video |
| Format video | AVI, FLV, MKV, MOV, MP4, MPEG, MPG, WEBM, dan WMV |
| Durasi video maksimum (Cloud Storage) | Tidak ada batasan. Namun, hanya 2 menit konten yang dapat dianalisis dalam satu waktu. |
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Gemini Enterprise Agent Platform API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Gemini Enterprise Agent Platform API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Siapkan autentikasi untuk lingkungan Anda.
Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:
Java
Untuk menggunakan contoh Java di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Setelah menginisialisasi gcloud CLI, update gcloud CLI dan instal komponen yang diperlukan:
gcloud components update gcloud components install beta
-
Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:
gcloud auth application-default login
Anda tidak perlu melakukan langkah ini jika menggunakan Cloud Shell.
Jika error autentikasi ditampilkan, dan Anda menggunakan penyedia identitas (IdP) eksternal, konfirmasi bahwa Anda telah login ke gcloud CLI dengan identitas gabungan Anda.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal dalam dokumentasi autentikasi Google Cloud .
Node.js
Untuk menggunakan contoh Node.js di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Setelah menginisialisasi gcloud CLI, update gcloud CLI dan instal komponen yang diperlukan:
gcloud components update gcloud components install beta
-
Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:
gcloud auth application-default login
Anda tidak perlu melakukan langkah ini jika menggunakan Cloud Shell.
Jika error autentikasi ditampilkan, dan Anda menggunakan penyedia identitas (IdP) eksternal, konfirmasi bahwa Anda telah login ke gcloud CLI dengan identitas gabungan Anda.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal dalam dokumentasi autentikasi Google Cloud .
Python
Untuk menggunakan contoh Python di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Setelah menginisialisasi gcloud CLI, update gcloud CLI dan instal komponen yang diperlukan:
gcloud components update gcloud components install beta
-
Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:
gcloud auth application-default login
Anda tidak perlu melakukan langkah ini jika menggunakan Cloud Shell.
Jika error autentikasi ditampilkan, dan Anda menggunakan penyedia identitas (IdP) eksternal, konfirmasi bahwa Anda telah login ke gcloud CLI dengan identitas gabungan Anda.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal dalam dokumentasi autentikasi Google Cloud .
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Setelah menginisialisasi gcloud CLI, update gcloud CLI dan instal komponen yang diperlukan:
gcloud components update gcloud components install beta
Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud .
-
- Untuk menggunakan Python SDK, ikuti petunjuk di Menginstal Agent Platform SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Agent Platform SDK untuk Python.
- Opsional. Tinjau harga untuk fitur ini. Harga untuk embedding bergantung pada jenis data yang Anda kirim (seperti gambar atau teks), dan juga bergantung pada mode yang Anda gunakan untuk jenis data tertentu (seperti Video Plus, Video Standard, atau Video Essential).
Lokasi
Lokasi adalah region yang dapat Anda tentukan dalam permintaan untuk mengontrol tempat penyimpanan data saat istirahat. Untuk mengetahui daftar region yang tersedia, lihat Lokasi Agent Platform.
Pesan error
Bagian ini menjelaskan pesan error umum yang mungkin Anda temui.
Error kuota terlampaui
google.api_core.exceptions.ResourceExhausted: 429 Quota exceeded for
aiplatform.googleapis.com/online_prediction_requests_per_base_model with base
model: multimodalembedding. Please submit a quota increase request.
Jika ini adalah pertama kalinya Anda menerima error ini, gunakan Google Cloud konsol untuk meminta penyesuaian kuota untuk project Anda. Gunakan filter berikut sebelum meminta penyesuaian:
Service ID: aiplatform.googleapis.commetric: aiplatform.googleapis.com/online_prediction_requests_per_base_modelbase_model:multimodalembedding
Jika Anda telah mengirimkan permintaan penyesuaian kuota, tunggu sebelum mengirimkan permintaan lain. Jika Anda perlu menambah kuota lagi, ulangi permintaan penyesuaian kuota dengan alasan untuk penyesuaian kuota berkelanjutan.
Menentukan embedding dimensi yang lebih rendah
Bergantung pada model yang digunakan, permintaan embedding akan menampilkan vektor float 1408 atau vektor float 3072. Anda dapat menentukan sematan dimensi yang lebih rendah untuk data teks dan gambar guna mengoptimalkan latensi dan penyimpanan, atau kualitas. Penyematan dimensi yang lebih rendah mengurangi kebutuhan penyimpanan dan memberikan latensi yang lebih rendah untuk tugas penyematan berikutnya (seperti penelusuran atau rekomendasi). Embedding dimensi yang lebih tinggi menawarkan akurasi yang lebih baik untuk tugas-tugas ini, tetapi dengan kebutuhan penyimpanan yang lebih tinggi dan latensi yang lebih tinggi.
Tabel berikut menggambarkan dimensi bawah default dan yang tersedia untuk setiap model:
| Model | Dimensi default (tertinggi) | Dimensi yang didukung (rentang) | Dimensi bawah yang direkomendasikan |
|---|---|---|---|
gemini-embedding-2 |
3072 | 128 hingga 3072 | 128, 768, atau 1536 |
multimodalembedding@001 |
1408 | 128 hingga 1408 | 128, 256, atau 512 |
Gunakan contoh berikut untuk membuat embedding dengan dimensi yang lebih rendah:
REST
Dimensi yang lebih rendah dapat diakses dengan menambahkan kolom parameters.dimension.
Parameter ini menerima nilai dimensi apa pun yang tersedia untuk model.
Misalnya, Anda dapat menentukan 128, 256, 512, atau 1408 saat menggunakan
model multimodalembedding@001. Respons mencakup penyematan dimensi yang ditentukan.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: Google Cloud Project ID Anda.
-
IMAGE_URI: Cloud Storage URI gambar target untuk mendapatkan
embeddings. Misalnya,
gs://my-bucket/embeddings/supermarket-img.png.Anda juga dapat memberikan gambar sebagai string byte berenkode base64:
[...] "image": { "bytesBase64Encoded": "B64_ENCODED_IMAGE" } [...] -
TEXT: Teks target yang akan diberikan embedding. Contoh,
a cat. -
EMBEDDING_DIMENSION: Jumlah dimensi penyematan. Nilai
yang lebih rendah menawarkan penurunan latensi saat menggunakan embedding ini untuk tugas
berikutnya, sedangkan nilai yang lebih tinggi menawarkan akurasi yang lebih baik. Nilai yang tersedia:
128,256,512, dan1408(default).
Metode HTTP dan URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
Meminta isi JSON:
{
"instances": [
{
"image": {
"gcsUri": "IMAGE_URI"
},
"text": "TEXT"
}
],
"parameters": {
"dimension": EMBEDDING_DIMENSION
}
}
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Simpan isi permintaan dalam file bernama request.json,
dan jalankan perintah berikut:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict"
PowerShell
Simpan isi permintaan dalam file bernama request.json,
dan jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict" | Select-Object -Expand Content
128 dimensi:
{
"predictions": [
{
"imageEmbedding": [
0.0279239565,
[...128 dimension vector...]
0.00403284049
],
"textEmbedding": [
0.202921599,
[...128 dimension vector...]
-0.0365431122
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}256 dimensi:
{
"predictions": [
{
"imageEmbedding": [
0.248620048,
[...256 dimension vector...]
-0.0646447465
],
"textEmbedding": [
0.0757875815,
[...256 dimension vector...]
-0.02749932
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}512 dimensi:
{
"predictions": [
{
"imageEmbedding": [
-0.0523675755,
[...512 dimension vector...]
-0.0444030389
],
"textEmbedding": [
-0.0592851527,
[...512 dimension vector...]
0.0350437127
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}
Python
Go
Mendapatkan embedding gambar dan teks (multimodalembedding@001)
Gunakan contoh kode berikut untuk mengirim permintaan penyematan dengan data gambar dan teks. Contoh menunjukkan cara mengirim permintaan dengan kedua jenis data, tetapi Anda juga dapat menggunakan layanan dengan jenis data individual.
Mendapatkan embedding teks dan gambar
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: Google Cloud Project ID Anda.
-
TEXT: Teks target yang akan diberikan embedding. Contoh,
a cat. - B64_ENCODED_IMG: Gambar target yang akan diberikan embedding. Gambar harus ditentukan sebagai string byte berenkode base64.
Metode HTTP dan URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
Meminta isi JSON:
{
"instances": [
{
"text": "TEXT",
"image": {
"bytesBase64Encoded": "B64_ENCODED_IMG"
}
}
]
}
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Simpan isi permintaan dalam file bernama request.json,
dan jalankan perintah berikut:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict"
PowerShell
Simpan isi permintaan dalam file bernama request.json,
dan jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict" | Select-Object -Expand Content
{
"predictions": [
{
"textEmbedding": [
0.010477379,
-0.00399621,
0.00576670747,
[...]
-0.00823613815,
-0.0169572588,
-0.00472954148
],
"imageEmbedding": [
0.00262696808,
-0.00198890246,
0.0152047109,
-0.0103145819,
[...]
0.0324628279,
0.0284924973,
0.011650892,
-0.00452344026
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai Agent Platform menggunakan library klien.
Untuk melakukan autentikasi ke Agent Platform, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai Agent Platform menggunakan library klien.
Untuk melakukan autentikasi ke Agent Platform, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai Agent Platform menggunakan library klien.
Untuk melakukan autentikasi ke Agent Platform, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai Agent Platform menggunakan library klien.
Untuk melakukan autentikasi ke Agent Platform, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Mendapatkan embedding video, gambar, atau teks (multimodalembedding@001)
Saat mengirim permintaan embedding, Anda dapat menentukan input video saja, atau Anda dapat menentukan kombinasi data video, gambar, dan teks.
Mode penyematan video
Ada tiga mode yang dapat Anda gunakan dengan penyematan video: Esensial, Standar, atau Plus. Mode ini sesuai dengan kepadatan sematan yang dihasilkan, yang dapat ditentukan oleh konfigurasi interval_sec dalam permintaan. Untuk setiap interval video
dengan panjang interval_sec, embedding akan dibuat. Panjang interval video minimal adalah 4 detik. Panjang interval yang lebih dari 120 detik
dapat memengaruhi kualitas sematan yang dihasilkan secara negatif.
Harga untuk penyematan video bergantung pada mode yang Anda gunakan. Untuk mengetahui informasi selengkapnya, lihat harga.
Tabel berikut merangkum tiga mode yang dapat Anda gunakan untuk embedding video:
| Mode | Jumlah maksimum penyematan per menit | Interval penyematan video (nilai minimum) |
|---|---|---|
| Essential | 4 | 15 Ini sesuai dengan: intervalSec >= 15 |
| Standar | 8 | 8 Ini sesuai dengan: 8 <= intervalSec < 15 |
| Plus | 15 | 4 Ini sesuai dengan: 4 <= intervalSec < 8 |
Praktik terbaik penyematan video
Pertimbangkan hal berikut saat Anda mengirim permintaan penyematan video:
Untuk membuat satu embedding untuk dua menit pertama video input dengan durasi berapa pun, gunakan setelan
videoSegmentConfigberikut:request.json:// other request body content "videoSegmentConfig": { "intervalSec": 120 } // other request body contentUntuk membuat penyematan video dengan durasi lebih dari dua menit, Anda dapat mengirim beberapa permintaan yang menentukan waktu mulai dan berakhir dalam
videoSegmentConfig:request1.json:// other request body content "videoSegmentConfig": { "startOffsetSec": 0, "endOffsetSec": 120 } // other request body contentrequest2.json:// other request body content "videoSegmentConfig": { "startOffsetSec": 120, "endOffsetSec": 240 } // other request body contentMendapatkan embedding video
Gunakan contoh berikut untuk mendapatkan embedding hanya untuk konten video.
REST
Contoh berikut menggunakan video yang ada di Cloud Storage. Anda juga dapat menggunakan kolom video.bytesBase64Encoded untuk memberikan representasi string berenkode base64 dari video.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: Google Cloud Project ID Anda.
-
VIDEO_URI: Cloud Storage URI video target untuk mendapatkan
embedding. Misalnya,
gs://my-bucket/embeddings/supermarket-video.mp4.Anda juga dapat memberikan video sebagai string byte berenkode base64:
[...] "video": { "bytesBase64Encoded": "B64_ENCODED_VIDEO" } [...] -
videoSegmentConfig(START_SECOND, END_SECOND, INTERVAL_SECONDS). Opsional. Segmen video tertentu (dalam detik) yang digunakan untuk membuat sematan.Contoh:
[...] "videoSegmentConfig": { "startOffsetSec": 10, "endOffsetSec": 60, "intervalSec": 10 } [...]Menggunakan konfigurasi ini akan menentukan data video dari 10 detik hingga 60 detik dan membuat penyematan untuk interval video 10 detik berikutnya: [10, 20), [20, 30), [30, 40), [40, 50), [50, 60). Interval video ini (
"intervalSec": 10) termasuk dalam mode penyematan video Standar, dan Anda ditagih dengan tarif harga mode Standar.Jika Anda menghapus
videoSegmentConfig, layanan akan menggunakan nilai default berikut:"videoSegmentConfig": { "startOffsetSec": 0, "endOffsetSec": 120, "intervalSec": 16 }. Interval video ini ("intervalSec": 16) termasuk dalam mode penyematan video Esensial, dan pengguna ditagih dengan tarif harga mode Esensial.
Metode HTTP dan URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
Meminta isi JSON:
{
"instances": [
{
"video": {
"gcsUri": "VIDEO_URI",
"videoSegmentConfig": {
"startOffsetSec": START_SECOND,
"endOffsetSec": END_SECOND,
"intervalSec": INTERVAL_SECONDS
}
}
}
]
}
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Simpan isi permintaan dalam file bernama request.json,
dan jalankan perintah berikut:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict"
PowerShell
Simpan isi permintaan dalam file bernama request.json,
dan jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict" | Select-Object -Expand Content
Respons (video 7 detik, tidak ada videoSegmentConfig yang ditentukan):
{
"predictions": [
{
"videoEmbeddings": [
{
"endOffsetSec": 7,
"embedding": [
-0.0045467657,
0.0258095954,
0.0146885719,
0.00945400633,
[...]
-0.0023291884,
-0.00493789,
0.00975185353,
0.0168156829
],
"startOffsetSec": 0
}
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}Respons (video berdurasi 59 detik, dengan konfigurasi segmen video berikut: "videoSegmentConfig": { "startOffsetSec": 0, "endOffsetSec": 60, "intervalSec": 10 }):
{
"predictions": [
{
"videoEmbeddings": [
{
"endOffsetSec": 10,
"startOffsetSec": 0,
"embedding": [
-0.00683252793,
0.0390476175,
[...]
0.00657121744,
0.013023301
]
},
{
"startOffsetSec": 10,
"endOffsetSec": 20,
"embedding": [
-0.0104404651,
0.0357737206,
[...]
0.00509833824,
0.0131902946
]
},
{
"startOffsetSec": 20,
"embedding": [
-0.0113538112,
0.0305239167,
[...]
-0.00195809244,
0.00941874553
],
"endOffsetSec": 30
},
{
"embedding": [
-0.00299320649,
0.0322436653,
[...]
-0.00993082579,
0.00968887936
],
"startOffsetSec": 30,
"endOffsetSec": 40
},
{
"endOffsetSec": 50,
"startOffsetSec": 40,
"embedding": [
-0.00591270532,
0.0368893594,
[...]
-0.00219071587,
0.0042470959
]
},
{
"embedding": [
-0.00458270218,
0.0368121453,
[...]
-0.00317760976,
0.00595594104
],
"endOffsetSec": 59,
"startOffsetSec": 50
}
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai Agent Platform menggunakan library klien.
Untuk melakukan autentikasi ke Agent Platform, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai Agent Platform menggunakan library klien.
Untuk melakukan autentikasi ke Agent Platform, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Mendapatkan embedding gambar, teks, dan video
Gunakan contoh berikut untuk mendapatkan embedding konten video, teks, dan gambar.
REST
Contoh berikut menggunakan data gambar, teks, dan video. Anda dapat menggunakan kombinasi jenis data ini dalam isi permintaan Anda.
Selain itu, contoh ini menggunakan video yang ada di Cloud Storage. Anda juga dapat menggunakan kolom video.bytesBase64Encoded untuk memberikan representasi string berenkode base64 dari video.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: Google Cloud Project ID Anda.
-
TEXT: Teks target yang akan diberikan embedding. Contoh,
a cat. -
IMAGE_URI: Cloud Storage URI gambar target untuk mendapatkan
embeddings. Misalnya,
gs://my-bucket/embeddings/supermarket-img.png.Anda juga dapat memberikan gambar sebagai string byte berenkode base64:
[...] "image": { "bytesBase64Encoded": "B64_ENCODED_IMAGE" } [...] -
VIDEO_URI: Cloud Storage URI video target untuk mendapatkan
embedding. Misalnya,
gs://my-bucket/embeddings/supermarket-video.mp4.Anda juga dapat memberikan video sebagai string byte berenkode base64:
[...] "video": { "bytesBase64Encoded": "B64_ENCODED_VIDEO" } [...] -
videoSegmentConfig(START_SECOND, END_SECOND, INTERVAL_SECONDS). Opsional. Segmen video tertentu (dalam detik) yang digunakan untuk membuat sematan.Contoh:
[...] "videoSegmentConfig": { "startOffsetSec": 10, "endOffsetSec": 60, "intervalSec": 10 } [...]Menggunakan konfigurasi ini akan menentukan data video dari 10 detik hingga 60 detik dan membuat penyematan untuk interval video 10 detik berikutnya: [10, 20), [20, 30), [30, 40), [40, 50), [50, 60). Interval video ini (
"intervalSec": 10) termasuk dalam mode penyematan video Standar, dan Anda ditagih dengan tarif harga mode Standar.Jika Anda tidak menyertakan
videoSegmentConfig, layanan akan menggunakan nilai default berikut:"videoSegmentConfig": { "startOffsetSec": 0, "endOffsetSec": 120, "intervalSec": 16 }. Interval video ini ("intervalSec": 16) termasuk dalam mode penyematan video Esensial, dan pengguna ditagih dengan tarif harga mode Esensial.
Metode HTTP dan URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
Meminta isi JSON:
{
"instances": [
{
"text": "TEXT",
"image": {
"gcsUri": "IMAGE_URI"
},
"video": {
"gcsUri": "VIDEO_URI",
"videoSegmentConfig": {
"startOffsetSec": START_SECOND,
"endOffsetSec": END_SECOND,
"intervalSec": INTERVAL_SECONDS
}
}
}
]
}
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Simpan isi permintaan dalam file bernama request.json,
dan jalankan perintah berikut:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict"
PowerShell
Simpan isi permintaan dalam file bernama request.json,
dan jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict" | Select-Object -Expand Content
{
"predictions": [
{
"textEmbedding": [
0.0105433334,
-0.00302835181,
0.00656806398,
0.00603460241,
[...]
0.00445805816,
0.0139605571,
-0.00170318608,
-0.00490092579
],
"videoEmbeddings": [
{
"startOffsetSec": 0,
"endOffsetSec": 7,
"embedding": [
-0.00673126569,
0.0248149596,
0.0128901172,
0.0107588246,
[...]
-0.00180952181,
-0.0054573305,
0.0117037306,
0.0169312079
]
}
],
"imageEmbedding": [
-0.00728622358,
0.031021487,
-0.00206603738,
0.0273937676,
[...]
-0.00204976718,
0.00321615417,
0.0121978866,
0.0193375275
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai Agent Platform menggunakan library klien.
Untuk melakukan autentikasi ke Agent Platform, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai Agent Platform menggunakan library klien.
Untuk melakukan autentikasi ke Agent Platform, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Langkah berikutnya
- Baca blog "Apa itu Penelusuran Multimodal: 'LLM dengan visi' mengubah bisnis".
- Untuk informasi tentang kasus penggunaan hanya teks (penelusuran semantik berbasis teks, pengelompokan, analisis dokumen berformat panjang, dan kasus penggunaan pengambilan teks atau question answering lainnya), baca Mendapatkan teks embedding.
- Jelajahi model yang telah dilatih sebelumnya di Model Garden.
- Pelajari praktik terbaik AI yang bertanggung jawab dan filter keamanan di Gemini Enterprise Agent Platform.