Model kustom memungkinkan Anda menghubungkan layanan penyematan eksternal berbasis HTTP ke OpenSearch Vector Search Edition sehingga platform secara otomatis membuat vektor data Anda saat pengindeksan dan mentransformasi kueri saat pencarian. Setelah didaftarkan, model kustom berfungsi seperti model bawaan—Anda cukup menetapkannya ke bidang tabel, dan OpenSearch akan memanggilnya atas nama Anda.
Empat jenis model didukung:
| Nilai jenis model | Deskripsi |
|---|---|
text_embedding | Model penyematan teks padat. Memerlukan dimension. |
text_sparse_embedding | Model penyematan teks sparse. |
image_embedding | Model vektor gambar. Memerlukan dimension. |
image_analyze | Model analisis konten gambar. |
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Instans OpenSearch Vector Search Edition
Layanan penyematan eksternal yang dapat diakses melalui HTTP atau HTTPS (metode PUT atau POST)
URL titik akhir, metode HTTP, dan kredensial otentikasi untuk layanan tersebut
Buat model kustom
Di panel navigasi sebelah kiri halaman detail instans OpenSearch Anda, pilih Model Management > Models.
Di tab Custom Models, klik Create Model.
Di panel Create Custom Model, masukkan konfigurasi model sebagai objek JSON.
Format konfigurasi model
Contoh berikut menunjukkan konfigurasi lengkap untuk model penyematan teks padat. Setiap bidang dijelaskan pada bagian Parameter di bawah ini.
{
"modelName": "custom_model",
"modelType": "text_embedding",
"dimension": 1536,
"url": "http://xxx/api/v2/services/embeddings",
"method": "POST",
"request": {
"header": {
"Authorization": "fj42091fjlgnlsvu023nva",
"Content-Type": "application/json"
},
"urlParams": {
"build": {},
"search": {}
},
"requestBody": "{\"input\": [\"%{input}\"],\"input_type\": \"${input_type}\"}",
"parameters": {
"build": {
"input_type": "document"
},
"search": {
"input_type": "query"
}
}
},
"response": {
"embeddings": "$.result.embeddings[*].embedding"
}
}Parameter
| Parameter | Deskripsi |
|---|---|
modelName | Nama model. |
modelType | Jenis model. Nilai yang valid: text_embedding, text_sparse_embedding, image_embedding, image_analyze. Lihat tabel di bagian atas halaman ini untuk deskripsinya. |
dimension | Jumlah dimensi. Diperlukan ketika modelType bernilai text_embedding atau image_embedding. |
url | Titik akhir layanan model. |
method | Metode HTTP untuk mengakses layanan model. Nilai yang valid: PUT dan POST. |
request | Konfigurasi permintaan. |
request.header | Header permintaan HTTP yang diteruskan ke layanan model tanpa modifikasi. Sertakan header otentikasi dan tipe konten di sini. |
request.urlParams | Parameter kueri URL yang ditambahkan ke URL permintaan (misalnya, ?abc=123). |
request.urlParams.build | Parameter URL yang digunakan selama pembuatan indeks. |
request.urlParams.search | Parameter URL yang digunakan selama kueri. |
request.requestBody | Badan permintaan dalam bentuk string templat. Gunakan %{parameter_name} untuk menyisipkan variabel. Variabel bawaan: %{input} (teks input) dan %{modal} (modalitas, untuk model multimodal). |
request.parameters | Parameter spesifik fase yang disisipkan ke templat badan permintaan. Gunakan ini jika layanan penyematan Anda memerlukan parameter berbeda untuk pengindeksan dokumen dibandingkan pengkodean kueri—misalnya, model penyematan asimetris yang menggunakan input_type: document saat pengindeksan dan input_type: query saat pencarian. |
request.parameters.build | Parameter yang digunakan dalam badan permintaan selama pembuatan indeks. |
request.parameters.search | Parameter yang digunakan dalam badan permintaan selama kueri. |
response | Ekspresi jalur JSON yang mengekstraksi vektor penyematan dari tanggapan model. |
Referensi jalur JSON
OpenSearch menggunakan ekspresi jalur JSON untuk mengekstraksi vektor penyematan dari tanggapan model Anda. Semua jalur harus dimulai dengan $ (elemen root).
Operator
| Operator | Deskripsi |
|---|---|
$ | Elemen root. Setiap jalur harus dimulai dengan $. |
* | Wildcard. Mencocokkan nilai apa pun menggantikan nama atau indeks array. |
.<name> | Mengakses atribut objek. |
[<number>] | Mengakses elemen array berdasarkan indeks. |
Contoh
Diberikan tanggapan berikut:
{
"store": {
"books": [
{ "title": "java", "price": 56 },
{ "title": "c++", "price": 99 }
]
}
}| Tujuan | Jalur JSON | Hasil |
|---|---|---|
| Ekstrak judul semua buku | $.store.books[*].title | ["java", "c++"] |
| Ekstrak judul buku pertama | $.store.books[0].title | ["java"] |
Kelola model
Temukan model Anda di tab Custom Models pada halaman Models, lalu gunakan kolom Actions untuk melakukan salah satu operasi berikut.
| Operasi | Deskripsi |
|---|---|
| Debug | Uji model dengan mengirimkan input contoh dan memeriksa tanggapannya. Pastikan penyematan yang dikembalikan memiliki jumlah dimensi sesuai harapan (sesuai pengaturan dimension) dan nilainya tampak valid. |
| Edit | Perbarui konfigurasi model. |
| Disable | Hentikan pemrosesan data dan kueri oleh model. Tabel yang menggunakan model ini tidak lagi membuat vektor data baru atau menangani kueri terkait. Lakukan dengan hati-hati. |
| Restore | Aktifkan kembali model yang dinonaktifkan. |
| Delete | Hapus model secara permanen. Hanya model yang dinonaktifkan yang dapat dihapus. |
Gunakan model kustom dalam tabel
Untuk menerapkan model kustom ke bidang tabel:
Buka konfigurasi tabel.
Klik Configure untuk bidang yang akan diproses sebelumnya.
Pilih model kustom Anda dari daftar model yang tersedia.


Setelah konfigurasi disimpan, OpenSearch secara otomatis memanggil model selama pengindeksan (menggunakan parameter build) dan saat kueri (menggunakan parameter search).