{
  "aboutHtml": "<p>voyage-4 adalah model embedding teks berukuran menengah Voyage AI dalam keluarga Voyage 4. Model mengubah teks kueri dan dokumen menjadi vektor numerik untuk temu kembali serbaguna serta multibahasa. Kemampuan khas keluarga ini adalah ruang embedding bersama: voyage-4, voyage-4-large, voyage-4-lite, dan voyage-4-nano menghasilkan representasi kompatibel, sehingga sisi kueri dan dokumen dalam tugas pencarian dapat menggunakan model berbeda dalam keluarga tersebut.</p><h4>Ruang bersama dan temu kembali asimetris</h4><p>Produsen menyebut penggunaan model kueri dan korpus yang berbeda sebagai temu kembali asimetris. Salah satu pola yang didokumentasikan adalah menyiapkan korpus dengan voyage-4-large dan mencarinya menggunakan embedding kueri voyage-4. Korpus dibuat embedding-nya sekali atau ketika materi sumber berubah, sementara vektor kueri dibuat saat pencarian masuk. Ruang bersama memungkinkan perubahan pilihan model sisi kueri dalam keluarga tanpa harus membuat ulang embedding korpus hanya karena penggantian itu.</p><p>Jaga dimensi keluaran dan representasi tetap kompatibel pada vektor yang dibandingkan. Pernyataan ruang bersama menyangkut model teks Voyage 4 yang disebutkan; hal ini tidak terbukti hanya karena dua model yang tidak terkait mengembalikan larik sama panjang. Karena itu, tugas praktis dapat menggunakan voyage-4 pada kedua sisi pencarian atau memakai vektor kuerinya dengan indeks dokumen voyage-4-large yang ada ketika pengaturan representasinya cocok.</p><h4>Peran query dan document</h4><p>Untuk temu kembali, Voyage menyarankan identifikasi teks masukan sebagai query atau document. Opsi peran masukan menyediakan instruksi temu kembali terkait sebelum pemvektoran. Siapkan bagian korpus sebagai dokumen dan pilihan kata pencarian pengguna sebagai kueri, dengan mempertahankan teks sumber sebenarnya serta pengenal di samping setiap vektor tersimpan.</p><p>Misalnya, koleksi pencarian pengetahuan dapat mengindeks instruksi teknis dan penjelasan produk. Kueri tentang hal yang terjadi setelah impor gagal harus mengembalikan bagian sumber yang menjelaskan perilaku tersebut. Simpan judul, kondisi relevan, dan lokasi sumber bersama bagian agar hasil pencarian dapat diperiksa atau digunakan tahap jawaban RAG berikutnya. Embedding adalah representasi numerik untuk temu kembali; bagian sumber aslinya merupakan bukti yang digunakan pada tahap berikutnya.</p><h4>Dimensi dan jenis data keluaran</h4><p>Jendela konteks per teks yang didokumentasikan adalah 32.000 token. Dimensi yang dapat dipilih adalah 256, 512, 1024, dan 2048, dengan 1024 sebagai bawaan. Pembelajaran Matryoshka menyediakan ukuran representasi bersarang tersebut. Keluaran dapat menggunakan floating-point 32 bit, integer 8 bit bertanda atau tanpa tanda, atau nilai biner terkemas, yang dimungkinkan oleh persiapan keluarga yang memperhitungkan kuantisasi.</p><p>Dengan keluaran biner terkemas, setiap byte hasil menyimpan delapan bit embedding, sehingga panjang daftar byte adalah seperdelapan dimensi yang dipilih. Jumlah byte dan dimensi embedding memiliki makna berbeda. Pilih representasi yang dapat ditafsirkan indeks pencarian dan periksa relevansi kandidat pada pertanyaan serta bahasa yang benar-benar digunakan koleksi sebelum memilih konfigurasi terkompresi.</p><h4>Panjang masukan, batch, dan pemotongan</h4><p>Panduan embedding teks pembuat saat ini mengizinkan hingga 1.000 string dan total 320.000 token dalam permintaan voyage-4. Jatah batch terpisah dari jendela 32.000 token untuk setiap masukan. Pemotongan aktif secara bawaan: teks terlalu panjang dipendekkan agar muat. Jika pemotongan dinonaktifkan, item terlalu panjang menghasilkan galat.</p><p>Untuk laporan panjang atau transkrip, siapkan bagian yang memuat jawaban secara sengaja alih-alih mengandalkan pemotongan pada batas masukan. Pertahankan hubungan setiap bagian dengan dokumen induk dan versi sumber. Masukan embedding voyage-4 biasa adalah teks individual; pemrosesan kelompok potongan kontekstual milik model embedding kontekstual yang didokumentasikan secara terpisah.</p><h4>Gunakan hasil temu kembali</h4><p>Simpan vektor bersama teks bagian dan pengenal sumber yang stabil, bandingkan setiap vektor kueri dengan vektor dokumen kompatibel, dan kembalikan bagian kandidat. Rilis keluarga mengevaluasi temu kembali pada materi termasuk dokumen teknis, percakapan, dokumen panjang, kode, hukum, keuangan, dan teks web. Reranker terpisah dapat menyempurnakan kandidat, dan tahap jawaban berikutnya dapat menggunakan teksnya. Nilai bagian hasil berdasarkan tugas; kompatibilitas ruang bersama memungkinkan kombinasi model, sementara kegunaan hasil tetap bergantung pada materi sumber dan pertanyaan.</p>",
  "aboutText": "voyage-4 adalah model embedding teks berukuran menengah Voyage AI dalam keluarga Voyage 4. Model mengubah teks kueri dan dokumen menjadi vektor numerik untuk temu kembali serbaguna serta multibahasa. Kemampuan khas keluarga ini adalah ruang embedding bersama: voyage-4, voyage-4-large, voyage-4-lite, dan voyage-4-nano menghasilkan representasi kompatibel, sehingga sisi kueri dan dokumen dalam tugas pencarian dapat menggunakan model berbeda dalam keluarga tersebut.\n\n### Ruang bersama dan temu kembali asimetris\n\nProdusen menyebut penggunaan model kueri dan korpus yang berbeda sebagai temu kembali asimetris. Salah satu pola yang didokumentasikan adalah menyiapkan korpus dengan voyage-4-large dan mencarinya menggunakan embedding kueri voyage-4. Korpus dibuat embedding-nya sekali atau ketika materi sumber berubah, sementara vektor kueri dibuat saat pencarian masuk. Ruang bersama memungkinkan perubahan pilihan model sisi kueri dalam keluarga tanpa harus membuat ulang embedding korpus hanya karena penggantian itu.\n\nJaga dimensi keluaran dan representasi tetap kompatibel pada vektor yang dibandingkan. Pernyataan ruang bersama menyangkut model teks Voyage 4 yang disebutkan; hal ini tidak terbukti hanya karena dua model yang tidak terkait mengembalikan larik sama panjang. Karena itu, tugas praktis dapat menggunakan voyage-4 pada kedua sisi pencarian atau memakai vektor kuerinya dengan indeks dokumen voyage-4-large yang ada ketika pengaturan representasinya cocok.\n\n### Peran query dan document\n\nUntuk temu kembali, Voyage menyarankan identifikasi teks masukan sebagai query atau document. Opsi peran masukan menyediakan instruksi temu kembali terkait sebelum pemvektoran. Siapkan bagian korpus sebagai dokumen dan pilihan kata pencarian pengguna sebagai kueri, dengan mempertahankan teks sumber sebenarnya serta pengenal di samping setiap vektor tersimpan.\n\nMisalnya, koleksi pencarian pengetahuan dapat mengindeks instruksi teknis dan penjelasan produk. Kueri tentang hal yang terjadi setelah impor gagal harus mengembalikan bagian sumber yang menjelaskan perilaku tersebut. Simpan judul, kondisi relevan, dan lokasi sumber bersama bagian agar hasil pencarian dapat diperiksa atau digunakan tahap jawaban RAG berikutnya. Embedding adalah representasi numerik untuk temu kembali; bagian sumber aslinya merupakan bukti yang digunakan pada tahap berikutnya.\n\n### Dimensi dan jenis data keluaran\n\nJendela konteks per teks yang didokumentasikan adalah 32.000 token. Dimensi yang dapat dipilih adalah 256, 512, 1024, dan 2048, dengan 1024 sebagai bawaan. Pembelajaran Matryoshka menyediakan ukuran representasi bersarang tersebut. Keluaran dapat menggunakan floating-point 32 bit, integer 8 bit bertanda atau tanpa tanda, atau nilai biner terkemas, yang dimungkinkan oleh persiapan keluarga yang memperhitungkan kuantisasi.\n\nDengan keluaran biner terkemas, setiap byte hasil menyimpan delapan bit embedding, sehingga panjang daftar byte adalah seperdelapan dimensi yang dipilih. Jumlah byte dan dimensi embedding memiliki makna berbeda. Pilih representasi yang dapat ditafsirkan indeks pencarian dan periksa relevansi kandidat pada pertanyaan serta bahasa yang benar-benar digunakan koleksi sebelum memilih konfigurasi terkompresi.\n\n### Panjang masukan, batch, dan pemotongan\n\nPanduan embedding teks pembuat saat ini mengizinkan hingga 1.000 string dan total 320.000 token dalam permintaan voyage-4. Jatah batch terpisah dari jendela 32.000 token untuk setiap masukan. Pemotongan aktif secara bawaan: teks terlalu panjang dipendekkan agar muat. Jika pemotongan dinonaktifkan, item terlalu panjang menghasilkan galat.\n\nUntuk laporan panjang atau transkrip, siapkan bagian yang memuat jawaban secara sengaja alih-alih mengandalkan pemotongan pada batas masukan. Pertahankan hubungan setiap bagian dengan dokumen induk dan versi sumber. Masukan embedding voyage-4 biasa adalah teks individual; pemrosesan kelompok potongan kontekstual milik model embedding kontekstual yang didokumentasikan secara terpisah.\n\n### Gunakan hasil temu kembali\n\nSimpan vektor bersama teks bagian dan pengenal sumber yang stabil, bandingkan setiap vektor kueri dengan vektor dokumen kompatibel, dan kembalikan bagian kandidat. Rilis keluarga mengevaluasi temu kembali pada materi termasuk dokumen teknis, percakapan, dokumen panjang, kode, hukum, keuangan, dan teks web. Reranker terpisah dapat menyempurnakan kandidat, dan tahap jawaban berikutnya dapat menggunakan teksnya. Nilai bagian hasil berdasarkan tugas; kompatibilitas ruang bersama memungkinkan kombinasi model, sementara kegunaan hasil tetap bergantung pada materi sumber dan pertanyaan.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "9c00b00a01be0e6741057fe08470831e3c141938008c2639f1ecf6e13031c81f",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "id",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">VoyageAI by MongoDB: voyage-4</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Tutup\">×</button></div><div class=\"idline\"><span>VoyageAI by MongoDB /</span><code>voyageai/voyage-4</code><button type=\"button\" id=\"copy-id\">Salin ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Bagian kartu model\"><button type=\"button\" data-card-jump=\"overview\">Mulai</button><button type=\"button\" data-card-jump=\"methods\">Masukan &amp; metode</button><button type=\"button\" data-card-jump=\"pricing\">Paket</button><button type=\"button\" data-card-jump=\"examples\">Contoh</button><button type=\"button\" data-card-jump=\"results\">Hasil</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Metode API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|embeddings|/v1/embeddings|voyageai%2Fvoyage-4\">Embedding</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Mulai</h3><p class=\"mdesc-full\">voyage-4 membuat embedding teks untuk temu kembali serbaguna dan multibahasa, dengan ruang vektor bersama dalam keluarga Voyage 4. Model mendukung masukan 32.000 token, pilihan keluaran 256–2048 dimensi, dan peran query/document untuk pencarian serta RAG.</p><dl class=\"card-io\" data-card-io><div><dt>Masukan yang diterima</dt><dd>Teks · token_ids</dd></div><div><dt>Hasil</dt><dd>embedding</dd></div></dl><details class=\"card-about\"><summary>Tentang model</summary><p class=\"note-s\" data-model-method-boundary>Deskripsi ini mencakup kemampuan model. Masukan, keluaran, dan opsi yang tersedia di Ailoot tercantum di bawah untuk metode yang dipilih.</p><div class=\"mabout\" id=\"m-about\"><p>voyage-4 adalah model embedding teks berukuran menengah Voyage AI dalam keluarga Voyage 4. Model mengubah teks kueri dan dokumen menjadi vektor numerik untuk temu kembali serbaguna serta multibahasa. Kemampuan khas keluarga ini adalah ruang embedding bersama: voyage-4, voyage-4-large, voyage-4-lite, dan voyage-4-nano menghasilkan representasi kompatibel, sehingga sisi kueri dan dokumen dalam tugas pencarian dapat menggunakan model berbeda dalam keluarga tersebut.</p><h4>Ruang bersama dan temu kembali asimetris</h4><p>Produsen menyebut penggunaan model kueri dan korpus yang berbeda sebagai temu kembali asimetris. Salah satu pola yang didokumentasikan adalah menyiapkan korpus dengan voyage-4-large dan mencarinya menggunakan embedding kueri voyage-4. Korpus dibuat embedding-nya sekali atau ketika materi sumber berubah, sementara vektor kueri dibuat saat pencarian masuk. Ruang bersama memungkinkan perubahan pilihan model sisi kueri dalam keluarga tanpa harus membuat ulang embedding korpus hanya karena penggantian itu.</p><p>Jaga dimensi keluaran dan representasi tetap kompatibel pada vektor yang dibandingkan. Pernyataan ruang bersama menyangkut model teks Voyage 4 yang disebutkan; hal ini tidak terbukti hanya karena dua model yang tidak terkait mengembalikan larik sama panjang. Karena itu, tugas praktis dapat menggunakan voyage-4 pada kedua sisi pencarian atau memakai vektor kuerinya dengan indeks dokumen voyage-4-large yang ada ketika pengaturan representasinya cocok.</p><h4>Peran query dan document</h4><p>Untuk temu kembali, Voyage menyarankan identifikasi teks masukan sebagai query atau document. Opsi peran masukan menyediakan instruksi temu kembali terkait sebelum pemvektoran. Siapkan bagian korpus sebagai dokumen dan pilihan kata pencarian pengguna sebagai kueri, dengan mempertahankan teks sumber sebenarnya serta pengenal di samping setiap vektor tersimpan.</p><p>Misalnya, koleksi pencarian pengetahuan dapat mengindeks instruksi teknis dan penjelasan produk. Kueri tentang hal yang terjadi setelah impor gagal harus mengembalikan bagian sumber yang menjelaskan perilaku tersebut. Simpan judul, kondisi relevan, dan lokasi sumber bersama bagian agar hasil pencarian dapat diperiksa atau digunakan tahap jawaban RAG berikutnya. Embedding adalah representasi numerik untuk temu kembali; bagian sumber aslinya merupakan bukti yang digunakan pada tahap berikutnya.</p><h4>Dimensi dan jenis data keluaran</h4><p>Jendela konteks per teks yang didokumentasikan adalah 32.000 token. Dimensi yang dapat dipilih adalah 256, 512, 1024, dan 2048, dengan 1024 sebagai bawaan. Pembelajaran Matryoshka menyediakan ukuran representasi bersarang tersebut. Keluaran dapat menggunakan floating-point 32 bit, integer 8 bit bertanda atau tanpa tanda, atau nilai biner terkemas, yang dimungkinkan oleh persiapan keluarga yang memperhitungkan kuantisasi.</p><p>Dengan keluaran biner terkemas, setiap byte hasil menyimpan delapan bit embedding, sehingga panjang daftar byte adalah seperdelapan dimensi yang dipilih. Jumlah byte dan dimensi embedding memiliki makna berbeda. Pilih representasi yang dapat ditafsirkan indeks pencarian dan periksa relevansi kandidat pada pertanyaan serta bahasa yang benar-benar digunakan koleksi sebelum memilih konfigurasi terkompresi.</p><h4>Panjang masukan, batch, dan pemotongan</h4><p>Panduan embedding teks pembuat saat ini mengizinkan hingga 1.000 string dan total 320.000 token dalam permintaan voyage-4. Jatah batch terpisah dari jendela 32.000 token untuk setiap masukan. Pemotongan aktif secara bawaan: teks terlalu panjang dipendekkan agar muat. Jika pemotongan dinonaktifkan, item terlalu panjang menghasilkan galat.</p><p>Untuk laporan panjang atau transkrip, siapkan bagian yang memuat jawaban secara sengaja alih-alih mengandalkan pemotongan pada batas masukan. Pertahankan hubungan setiap bagian dengan dokumen induk dan versi sumber. Masukan embedding voyage-4 biasa adalah teks individual; pemrosesan kelompok potongan kontekstual milik model embedding kontekstual yang didokumentasikan secara terpisah.</p><h4>Gunakan hasil temu kembali</h4><p>Simpan vektor bersama teks bagian dan pengenal sumber yang stabil, bandingkan setiap vektor kueri dengan vektor dokumen kompatibel, dan kembalikan bagian kandidat. Rilis keluarga mengevaluasi temu kembali pada materi termasuk dokumen teknis, percakapan, dokumen panjang, kode, hukum, keuangan, dan teks web. Reranker terpisah dapat menyempurnakan kandidat, dan tahap jawaban berikutnya dapat menggunakan teksnya. Nilai bagian hasil berdasarkan tugas; kompatibilitas ruang bersama memungkinkan kombinasi model, sementara kegunaan hasil tetap bergantung pada materi sumber dan pertanyaan.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Tersedia di Ailoot · masukan &amp; metode</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Embedding</b> <code>POST /v1/embeddings</code></summary><dl class=\"method-capabilities\"><div><dt>Masukan</dt><dd><code>text</code>, <code>token_ids</code></dd></div><div><dt>Keluaran</dt><dd><code>embedding</code></dd></div><div><dt>Konteks</dt><dd>32.000 tokens</dd></div><div><dt>Format keluaran</dt><dd>json</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Kolom</th><th>Jenis</th><th>Persyaratan</th><th>Nilai &amp; batasan</th><th>Bawaan</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Wajib</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>voyageai/voyage-4</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string|string[]|integer[]|integer[][]</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Wajib</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>Item minimum: 1</div><div>Kondisi: Batch homogen yang tidak kosong. ID token berupa bilangan bulat nonnegatif.</div><div>Anggaran masukan: Maksimum: 32.000 · Satuan teks: byte UTF8 · Satuan token: elemen array token</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">encoding_format</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Opsional</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>float</div></td><td data-cell-label=\"Bawaan\" data-default=\"known\"><span class=\"card-cell-label\">Bawaan</span>float</td></tr><tr data-parameter-availability=\"unsupported\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">dimensions</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>integer</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Tidak didukung</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>Minimum: 1</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr data-parameter-availability=\"pass_through_metadata\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">user</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>json_value</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Opsional</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>Kondisi: Sumber mengizinkan kolom metadata JSON ini; makna tepatnya pada layanan hulu bergantung pada model.</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr data-parameter-availability=\"pass_through_metadata\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">session_id</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>json_value</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Opsional</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>Kondisi: Sumber mengizinkan kolom metadata JSON ini; makna tepatnya pada layanan hulu bergantung pada model.</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr data-parameter-availability=\"pass_through_metadata\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">trace</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>json_value</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Opsional</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>Kondisi: Sumber mengizinkan kolom metadata JSON ini; makna tepatnya pada layanan hulu bergantung pada model.</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>object</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Opsional</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>Kondisi: provider.options ditolak</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinasi bahan masukan</summary><p class=\"note-s\"><b>text_to_embedding</b></p></details><details class=\"note-s\" data-method-contract><summary>Parameter metode dan siklus hidup</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Kontrak</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>model, input</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>input_shapes</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>string, string[], nonnegative_integer_token_array, nonnegative_integer_token_array[]</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>encoding_format</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>float</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>dimensions_override</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>false</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>max_input_budget_units</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>32000</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>multimodal_objects</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>false</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>text, token_ids</td></tr></tbody></table></div><p>Siklus hidup: <code>synchronous_json</code></p><p class=\"note-s\">Pertahankan index dan dimensi setiap vektor.</p><p class=\"note-s\">Nama model multimodal tidak mengizinkan objek gambar pada jalur persis ini.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Paket</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Referensi tarif tidak menambah opsi permintaan. Parameter yang didukung tercantum pada metode yang dipilih.</p><dl data-price-conditions><dt>Mode Fast</dt><dd>Tarif standar <span class=\"note-s\">Saat mode fast dipilih</span></dd><dt>Mode Flex</dt><dd>Tarif standar <span class=\"note-s\">Saat mode flex dipilih</span></dd><dt>Upaya penalaran maksimum</dt><dd>Tarif standar <span class=\"note-s\">Saat upaya penalaran maksimum menggunakan penyesuaian default</span></dd></dl></div><div data-declared-tariff-pricing><h4>Tarif Ailoot</h4><h4>Harga menurut konfigurasi</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfigurasi</th><th>Jadwal tarif</th><th>Biaya</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Tarif dasar token</th><td data-cell-label=\"Jadwal tarif\"><span class=\"card-cell-label\">Jadwal tarif</span>Tarif dasar</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Masukan · Token masukan</span> <b>$0.00012</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Keluaran · Token keluaran</span> <b>$0</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Masukan · Pembacaan cache</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Masukan · Penulisan cache</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Masukan · Penulisan cache, 1 jam</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot mencadangkan perkiraan dana sebelum permintaan. Setelah hasil diterima, tagihan akhir diselesaikan berdasarkan penggunaan yang terukur. Penyelesaian tagihan streaming menggunakan catatan penggunaan akhir. <a href=\"/docs/id/billing/reserve/\">Cara kerja cadangan dan penyelesaian tagihan →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Contoh permintaan</h3><h4>Ailoot Ultra · Embedding</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Pilihan kode\"><button class=\"cg-tab\" id=\"model-code-2701-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2701-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button><button class=\"cg-tab\" id=\"model-code-2701-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2701-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Python SDK</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Salin kode\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2701-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2701-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;voyageai/voyage-4&quot;, &quot;input&quot;: [&quot;First document&quot;, &quot;Second document&quot;]}&#39;)\n\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/embeddings \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&quot;result.json&quot;).read_text())\nfor x in r.get(&quot;data&quot;,[]): print(json.dumps({&quot;index&quot;:x.get(&quot;index&quot;),&quot;embedding&quot;:x.get(&quot;embedding&quot;)}))\nPY_RESULT\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2701-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2701-tab-1\" hidden><pre data-lang=\"python\"><code>from openai import OpenAI\nimport os\n\nclient=OpenAI(base_url=&quot;https://api.ailoot.ai/v1&quot;,api_key=os.environ[&quot;AILOOT_API_KEY&quot;],max_retries=0)\nresult=client.embeddings.create(model=&#39;voyageai/voyage-4&#39;,input=[&quot;First document&quot;,&quot;Second document&quot;])\nprint(result)\nfor item in result.data:print(item.index,item.embedding)\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Terima dan simpan hasil</h3><h4>Ailoot Ultra · Embedding</h4><p class=\"note-s\">json</p><div class=\"card-result-process\" data-all-results><h5>Simpan semua hasil yang selesai</h5><p class=\"note-s\">Simpan setiap respons lengkap, berkas, dan bagian konten yang dikembalikan.</p><p class=\"note-s\">Simpan setiap vektor beserta index masing-masing. Jumlah vektor harus sama dengan jumlah input; dimensinya harus konsisten.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jika respons asli perlu diperiksa</h5><p class=\"note-s\">Endpoint untuk tugas embedding tidak ditambahkan.</p></div><details class=\"card-about\" data-output-fields><summary>Kolom respons</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Kolom</th><th>Jenis</th></tr></thead><tbody><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">object</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">data[].index</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>integer</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">data[].embedding</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>finite float[]</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>object</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Kesalahan dan langkah berikutnya</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Respons</th><th>Kondisi</th><th>Langkah berikutnya</th></tr></thead><tbody><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Kondisi\"><span class=\"card-cell-label\">Kondisi</span>Bidang wajib, representasi materi, atau nilai parameter tidak valid</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span>Perbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Alias model</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=voyageai%2Fvoyage-4&amp;route=Ultra&amp;caller=voyageai%2Fvoyage-4&amp;fmt=embeddings\"><code>voyageai/voyage-4</code></a></span></p><h4>Alias jalur metode</h4><p class=\"note-s\">Gunakan jalur metode yang ditampilkan di atas.</p><h4>ID pemanggil terkait</h4><p class=\"note-s\"><a href=\"#m=voyageai%2Fvoyage-4&amp;route=Ultra&amp;caller=voyageai%2Fvoyage-4&amp;fmt=embeddings\"><code>voyageai/voyage-4</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "voyageai/voyage-4",
        "fmt": "embeddings",
        "http": "POST",
        "path": "/v1/embeddings",
        "request_model_id": "voyageai/voyage-4",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|embeddings|/v1/embeddings|voyageai%2Fvoyage-4",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep every vector with its index. Vector count must equal input count; dimensions must be consistent.",
            "errors": [
              {
                "code": null,
                "condition": "Bidang wajib, representasi materi, atau nilai parameter tidak valid",
                "http_status": 400,
                "recovery": "Perbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru.",
                "type": "invalid_request_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "job_read": null,
              "mode": "synchronous_json",
              "unknown": "Endpoint untuk tugas embedding tidak ditambahkan."
            },
            "material_combinations": [
              {
                "alternatives": [
                  "string",
                  "string[]",
                  "nonnegative_integer_token_array",
                  "nonnegative_integer_token_array[]"
                ],
                "mode": "text_to_embedding"
              }
            ],
            "operation_modes": [
              "single_embedding",
              "batched_embeddings"
            ],
            "outputs": {
              "all_results": "Simpan setiap vektor beserta index masing-masing. Jumlah vektor harus sama dengan jumlah input; dimensinya harus konsisten.",
              "default_dimensions": null,
              "family": "embedding",
              "fields": [
                {
                  "description": null,
                  "name": "object",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[].index",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "data[].embedding",
                  "type": "finite float[]"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "voyageai/voyage-4"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "budget": {
                  "maximum": 32000,
                  "text_unit": "byte UTF8",
                  "token_unit": "elemen array token"
                },
                "conditions": "Batch homogen yang tidak kosong. ID token berupa bilangan bulat nonnegatif.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "input",
                "required": true,
                "type": "string|string[]|integer[]|integer[][]"
              },
              {
                "availability": "source_interface",
                "default": "float",
                "default_known": true,
                "enum": [
                  "float"
                ],
                "enum_known": true,
                "name": "encoding_format",
                "required": false,
                "type": "string"
              },
              {
                "availability": "unsupported",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "dimensions",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "Sumber mengizinkan kolom metadata JSON ini; makna tepatnya pada layanan hulu bergantung pada model.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "user",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "Sumber mengizinkan kolom metadata JSON ini; makna tepatnya pada layanan hulu bergantung pada model.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "session_id",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "Sumber mengizinkan kolom metadata JSON ini; makna tepatnya pada layanan hulu bergantung pada model.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "source_interface",
                "conditions": "provider.options ditolak",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "mixed input kinds",
              "empty input",
              "image/audio/file objects",
              "encoding_format=base64",
              "dimensions override"
            ]
          },
          "hints": [
            "Pertahankan index dan dimensi setiap vektor.",
            "Nama model multimodal tidak mengizinkan objek gambar pada jalur persis ini."
          ],
          "input": {
            "content_type": "application/json",
            "dimensions_override": false,
            "encoding_format": [
              "float"
            ],
            "input_shapes": [
              "string",
              "string[]",
              "nonnegative_integer_token_array",
              "nonnegative_integer_token_array[]"
            ],
            "material_types": [
              "text",
              "token_ids"
            ],
            "max_input_budget_units": 32000,
            "multimodal_objects": false,
            "required": [
              "model",
              "input"
            ]
          },
          "lifecycle": {
            "mode": "synchronous_json",
            "unknown": "no embedding job endpoint inferred"
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/embeddings"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_embedding"
          ],
          "output": {
            "default_dimensions": null,
            "family": "embedding",
            "format": "json",
            "http_success": 200,
            "vectors": "one dense float vector per input; indices/model/usage validated"
          }
        },
        "ctx": 32000,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Tarif dasar token",
            "units": [
              {
                "amount": "0.00012000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000012",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"voyageai/voyage-4\", \"input\": [\"First document\", \"Second document\"]}')\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/embeddings \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path(\"result.json\").read_text())\nfor x in r.get(\"data\",[]): print(json.dumps({\"index\":x.get(\"index\"),\"embedding\":x.get(\"embedding\")}))\nPY_RESULT\n",
            "label": "curl · retained exact creation",
            "language": "bash"
          },
          {
            "code": "from openai import OpenAI\nimport os\n\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nresult=client.embeddings.create(model='voyageai/voyage-4',input=[\"First document\",\"Second document\"])\nprint(result)\nfor item in result.data:print(item.index,item.embedding)\n",
            "label": "Python SDK · all vectors",
            "language": "python"
          }
        ],
        "family": "openai",
        "fast_multiplier": 1,
        "flex_multiplier": 1,
        "fmt": "embeddings",
        "hints": [
          "Keep every vector index and dimension.",
          "Multimodal model name does not admit image objects on this exact path."
        ],
        "http": "POST",
        "in": 0.12,
        "input": [
          "text",
          "token_ids"
        ],
        "label": "Эмбеддинги",
        "max_out": null,
        "max_reasoning_effort_multiplier": 1,
        "method_aliases": [],
        "out": 0,
        "output": [
          "embedding"
        ],
        "path": "/v1/embeddings",
        "price_conditions": [
          {
            "label": "Mode Fast",
            "value": "Tarif standar",
            "when": "Saat mode fast dipilih"
          },
          {
            "label": "Mode Flex",
            "value": "Tarif standar",
            "when": "Saat mode flex dipilih"
          },
          {
            "label": "Upaya penalaran maksimum",
            "value": "Tarif standar",
            "when": "Saat upaya penalaran maksimum menggunakan penyesuaian default"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.00012000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000012",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "voyageai/voyage-4",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "units": [
          {
            "amount": "0.00012000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000012",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    }
  ],
  "model_id": "voyageai/voyage-4",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "2086ff609d98dd6deb30e8aeedcb82fe0ff0467cde1dd16326b1c3fa10a6daba",
    "input_html_sha256": "12e8b282de2a70f824830b02dac16b1d047c6fbcf4f5313d4f8ee4ab224a0b2f",
    "private_audit_sha256": "03a000e130910000174034111bc573e691f82040714aaed65b5da6093b90cd7e",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/id/voyageai-voyage-4/",
    "description": "voyage-4 membuat embedding teks untuk temu kembali serbaguna dan multibahasa, dengan ruang vektor bersama dalam keluarga Voyage 4. Model mendukung masukan 32.000 token, pilihan keluaran 256–2048 dimensi, dan peran query/document untuk pencarian serta RAG.",
    "locale": "id",
    "md_url": "https://ailoot.ai/models/id/voyageai-voyage-4/index.md",
    "title": "VoyageAI by MongoDB: voyage-4 — Ailoot",
    "url": "https://ailoot.ai/models/id/voyageai-voyage-4/"
  },
  "rawModel": {
    "about": "voyage-4 adalah model embedding teks berukuran menengah Voyage AI dalam keluarga Voyage 4. Model mengubah teks kueri dan dokumen menjadi vektor numerik untuk temu kembali serbaguna serta multibahasa. Kemampuan khas keluarga ini adalah ruang embedding bersama: voyage-4, voyage-4-large, voyage-4-lite, dan voyage-4-nano menghasilkan representasi kompatibel, sehingga sisi kueri dan dokumen dalam tugas pencarian dapat menggunakan model berbeda dalam keluarga tersebut.\n\n### Ruang bersama dan temu kembali asimetris\n\nProdusen menyebut penggunaan model kueri dan korpus yang berbeda sebagai temu kembali asimetris. Salah satu pola yang didokumentasikan adalah menyiapkan korpus dengan voyage-4-large dan mencarinya menggunakan embedding kueri voyage-4. Korpus dibuat embedding-nya sekali atau ketika materi sumber berubah, sementara vektor kueri dibuat saat pencarian masuk. Ruang bersama memungkinkan perubahan pilihan model sisi kueri dalam keluarga tanpa harus membuat ulang embedding korpus hanya karena penggantian itu.\n\nJaga dimensi keluaran dan representasi tetap kompatibel pada vektor yang dibandingkan. Pernyataan ruang bersama menyangkut model teks Voyage 4 yang disebutkan; hal ini tidak terbukti hanya karena dua model yang tidak terkait mengembalikan larik sama panjang. Karena itu, tugas praktis dapat menggunakan voyage-4 pada kedua sisi pencarian atau memakai vektor kuerinya dengan indeks dokumen voyage-4-large yang ada ketika pengaturan representasinya cocok.\n\n### Peran query dan document\n\nUntuk temu kembali, Voyage menyarankan identifikasi teks masukan sebagai query atau document. Opsi peran masukan menyediakan instruksi temu kembali terkait sebelum pemvektoran. Siapkan bagian korpus sebagai dokumen dan pilihan kata pencarian pengguna sebagai kueri, dengan mempertahankan teks sumber sebenarnya serta pengenal di samping setiap vektor tersimpan.\n\nMisalnya, koleksi pencarian pengetahuan dapat mengindeks instruksi teknis dan penjelasan produk. Kueri tentang hal yang terjadi setelah impor gagal harus mengembalikan bagian sumber yang menjelaskan perilaku tersebut. Simpan judul, kondisi relevan, dan lokasi sumber bersama bagian agar hasil pencarian dapat diperiksa atau digunakan tahap jawaban RAG berikutnya. Embedding adalah representasi numerik untuk temu kembali; bagian sumber aslinya merupakan bukti yang digunakan pada tahap berikutnya.\n\n### Dimensi dan jenis data keluaran\n\nJendela konteks per teks yang didokumentasikan adalah 32.000 token. Dimensi yang dapat dipilih adalah 256, 512, 1024, dan 2048, dengan 1024 sebagai bawaan. Pembelajaran Matryoshka menyediakan ukuran representasi bersarang tersebut. Keluaran dapat menggunakan floating-point 32 bit, integer 8 bit bertanda atau tanpa tanda, atau nilai biner terkemas, yang dimungkinkan oleh persiapan keluarga yang memperhitungkan kuantisasi.\n\nDengan keluaran biner terkemas, setiap byte hasil menyimpan delapan bit embedding, sehingga panjang daftar byte adalah seperdelapan dimensi yang dipilih. Jumlah byte dan dimensi embedding memiliki makna berbeda. Pilih representasi yang dapat ditafsirkan indeks pencarian dan periksa relevansi kandidat pada pertanyaan serta bahasa yang benar-benar digunakan koleksi sebelum memilih konfigurasi terkompresi.\n\n### Panjang masukan, batch, dan pemotongan\n\nPanduan embedding teks pembuat saat ini mengizinkan hingga 1.000 string dan total 320.000 token dalam permintaan voyage-4. Jatah batch terpisah dari jendela 32.000 token untuk setiap masukan. Pemotongan aktif secara bawaan: teks terlalu panjang dipendekkan agar muat. Jika pemotongan dinonaktifkan, item terlalu panjang menghasilkan galat.\n\nUntuk laporan panjang atau transkrip, siapkan bagian yang memuat jawaban secara sengaja alih-alih mengandalkan pemotongan pada batas masukan. Pertahankan hubungan setiap bagian dengan dokumen induk dan versi sumber. Masukan embedding voyage-4 biasa adalah teks individual; pemrosesan kelompok potongan kontekstual milik model embedding kontekstual yang didokumentasikan secara terpisah.\n\n### Gunakan hasil temu kembali\n\nSimpan vektor bersama teks bagian dan pengenal sumber yang stabil, bandingkan setiap vektor kueri dengan vektor dokumen kompatibel, dan kembalikan bagian kandidat. Rilis keluarga mengevaluasi temu kembali pada materi termasuk dokumen teknis, percakapan, dokumen panjang, kode, hukum, keuangan, dan teks web. Reranker terpisah dapat menyempurnakan kandidat, dan tahap jawaban berikutnya dapat menggunakan teksnya. Nilai bagian hasil berdasarkan tugas; kompatibilitas ruang bersama memungkinkan kombinasi model, sementara kegunaan hasil tetap bergantung pada materi sumber dan pertanyaan.",
    "alias_of": null,
    "aliases": [],
    "author": "VoyageAI by MongoDB",
    "available": null,
    "canonical_model": "voyageai/voyage-4",
    "capabilities": {
      "context_length": 32000,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "embeddings"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00012000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000012",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          }
        ],
        "summary": "Informasi lengkap harga konfigurasi tersedia di bagian detail."
      }
    ],
    "ctx": 32000,
    "entity_type": "model",
    "formats": [
      "embeddings"
    ],
    "id": "voyageai/voyage-4",
    "input": [
      "text",
      "token_ids"
    ],
    "kind": "embedding",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep every vector with its index. Vector count must equal input count; dimensions must be consistent.",
            "errors": [
              {
                "code": null,
                "condition": "Bidang wajib, representasi materi, atau nilai parameter tidak valid",
                "http_status": 400,
                "recovery": "Perbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru.",
                "type": "invalid_request_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "job_read": null,
              "mode": "synchronous_json",
              "unknown": "Endpoint untuk tugas embedding tidak ditambahkan."
            },
            "material_combinations": [
              {
                "alternatives": [
                  "string",
                  "string[]",
                  "nonnegative_integer_token_array",
                  "nonnegative_integer_token_array[]"
                ],
                "mode": "text_to_embedding"
              }
            ],
            "operation_modes": [
              "single_embedding",
              "batched_embeddings"
            ],
            "outputs": {
              "all_results": "Simpan setiap vektor beserta index masing-masing. Jumlah vektor harus sama dengan jumlah input; dimensinya harus konsisten.",
              "default_dimensions": null,
              "family": "embedding",
              "fields": [
                {
                  "description": null,
                  "name": "object",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[].index",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "data[].embedding",
                  "type": "finite float[]"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "voyageai/voyage-4"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "budget": {
                  "maximum": 32000,
                  "text_unit": "byte UTF8",
                  "token_unit": "elemen array token"
                },
                "conditions": "Batch homogen yang tidak kosong. ID token berupa bilangan bulat nonnegatif.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "input",
                "required": true,
                "type": "string|string[]|integer[]|integer[][]"
              },
              {
                "availability": "source_interface",
                "default": "float",
                "default_known": true,
                "enum": [
                  "float"
                ],
                "enum_known": true,
                "name": "encoding_format",
                "required": false,
                "type": "string"
              },
              {
                "availability": "unsupported",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "dimensions",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "Sumber mengizinkan kolom metadata JSON ini; makna tepatnya pada layanan hulu bergantung pada model.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "user",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "Sumber mengizinkan kolom metadata JSON ini; makna tepatnya pada layanan hulu bergantung pada model.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "session_id",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "Sumber mengizinkan kolom metadata JSON ini; makna tepatnya pada layanan hulu bergantung pada model.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "source_interface",
                "conditions": "provider.options ditolak",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "mixed input kinds",
              "empty input",
              "image/audio/file objects",
              "encoding_format=base64",
              "dimensions override"
            ]
          },
          "hints": [
            "Pertahankan index dan dimensi setiap vektor.",
            "Nama model multimodal tidak mengizinkan objek gambar pada jalur persis ini."
          ],
          "input": {
            "content_type": "application/json",
            "dimensions_override": false,
            "encoding_format": [
              "float"
            ],
            "input_shapes": [
              "string",
              "string[]",
              "nonnegative_integer_token_array",
              "nonnegative_integer_token_array[]"
            ],
            "material_types": [
              "text",
              "token_ids"
            ],
            "max_input_budget_units": 32000,
            "multimodal_objects": false,
            "required": [
              "model",
              "input"
            ]
          },
          "lifecycle": {
            "mode": "synchronous_json",
            "unknown": "no embedding job endpoint inferred"
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/embeddings"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_embedding"
          ],
          "output": {
            "default_dimensions": null,
            "family": "embedding",
            "format": "json",
            "http_success": 200,
            "vectors": "one dense float vector per input; indices/model/usage validated"
          }
        },
        "ctx": 32000,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Tarif dasar token",
            "units": [
              {
                "amount": "0.00012000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000012",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"voyageai/voyage-4\", \"input\": [\"First document\", \"Second document\"]}')\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/embeddings \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path(\"result.json\").read_text())\nfor x in r.get(\"data\",[]): print(json.dumps({\"index\":x.get(\"index\"),\"embedding\":x.get(\"embedding\")}))\nPY_RESULT\n",
            "label": "curl · retained exact creation",
            "language": "bash"
          },
          {
            "code": "from openai import OpenAI\nimport os\n\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nresult=client.embeddings.create(model='voyageai/voyage-4',input=[\"First document\",\"Second document\"])\nprint(result)\nfor item in result.data:print(item.index,item.embedding)\n",
            "label": "Python SDK · all vectors",
            "language": "python"
          }
        ],
        "family": "openai",
        "fast_multiplier": 1,
        "flex_multiplier": 1,
        "fmt": "embeddings",
        "hints": [
          "Keep every vector index and dimension.",
          "Multimodal model name does not admit image objects on this exact path."
        ],
        "http": "POST",
        "in": 0.12,
        "input": [
          "text",
          "token_ids"
        ],
        "label": "Эмбеддинги",
        "max_out": null,
        "max_reasoning_effort_multiplier": 1,
        "method_aliases": [],
        "out": 0,
        "output": [
          "embedding"
        ],
        "path": "/v1/embeddings",
        "price_conditions": [
          {
            "label": "Mode Fast",
            "value": "Tarif standar",
            "when": "Saat mode fast dipilih"
          },
          {
            "label": "Mode Flex",
            "value": "Tarif standar",
            "when": "Saat mode flex dipilih"
          },
          {
            "label": "Upaya penalaran maksimum",
            "value": "Tarif standar",
            "when": "Saat upaya penalaran maksimum menggunakan penyesuaian default"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.00012000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000012",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "voyageai/voyage-4",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "units": [
          {
            "amount": "0.00012000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000012",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "voyageai/voyage-4",
        "request_model_id": "voyageai/voyage-4",
        "route_label": "Ultra"
      }
    ],
    "name": "VoyageAI by MongoDB: voyage-4",
    "price": {
      "in": 0.12,
      "in_label": null,
      "out": 0,
      "out_label": null,
      "scope_label": "Token rates",
      "sort_in": 0.12,
      "sort_out": 0,
      "varies": false
    },
    "pricing_profiles": [
      {
        "dimensions": {
          "regime": "base"
        },
        "label": "Эмбеддинги · Base token rates",
        "units": [
          {
            "amount": "0.00012000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000012",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    ],
    "public_id": "voyageai/voyage-4",
    "short": "voyage-4 membuat embedding teks untuk temu kembali serbaguna dan multibahasa, dengan ruang vektor bersama dalam keluarga Voyage 4. Model mendukung masukan 32.000 token, pilihan keluaran 256–2048 dimensi, dan peran query/document untuk pencarian serta RAG."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "voyage-4 membuat embedding teks untuk temu kembali serbaguna dan multibahasa, dengan ruang vektor bersama dalam keluarga Voyage 4. Model mendukung masukan 32.000 token, pilihan keluaran 256–2048 dimensi, dan peran query/document untuk pencarian serta RAG.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "1e6374132055a02fe894579b337b6ca2dcd3231064d3b1e5a0303c547a8dae71",
    "renderer_sha256": "2a0471475a29000c23db326ca1e315df73dee7524f6bc2907818ee3458813f2d"
  },
  "sourceRevision": "3929bde6d7fa9b68d2803cd2219f6be0adac89e5ed6a920b92ed9ea017ef020a"
}
