{
  "aboutHtml": "<p>voyage-4-large on Voyage AI:n Voyage 4 -perheen johtava tekstiupotusmalli. Se esittää lähdetekstijaksot ja kyselyt numeerisina vektoreina yleistä ja monikielistä tiedonhakua varten. Sen kaksi erityispiirrettä ovat mixture-of-experts-mallirakenne ja voyage-4-large-, voyage-4-, voyage-4-lite- ja voyage-4-nano-mallien yhteinen upotusavaruus.</p><h4>Yhteinen avaruus: erilliset valinnat korpukselle ja kyselylle</h4><p>Valmistaja kuvaa epäsymmetristä hakua: asiakirjat voidaan upottaa voyage-4-largella ja kyselyvektorit valmistella toisella Voyage 4 -perheen mallilla. Esimerkiksi Largella esitetystä korpuksesta voi hakea voyage-4-kyselyillä. Näin haun kahdella puolella voi olla eri mallivalinnat samalla, kun ne pysyvät dokumentoidussa yhteensopivassa avaruudessa.</p><p>Käytännön kokoelma voi siis valmistella vakaat asiakirjajaksot Largella ja valita kyselypuolen mallin itsenäisesti. Asiakirjat upotetaan korpuksen luonnin tai päivityksen yhteydessä, kun taas kyselyt vektoroidaan käyttäjien hakiessa. Perheen julkistus kuvaa kyselymallin vaihtamista yhteensopivan perheen sisällä ilman asiakirjakorpuksen uudelleenvektorointia pelkästään tämän muutoksen takia. Pidä vertailtavat vektorit samanulotteisina ja esitysmuodoissa, joita hakujärjestelmä osaa tulkita yhdessä.</p><h4>Mixture-of-experts-rakenne upotuksissa</h4><p>Tiheä eteenpäin syöttävä kerros käsittelee jokaisen tokenin koko parametrijoukollaan. Mallille voyage-4-large kuvattu MoE-lähestymistapa käyttää reititintä ja asiantuntijoiden eteenpäin syöttäviä verkkoja. Se valitsee kutakin tokenia käsittelevät asiantuntijat. Näin mallin kokonaiskapasiteetti erotetaan tietylle tokenille aktiivisista parametreista. Voyage ilmoittaa mallin MoE-rakenteen aktivointisuhteeksi 1/10 ja käyttää top-k-reititystä.</p><p>Valmistajan tekninen selitys kuvaa myös kahta kehitysvalintaa. Asiantuntijan kapasiteetti vaikuttaa siihen, ohittavatko ylimääräiset tokenit asiantuntijakerroksen residuaalipolkua pitkin. Tiimi valitsi suurimman toteutuskelpoisen kapasiteettikertoimen välttääkseen hakulaadun heikkenemisen. Viimeisessä koulutusvaiheessa reitittimen parametrit jäädytetään ennen mallien yhdistämistä, jotta lähdemallien interpolointi ei muuta opittua asiantuntijavalinnan reititystä. Nämä ovat mallin valmistelun ominaisuuksia. Ne ovat erillisiä syötteen valmistelussa käytettävistä tekstipituus- ja katkaisuasetuksista.</p><h4>Ulottuvuudet ja tuloksen esitysmuoto</h4><p>Virallinen mallitaulukko määrittää 32,000 tokenin konteksti-ikkunan sekä valittavat 256-, 512-, 1024- ja 2048-ulotteiset upotukset, joista 1024 on oletus. Perhe käyttää sisäkkäisten esityskokojen Matryoshka-oppimista ja tukee kvantisointivalintoja: 32-bittistä liukulukua, etumerkillisiä tai etumerkittömiä 8-bittisiä kokonaislukuja sekä pakattua binaaritulosta.</p><p>Binaarituloksessa palautetun tavuluettelon pituus on kahdeksasosa valitusta ulottuvuusmäärästä, koska kukin tavu sisältää kahdeksan upotusbittiä. Säilytä ulottuvuus- ja tietotyyppivalinnat indeksin mukana ja käytä esitysmuotoa tukevaa vertailumenetelmää. Pienempi tai pakattu vektori muuttaa haussa käytettävää esitystä. Arvioi todellisiin kysymyksiin palautetut olennaiset tekstikohdat ennen valintaa kokoelmalle.</p><h4>Valmistele asiakirja- ja kyselysyötteet</h4><p>Voyage suosittelee document-roolia korpuksen tekstijaksoille ja query-roolia hakusanoitukselle. Sen rooliasetus lisää vastaavan hakuohjeen ennen upottamista. Säilytä tekstikohdan hyödyllinen otsikko, ehdot ja sijainti lähteessä. Tallenna palautettu vektori alkuperäisen tekstin ja vakaan tunnisteen kanssa.</p><p>Teknisessä tietokokoelmassa virhetilaa koskevan kysymyksen tulee johtaa kohtaan, joka kuvaa kyseisen tilan ja sen olennaiset ehdot. Säilytä eri kieliä sisältävässä asiakirjakokoelmassa lähdekieli ja arvioi kysymykset ja termit, joilla käyttäjät hakevat. Julkaisu kattaa hakuaineistona muun muassa tekniset asiakirjat, keskustelut, pitkät asiakirjat, koodin, oikeuden, rahoituksen ja verkkotekstin. Upotus löytää ehdokasaineiston; myöhempi uudelleenjärjestäjä tai vastausvaihe käyttää alkuperäistä tekstiä.</p><h4>Kontekstin, erien ja katkaisun rajat</h4><p>Valmistajan nykyinen ohje sallii voyage-4-large-pyynnössä enintään 1,000 merkkijonoa ja yhteensä 120,000 syötetokenia. Tämä eroaa voyage-4:lle luetellusta erärajasta, vaikka molemmilla on 32,000 tokenin tekstikohtainen ikkuna. Oletusarvoinen katkaisu lyhentää liian pitkän syötteen sopivaksi. Kun katkaisu poistetaan käytöstä, liian pitkä teksti palauttaa virheen.</p><p>Valitse vastauksen sisältävien tekstijaksojen rajat harkitusti, jotta pitkästä lähteestä ei katoa olennaista täsmennystä katkaistussa lopussa. Säilytä yhteys lähteeseen hakutuloksia palautettaessa ja tarkista varsinainen ehdokasteksti. Älä pidä vektorien läheisyyttä niiden sisällön varmistuksena. Yhteisen avaruuden yhteensopivuus koskee dokumentoitua Voyage 4 -tekstiperhettä. Kontekstiin sidottu lohkokäsittely, kuva- ja videoupotukset sekä myöhemmät malliversiot ovat omia mallikohtaisia työnkulkujaan.</p>",
  "aboutText": "voyage-4-large on Voyage AI:n Voyage 4 -perheen johtava tekstiupotusmalli. Se esittää lähdetekstijaksot ja kyselyt numeerisina vektoreina yleistä ja monikielistä tiedonhakua varten. Sen kaksi erityispiirrettä ovat mixture-of-experts-mallirakenne ja voyage-4-large-, voyage-4-, voyage-4-lite- ja voyage-4-nano-mallien yhteinen upotusavaruus.\n\n### Yhteinen avaruus: erilliset valinnat korpukselle ja kyselylle\n\nValmistaja kuvaa epäsymmetristä hakua: asiakirjat voidaan upottaa voyage-4-largella ja kyselyvektorit valmistella toisella Voyage 4 -perheen mallilla. Esimerkiksi Largella esitetystä korpuksesta voi hakea voyage-4-kyselyillä. Näin haun kahdella puolella voi olla eri mallivalinnat samalla, kun ne pysyvät dokumentoidussa yhteensopivassa avaruudessa.\n\nKäytännön kokoelma voi siis valmistella vakaat asiakirjajaksot Largella ja valita kyselypuolen mallin itsenäisesti. Asiakirjat upotetaan korpuksen luonnin tai päivityksen yhteydessä, kun taas kyselyt vektoroidaan käyttäjien hakiessa. Perheen julkistus kuvaa kyselymallin vaihtamista yhteensopivan perheen sisällä ilman asiakirjakorpuksen uudelleenvektorointia pelkästään tämän muutoksen takia. Pidä vertailtavat vektorit samanulotteisina ja esitysmuodoissa, joita hakujärjestelmä osaa tulkita yhdessä.\n\n### Mixture-of-experts-rakenne upotuksissa\n\nTiheä eteenpäin syöttävä kerros käsittelee jokaisen tokenin koko parametrijoukollaan. Mallille voyage-4-large kuvattu MoE-lähestymistapa käyttää reititintä ja asiantuntijoiden eteenpäin syöttäviä verkkoja. Se valitsee kutakin tokenia käsittelevät asiantuntijat. Näin mallin kokonaiskapasiteetti erotetaan tietylle tokenille aktiivisista parametreista. Voyage ilmoittaa mallin MoE-rakenteen aktivointisuhteeksi 1/10 ja käyttää top-k-reititystä.\n\nValmistajan tekninen selitys kuvaa myös kahta kehitysvalintaa. Asiantuntijan kapasiteetti vaikuttaa siihen, ohittavatko ylimääräiset tokenit asiantuntijakerroksen residuaalipolkua pitkin. Tiimi valitsi suurimman toteutuskelpoisen kapasiteettikertoimen välttääkseen hakulaadun heikkenemisen. Viimeisessä koulutusvaiheessa reitittimen parametrit jäädytetään ennen mallien yhdistämistä, jotta lähdemallien interpolointi ei muuta opittua asiantuntijavalinnan reititystä. Nämä ovat mallin valmistelun ominaisuuksia. Ne ovat erillisiä syötteen valmistelussa käytettävistä tekstipituus- ja katkaisuasetuksista.\n\n### Ulottuvuudet ja tuloksen esitysmuoto\n\nVirallinen mallitaulukko määrittää 32,000 tokenin konteksti-ikkunan sekä valittavat 256-, 512-, 1024- ja 2048-ulotteiset upotukset, joista 1024 on oletus. Perhe käyttää sisäkkäisten esityskokojen Matryoshka-oppimista ja tukee kvantisointivalintoja: 32-bittistä liukulukua, etumerkillisiä tai etumerkittömiä 8-bittisiä kokonaislukuja sekä pakattua binaaritulosta.\n\nBinaarituloksessa palautetun tavuluettelon pituus on kahdeksasosa valitusta ulottuvuusmäärästä, koska kukin tavu sisältää kahdeksan upotusbittiä. Säilytä ulottuvuus- ja tietotyyppivalinnat indeksin mukana ja käytä esitysmuotoa tukevaa vertailumenetelmää. Pienempi tai pakattu vektori muuttaa haussa käytettävää esitystä. Arvioi todellisiin kysymyksiin palautetut olennaiset tekstikohdat ennen valintaa kokoelmalle.\n\n### Valmistele asiakirja- ja kyselysyötteet\n\nVoyage suosittelee document-roolia korpuksen tekstijaksoille ja query-roolia hakusanoitukselle. Sen rooliasetus lisää vastaavan hakuohjeen ennen upottamista. Säilytä tekstikohdan hyödyllinen otsikko, ehdot ja sijainti lähteessä. Tallenna palautettu vektori alkuperäisen tekstin ja vakaan tunnisteen kanssa.\n\nTeknisessä tietokokoelmassa virhetilaa koskevan kysymyksen tulee johtaa kohtaan, joka kuvaa kyseisen tilan ja sen olennaiset ehdot. Säilytä eri kieliä sisältävässä asiakirjakokoelmassa lähdekieli ja arvioi kysymykset ja termit, joilla käyttäjät hakevat. Julkaisu kattaa hakuaineistona muun muassa tekniset asiakirjat, keskustelut, pitkät asiakirjat, koodin, oikeuden, rahoituksen ja verkkotekstin. Upotus löytää ehdokasaineiston; myöhempi uudelleenjärjestäjä tai vastausvaihe käyttää alkuperäistä tekstiä.\n\n### Kontekstin, erien ja katkaisun rajat\n\nValmistajan nykyinen ohje sallii voyage-4-large-pyynnössä enintään 1,000 merkkijonoa ja yhteensä 120,000 syötetokenia. Tämä eroaa voyage-4:lle luetellusta erärajasta, vaikka molemmilla on 32,000 tokenin tekstikohtainen ikkuna. Oletusarvoinen katkaisu lyhentää liian pitkän syötteen sopivaksi. Kun katkaisu poistetaan käytöstä, liian pitkä teksti palauttaa virheen.\n\nValitse vastauksen sisältävien tekstijaksojen rajat harkitusti, jotta pitkästä lähteestä ei katoa olennaista täsmennystä katkaistussa lopussa. Säilytä yhteys lähteeseen hakutuloksia palautettaessa ja tarkista varsinainen ehdokasteksti. Älä pidä vektorien läheisyyttä niiden sisällön varmistuksena. Yhteisen avaruuden yhteensopivuus koskee dokumentoitua Voyage 4 -tekstiperhettä. Kontekstiin sidottu lohkokäsittely, kuva- ja videoupotukset sekä myöhemmät malliversiot ovat omia mallikohtaisia työnkulkujaan.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "2873909ecfd7aa2ce7e0b03dbc3264f22cb6323a96c7a18100884ca9585b40cb",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "fi",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">VoyageAI by MongoDB: voyage-4-large</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Sulje\">×</button></div><div class=\"idline\"><span>VoyageAI by MongoDB /</span><code>voyageai/voyage-4-large</code><button type=\"button\" id=\"copy-id\">Kopioi ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Mallikortin osiot\"><button type=\"button\" data-card-jump=\"overview\">Aloitus</button><button type=\"button\" data-card-jump=\"methods\">Syötteet &amp; menetelmät</button><button type=\"button\" data-card-jump=\"pricing\">Hinnoittelu</button><button type=\"button\" data-card-jump=\"examples\">Esimerkit</button><button type=\"button\" data-card-jump=\"results\">Tulokset</button><button type=\"button\" data-card-jump=\"aliases\">Aliakset</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API-menetelmät\"><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-large\">Vektoriesitykset</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\">Aloitus</h3><p class=\"mdesc-full\">voyage-4-large on Voyage AI:n mixture-of-experts-tekstiupotusmalli yleiskäyttöiseen ja monikieliseen tiedonhakuun. Sen vektorit jakavat Voyage 4 -perheen avaruuden, joten Largen korpusupotuksia voidaan hakea perheen muiden mallien yhteensopivilla kyselyupotuksilla.</p><dl class=\"card-io\" data-card-io><div><dt>Hyväksytyt syötteet</dt><dd>Teksti · token_ids</dd></div><div><dt>Tulokset</dt><dd>embedding</dd></div></dl><details class=\"card-about\"><summary>Tietoa mallista</summary><p class=\"note-s\" data-model-method-boundary>Tämä kuvaus kattaa mallin ominaisuudet. Ailootissa saatavilla olevat syötteet, tulosteet ja asetukset luetellaan alla valitulle menetelmälle.</p><div class=\"mabout\" id=\"m-about\"><p>voyage-4-large on Voyage AI:n Voyage 4 -perheen johtava tekstiupotusmalli. Se esittää lähdetekstijaksot ja kyselyt numeerisina vektoreina yleistä ja monikielistä tiedonhakua varten. Sen kaksi erityispiirrettä ovat mixture-of-experts-mallirakenne ja voyage-4-large-, voyage-4-, voyage-4-lite- ja voyage-4-nano-mallien yhteinen upotusavaruus.</p><h4>Yhteinen avaruus: erilliset valinnat korpukselle ja kyselylle</h4><p>Valmistaja kuvaa epäsymmetristä hakua: asiakirjat voidaan upottaa voyage-4-largella ja kyselyvektorit valmistella toisella Voyage 4 -perheen mallilla. Esimerkiksi Largella esitetystä korpuksesta voi hakea voyage-4-kyselyillä. Näin haun kahdella puolella voi olla eri mallivalinnat samalla, kun ne pysyvät dokumentoidussa yhteensopivassa avaruudessa.</p><p>Käytännön kokoelma voi siis valmistella vakaat asiakirjajaksot Largella ja valita kyselypuolen mallin itsenäisesti. Asiakirjat upotetaan korpuksen luonnin tai päivityksen yhteydessä, kun taas kyselyt vektoroidaan käyttäjien hakiessa. Perheen julkistus kuvaa kyselymallin vaihtamista yhteensopivan perheen sisällä ilman asiakirjakorpuksen uudelleenvektorointia pelkästään tämän muutoksen takia. Pidä vertailtavat vektorit samanulotteisina ja esitysmuodoissa, joita hakujärjestelmä osaa tulkita yhdessä.</p><h4>Mixture-of-experts-rakenne upotuksissa</h4><p>Tiheä eteenpäin syöttävä kerros käsittelee jokaisen tokenin koko parametrijoukollaan. Mallille voyage-4-large kuvattu MoE-lähestymistapa käyttää reititintä ja asiantuntijoiden eteenpäin syöttäviä verkkoja. Se valitsee kutakin tokenia käsittelevät asiantuntijat. Näin mallin kokonaiskapasiteetti erotetaan tietylle tokenille aktiivisista parametreista. Voyage ilmoittaa mallin MoE-rakenteen aktivointisuhteeksi 1/10 ja käyttää top-k-reititystä.</p><p>Valmistajan tekninen selitys kuvaa myös kahta kehitysvalintaa. Asiantuntijan kapasiteetti vaikuttaa siihen, ohittavatko ylimääräiset tokenit asiantuntijakerroksen residuaalipolkua pitkin. Tiimi valitsi suurimman toteutuskelpoisen kapasiteettikertoimen välttääkseen hakulaadun heikkenemisen. Viimeisessä koulutusvaiheessa reitittimen parametrit jäädytetään ennen mallien yhdistämistä, jotta lähdemallien interpolointi ei muuta opittua asiantuntijavalinnan reititystä. Nämä ovat mallin valmistelun ominaisuuksia. Ne ovat erillisiä syötteen valmistelussa käytettävistä tekstipituus- ja katkaisuasetuksista.</p><h4>Ulottuvuudet ja tuloksen esitysmuoto</h4><p>Virallinen mallitaulukko määrittää 32,000 tokenin konteksti-ikkunan sekä valittavat 256-, 512-, 1024- ja 2048-ulotteiset upotukset, joista 1024 on oletus. Perhe käyttää sisäkkäisten esityskokojen Matryoshka-oppimista ja tukee kvantisointivalintoja: 32-bittistä liukulukua, etumerkillisiä tai etumerkittömiä 8-bittisiä kokonaislukuja sekä pakattua binaaritulosta.</p><p>Binaarituloksessa palautetun tavuluettelon pituus on kahdeksasosa valitusta ulottuvuusmäärästä, koska kukin tavu sisältää kahdeksan upotusbittiä. Säilytä ulottuvuus- ja tietotyyppivalinnat indeksin mukana ja käytä esitysmuotoa tukevaa vertailumenetelmää. Pienempi tai pakattu vektori muuttaa haussa käytettävää esitystä. Arvioi todellisiin kysymyksiin palautetut olennaiset tekstikohdat ennen valintaa kokoelmalle.</p><h4>Valmistele asiakirja- ja kyselysyötteet</h4><p>Voyage suosittelee document-roolia korpuksen tekstijaksoille ja query-roolia hakusanoitukselle. Sen rooliasetus lisää vastaavan hakuohjeen ennen upottamista. Säilytä tekstikohdan hyödyllinen otsikko, ehdot ja sijainti lähteessä. Tallenna palautettu vektori alkuperäisen tekstin ja vakaan tunnisteen kanssa.</p><p>Teknisessä tietokokoelmassa virhetilaa koskevan kysymyksen tulee johtaa kohtaan, joka kuvaa kyseisen tilan ja sen olennaiset ehdot. Säilytä eri kieliä sisältävässä asiakirjakokoelmassa lähdekieli ja arvioi kysymykset ja termit, joilla käyttäjät hakevat. Julkaisu kattaa hakuaineistona muun muassa tekniset asiakirjat, keskustelut, pitkät asiakirjat, koodin, oikeuden, rahoituksen ja verkkotekstin. Upotus löytää ehdokasaineiston; myöhempi uudelleenjärjestäjä tai vastausvaihe käyttää alkuperäistä tekstiä.</p><h4>Kontekstin, erien ja katkaisun rajat</h4><p>Valmistajan nykyinen ohje sallii voyage-4-large-pyynnössä enintään 1,000 merkkijonoa ja yhteensä 120,000 syötetokenia. Tämä eroaa voyage-4:lle luetellusta erärajasta, vaikka molemmilla on 32,000 tokenin tekstikohtainen ikkuna. Oletusarvoinen katkaisu lyhentää liian pitkän syötteen sopivaksi. Kun katkaisu poistetaan käytöstä, liian pitkä teksti palauttaa virheen.</p><p>Valitse vastauksen sisältävien tekstijaksojen rajat harkitusti, jotta pitkästä lähteestä ei katoa olennaista täsmennystä katkaistussa lopussa. Säilytä yhteys lähteeseen hakutuloksia palautettaessa ja tarkista varsinainen ehdokasteksti. Älä pidä vektorien läheisyyttä niiden sisällön varmistuksena. Yhteisen avaruuden yhteensopivuus koskee dokumentoitua Voyage 4 -tekstiperhettä. Kontekstiin sidottu lohkokäsittely, kuva- ja videoupotukset sekä myöhemmät malliversiot ovat omia mallikohtaisia työnkulkujaan.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Saatavilla Ailootissa · syötteet &amp; menetelmät</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Vektoriesitykset</b> <code>POST /v1/embeddings</code></summary><dl class=\"method-capabilities\"><div><dt>Syötetyypit</dt><dd><code>text</code>, <code>token_ids</code></dd></div><div><dt>Tulostyypit</dt><dd><code>embedding</code></dd></div><div><dt>Konteksti</dt><dd>32 000 tokens</dd></div><div><dt>Tulosteen muoto</dt><dd>json</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Kenttä</th><th>Tyyppi</th><th>Vaatimus</th><th>Arvot &amp; rajat</th><th>Oletus</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Pakollinen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>voyageai/voyage-4-large</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string|string[]|integer[]|integer[][]</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Pakollinen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>Kohteiden vähimmäismäärä: 1</div><div>Ehdot: Ei-tyhjä, yhdenmukaisista alkioista koostuva erä. Tokenien ID:t ovat ei-negatiivisia kokonaislukuja.</div><div>Syötebudjetti: Enimmäismäärä: 32 000 · Tekstiyksikkö: UTF8-tavut · Tokenyksikkö: Token-taulukon alkiot</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">encoding_format</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>float</div></td><td data-cell-label=\"Oletus\" data-default=\"known\"><span class=\"card-cell-label\">Oletus</span>float</td></tr><tr data-parameter-availability=\"unsupported\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">dimensions</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>integer</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Ei tuettu</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>Vähimmäismäärä: 1</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"pass_through_metadata\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">user</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>json_value</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>Ehdot: Lähde sallii tämän JSON-metatietokentän; tarkka alkuperäisen palvelun semantiikka on mallikohtainen.</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"pass_through_metadata\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">session_id</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>json_value</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>Ehdot: Lähde sallii tämän JSON-metatietokentän; tarkka alkuperäisen palvelun semantiikka on mallikohtainen.</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"pass_through_metadata\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">trace</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>json_value</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>Ehdot: Lähde sallii tämän JSON-metatietokentän; tarkka alkuperäisen palvelun semantiikka on mallikohtainen.</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>object</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>Ehdot: provider.options hylätty</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Syöteaineistojen yhdistelmät</summary><p class=\"note-s\"><b>text_to_embedding</b></p></details><details class=\"note-s\" data-method-contract><summary>Menetelmän parametrit ja elinkaari</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parametri</th><th>Sopimus</th></tr></thead><tbody><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>content_type</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>application/json</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>required</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>model, input</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>input_shapes</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>string, string[], nonnegative_integer_token_array, nonnegative_integer_token_array[]</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>encoding_format</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>float</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>dimensions_override</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>false</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>max_input_budget_units</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>32000</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>multimodal_objects</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>false</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>material_types</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>text, token_ids</td></tr></tbody></table></div><p>Elinkaari: <code>synchronous_json</code></p><p class=\"note-s\">Säilytä jokaisen vektorin indeksi ja ulottuvuus.</p><p class=\"note-s\">Mallin nimen multimodaalisuus ei tarkoita, että tämä nimenomainen reitti hyväksyisi kuvaolioita.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Hinnoittelu</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Hintatiedot eivät lisää pyyntövalintoja. Tuetut parametrit on lueteltu valitulle menetelmälle.</p><dl data-price-conditions><dt>Nopea tila</dt><dd>Vakiohinta <span class=\"note-s\">Kun nopea tila on valittu</span></dd><dt>Flex-tila</dt><dd>Vakiohinta <span class=\"note-s\">Kun flex-tila on valittu</span></dd><dt>Päättelyn enimmäisteho</dt><dd>Vakiohinta <span class=\"note-s\">Kun päättelyn enimmäistehoon sovelletaan default-oletussäätöä</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ailoot-hinnat</h4><h4>Hinnat asetusten mukaan</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Asetukset</th><th>Hinnasto</th><th>Veloitus</th></tr></thead><tbody><tr><th data-cell-label=\"Asetukset\" scope=\"row\"><span class=\"card-cell-label\">Asetukset</span>Tokenien perushinnat</th><td data-cell-label=\"Hinnasto\"><span class=\"card-cell-label\">Hinnasto</span>Perushinta</td><td data-cell-label=\"Veloitus\"><span class=\"card-cell-label\">Veloitus</span><div><span>Syöte · Syötetokenit</span> <b>$0.00024</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Tuloste · Tulostokenit</span> <b>$0</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Syöte · Välimuistin luku</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Syöte · Välimuistiin kirjoitus</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Syöte · Välimuistiin kirjoitus, 1 tunti</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenia</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot varaa arvioidun summan ennen pyyntöä. Tuloksen jälkeen lopullinen veloitus toteutetaan mitatun käytön perusteella. Suoratoiston veloituksessa käytetään lopullista käyttötietuetta. <a href=\"/docs/fi/billing/reserve/\">Varauksen ja lopullisen veloituksen toiminta →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Esimerkkipyynnöt</h3><h4>Ailoot Ultra · Vektoriesitykset</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Koodivaihtoehdot\"><button class=\"cg-tab\" id=\"model-code-2702-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2702-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button><button class=\"cg-tab\" id=\"model-code-2702-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2702-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=\"Kopioi koodi\"><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-2702-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2702-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-large&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-2702-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2702-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-large&#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\">Vastaanota ja tallenna tulokset</h3><h4>Ailoot Ultra · Vektoriesitykset</h4><p class=\"note-s\">json</p><div class=\"card-result-process\" data-all-results><h5>Säilytä kaikki valmistuneet tulokset</h5><p class=\"note-s\">Säilytä jokainen kokonainen palautettu vastaus, tiedosto ja sisällön osa.</p><p class=\"note-s\">Säilytä jokainen vektori indekseineen. Vektorien määrän on vastattava syötteiden määrää; ulottuvuuksien on oltava yhdenmukaiset.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jos alkuperäinen vastaus on tarkistettava</h5><p class=\"note-s\">Uutta upotustehtävien päätepistettä ei oteta käyttöön.</p></div><details class=\"card-about\" data-output-fields><summary>Vastauksen kentät</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Kenttä</th><th>Tyyppi</th></tr></thead><tbody><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">object</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>string</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>string</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">data[].index</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>integer</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">data[].embedding</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>finite float[]</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>object</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Virheet ja seuraavat vaiheet</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Vastaus</th><th>Ehto</th><th>Seuraava vaihe</th></tr></thead><tbody><tr><th data-cell-label=\"Vastaus\" scope=\"row\"><span class=\"card-cell-label\">Vastaus</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Ehto\"><span class=\"card-cell-label\">Ehto</span>Virheelliset pakolliset kentät, aineiston esitysmuoto tai parametrin arvo</td><td data-cell-label=\"Seuraava vaihe\"><span class=\"card-cell-label\">Seuraava vaihe</span>Korjaa ilmoitetut kentät ennen uutta luontipyyntöä.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliakset</h3><h4>Mallin aliakset</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=voyageai%2Fvoyage-4-large&amp;route=Ultra&amp;caller=voyageai%2Fvoyage-4-large&amp;fmt=embeddings\"><code>voyageai/voyage-4-large</code></a></span></p><h4>Menetelmäpolkujen aliakset</h4><p class=\"note-s\">Käytä yllä näytettyjä menetelmäpolkuja.</p><h4>Liittyvät kutsujan ID:t</h4><p class=\"note-s\"><a href=\"#m=voyageai%2Fvoyage-4-large&amp;route=Ultra&amp;caller=voyageai%2Fvoyage-4-large&amp;fmt=embeddings\"><code>voyageai/voyage-4-large</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "voyageai/voyage-4-large",
        "fmt": "embeddings",
        "http": "POST",
        "path": "/v1/embeddings",
        "request_model_id": "voyageai/voyage-4-large",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|embeddings|/v1/embeddings|voyageai%2Fvoyage-4-large",
      "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": "Virheelliset pakolliset kentät, aineiston esitysmuoto tai parametrin arvo",
                "http_status": 400,
                "recovery": "Korjaa ilmoitetut kentät ennen uutta luontipyyntöä.",
                "type": "invalid_request_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "job_read": null,
              "mode": "synchronous_json",
              "unknown": "Uutta upotustehtävien päätepistettä ei oteta käyttöön."
            },
            "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": "Säilytä jokainen vektori indekseineen. Vektorien määrän on vastattava syötteiden määrää; ulottuvuuksien on oltava yhdenmukaiset.",
              "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-large"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "budget": {
                  "maximum": 32000,
                  "text_unit": "UTF8-tavut",
                  "token_unit": "Token-taulukon alkiot"
                },
                "conditions": "Ei-tyhjä, yhdenmukaisista alkioista koostuva erä. Tokenien ID:t ovat ei-negatiivisia kokonaislukuja.",
                "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": "Lähde sallii tämän JSON-metatietokentän; tarkka alkuperäisen palvelun semantiikka on mallikohtainen.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "user",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "Lähde sallii tämän JSON-metatietokentän; tarkka alkuperäisen palvelun semantiikka on mallikohtainen.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "session_id",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "Lähde sallii tämän JSON-metatietokentän; tarkka alkuperäisen palvelun semantiikka on mallikohtainen.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "source_interface",
                "conditions": "provider.options hylätty",
                "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": [
            "Säilytä jokaisen vektorin indeksi ja ulottuvuus.",
            "Mallin nimen multimodaalisuus ei tarkoita, että tämä nimenomainen reitti hyväksyisi kuvaolioita."
          ],
          "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": "Tokenien perushinnat",
            "units": [
              {
                "amount": "0.00024000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000024",
                "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-large\", \"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-large',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.24,
        "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": "Nopea tila",
            "value": "Vakiohinta",
            "when": "Kun nopea tila on valittu"
          },
          {
            "label": "Flex-tila",
            "value": "Vakiohinta",
            "when": "Kun flex-tila on valittu"
          },
          {
            "label": "Päättelyn enimmäisteho",
            "value": "Vakiohinta",
            "when": "Kun päättelyn enimmäistehoon sovelletaan default-oletussäätöä"
          }
        ],
        "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.00024000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000024",
                "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-large",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "units": [
          {
            "amount": "0.00024000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000024",
            "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-large",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "5acac7267f2fd85b826e5f710972d91eeabbd77f6141d3006a7ec307035beda6",
    "input_html_sha256": "68222b305018db008abb91db39580394477323a67d7e2b1240eb65d268b513a9",
    "private_audit_sha256": "81119dcdd344f9b0218c929bfa1423324f410f84c76912ff119ce6107fc8c39c",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/fi/voyageai-voyage-4-large/",
    "description": "voyage-4-large on Voyage AI:n mixture-of-experts-tekstiupotusmalli yleiskäyttöiseen ja monikieliseen tiedonhakuun. Sen vektorit jakavat Voyage 4 -perheen avaruuden, joten Largen korpusupotuksia voidaan hakea perheen muiden mallien yhteensopivilla kyselyupotuksilla.",
    "locale": "fi",
    "md_url": "https://ailoot.ai/models/fi/voyageai-voyage-4-large/index.md",
    "title": "VoyageAI by MongoDB: voyage-4-large — Ailoot",
    "url": "https://ailoot.ai/models/fi/voyageai-voyage-4-large/"
  },
  "rawModel": {
    "about": "voyage-4-large on Voyage AI:n Voyage 4 -perheen johtava tekstiupotusmalli. Se esittää lähdetekstijaksot ja kyselyt numeerisina vektoreina yleistä ja monikielistä tiedonhakua varten. Sen kaksi erityispiirrettä ovat mixture-of-experts-mallirakenne ja voyage-4-large-, voyage-4-, voyage-4-lite- ja voyage-4-nano-mallien yhteinen upotusavaruus.\n\n### Yhteinen avaruus: erilliset valinnat korpukselle ja kyselylle\n\nValmistaja kuvaa epäsymmetristä hakua: asiakirjat voidaan upottaa voyage-4-largella ja kyselyvektorit valmistella toisella Voyage 4 -perheen mallilla. Esimerkiksi Largella esitetystä korpuksesta voi hakea voyage-4-kyselyillä. Näin haun kahdella puolella voi olla eri mallivalinnat samalla, kun ne pysyvät dokumentoidussa yhteensopivassa avaruudessa.\n\nKäytännön kokoelma voi siis valmistella vakaat asiakirjajaksot Largella ja valita kyselypuolen mallin itsenäisesti. Asiakirjat upotetaan korpuksen luonnin tai päivityksen yhteydessä, kun taas kyselyt vektoroidaan käyttäjien hakiessa. Perheen julkistus kuvaa kyselymallin vaihtamista yhteensopivan perheen sisällä ilman asiakirjakorpuksen uudelleenvektorointia pelkästään tämän muutoksen takia. Pidä vertailtavat vektorit samanulotteisina ja esitysmuodoissa, joita hakujärjestelmä osaa tulkita yhdessä.\n\n### Mixture-of-experts-rakenne upotuksissa\n\nTiheä eteenpäin syöttävä kerros käsittelee jokaisen tokenin koko parametrijoukollaan. Mallille voyage-4-large kuvattu MoE-lähestymistapa käyttää reititintä ja asiantuntijoiden eteenpäin syöttäviä verkkoja. Se valitsee kutakin tokenia käsittelevät asiantuntijat. Näin mallin kokonaiskapasiteetti erotetaan tietylle tokenille aktiivisista parametreista. Voyage ilmoittaa mallin MoE-rakenteen aktivointisuhteeksi 1/10 ja käyttää top-k-reititystä.\n\nValmistajan tekninen selitys kuvaa myös kahta kehitysvalintaa. Asiantuntijan kapasiteetti vaikuttaa siihen, ohittavatko ylimääräiset tokenit asiantuntijakerroksen residuaalipolkua pitkin. Tiimi valitsi suurimman toteutuskelpoisen kapasiteettikertoimen välttääkseen hakulaadun heikkenemisen. Viimeisessä koulutusvaiheessa reitittimen parametrit jäädytetään ennen mallien yhdistämistä, jotta lähdemallien interpolointi ei muuta opittua asiantuntijavalinnan reititystä. Nämä ovat mallin valmistelun ominaisuuksia. Ne ovat erillisiä syötteen valmistelussa käytettävistä tekstipituus- ja katkaisuasetuksista.\n\n### Ulottuvuudet ja tuloksen esitysmuoto\n\nVirallinen mallitaulukko määrittää 32,000 tokenin konteksti-ikkunan sekä valittavat 256-, 512-, 1024- ja 2048-ulotteiset upotukset, joista 1024 on oletus. Perhe käyttää sisäkkäisten esityskokojen Matryoshka-oppimista ja tukee kvantisointivalintoja: 32-bittistä liukulukua, etumerkillisiä tai etumerkittömiä 8-bittisiä kokonaislukuja sekä pakattua binaaritulosta.\n\nBinaarituloksessa palautetun tavuluettelon pituus on kahdeksasosa valitusta ulottuvuusmäärästä, koska kukin tavu sisältää kahdeksan upotusbittiä. Säilytä ulottuvuus- ja tietotyyppivalinnat indeksin mukana ja käytä esitysmuotoa tukevaa vertailumenetelmää. Pienempi tai pakattu vektori muuttaa haussa käytettävää esitystä. Arvioi todellisiin kysymyksiin palautetut olennaiset tekstikohdat ennen valintaa kokoelmalle.\n\n### Valmistele asiakirja- ja kyselysyötteet\n\nVoyage suosittelee document-roolia korpuksen tekstijaksoille ja query-roolia hakusanoitukselle. Sen rooliasetus lisää vastaavan hakuohjeen ennen upottamista. Säilytä tekstikohdan hyödyllinen otsikko, ehdot ja sijainti lähteessä. Tallenna palautettu vektori alkuperäisen tekstin ja vakaan tunnisteen kanssa.\n\nTeknisessä tietokokoelmassa virhetilaa koskevan kysymyksen tulee johtaa kohtaan, joka kuvaa kyseisen tilan ja sen olennaiset ehdot. Säilytä eri kieliä sisältävässä asiakirjakokoelmassa lähdekieli ja arvioi kysymykset ja termit, joilla käyttäjät hakevat. Julkaisu kattaa hakuaineistona muun muassa tekniset asiakirjat, keskustelut, pitkät asiakirjat, koodin, oikeuden, rahoituksen ja verkkotekstin. Upotus löytää ehdokasaineiston; myöhempi uudelleenjärjestäjä tai vastausvaihe käyttää alkuperäistä tekstiä.\n\n### Kontekstin, erien ja katkaisun rajat\n\nValmistajan nykyinen ohje sallii voyage-4-large-pyynnössä enintään 1,000 merkkijonoa ja yhteensä 120,000 syötetokenia. Tämä eroaa voyage-4:lle luetellusta erärajasta, vaikka molemmilla on 32,000 tokenin tekstikohtainen ikkuna. Oletusarvoinen katkaisu lyhentää liian pitkän syötteen sopivaksi. Kun katkaisu poistetaan käytöstä, liian pitkä teksti palauttaa virheen.\n\nValitse vastauksen sisältävien tekstijaksojen rajat harkitusti, jotta pitkästä lähteestä ei katoa olennaista täsmennystä katkaistussa lopussa. Säilytä yhteys lähteeseen hakutuloksia palautettaessa ja tarkista varsinainen ehdokasteksti. Älä pidä vektorien läheisyyttä niiden sisällön varmistuksena. Yhteisen avaruuden yhteensopivuus koskee dokumentoitua Voyage 4 -tekstiperhettä. Kontekstiin sidottu lohkokäsittely, kuva- ja videoupotukset sekä myöhemmät malliversiot ovat omia mallikohtaisia työnkulkujaan.",
    "alias_of": null,
    "aliases": [],
    "author": "VoyageAI by MongoDB",
    "available": null,
    "canonical_model": "voyageai/voyage-4-large",
    "capabilities": {
      "context_length": 32000,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "embeddings"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00024000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000024",
            "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": "Konfiguraation täydet hintatiedot lisätiedoissa."
      }
    ],
    "ctx": 32000,
    "entity_type": "model",
    "formats": [
      "embeddings"
    ],
    "id": "voyageai/voyage-4-large",
    "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": "Virheelliset pakolliset kentät, aineiston esitysmuoto tai parametrin arvo",
                "http_status": 400,
                "recovery": "Korjaa ilmoitetut kentät ennen uutta luontipyyntöä.",
                "type": "invalid_request_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "job_read": null,
              "mode": "synchronous_json",
              "unknown": "Uutta upotustehtävien päätepistettä ei oteta käyttöön."
            },
            "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": "Säilytä jokainen vektori indekseineen. Vektorien määrän on vastattava syötteiden määrää; ulottuvuuksien on oltava yhdenmukaiset.",
              "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-large"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "budget": {
                  "maximum": 32000,
                  "text_unit": "UTF8-tavut",
                  "token_unit": "Token-taulukon alkiot"
                },
                "conditions": "Ei-tyhjä, yhdenmukaisista alkioista koostuva erä. Tokenien ID:t ovat ei-negatiivisia kokonaislukuja.",
                "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": "Lähde sallii tämän JSON-metatietokentän; tarkka alkuperäisen palvelun semantiikka on mallikohtainen.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "user",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "Lähde sallii tämän JSON-metatietokentän; tarkka alkuperäisen palvelun semantiikka on mallikohtainen.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "session_id",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "Lähde sallii tämän JSON-metatietokentän; tarkka alkuperäisen palvelun semantiikka on mallikohtainen.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "source_interface",
                "conditions": "provider.options hylätty",
                "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": [
            "Säilytä jokaisen vektorin indeksi ja ulottuvuus.",
            "Mallin nimen multimodaalisuus ei tarkoita, että tämä nimenomainen reitti hyväksyisi kuvaolioita."
          ],
          "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": "Tokenien perushinnat",
            "units": [
              {
                "amount": "0.00024000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000024",
                "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-large\", \"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-large',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.24,
        "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": "Nopea tila",
            "value": "Vakiohinta",
            "when": "Kun nopea tila on valittu"
          },
          {
            "label": "Flex-tila",
            "value": "Vakiohinta",
            "when": "Kun flex-tila on valittu"
          },
          {
            "label": "Päättelyn enimmäisteho",
            "value": "Vakiohinta",
            "when": "Kun päättelyn enimmäistehoon sovelletaan default-oletussäätöä"
          }
        ],
        "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.00024000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000024",
                "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-large",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "units": [
          {
            "amount": "0.00024000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000024",
            "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-large",
        "request_model_id": "voyageai/voyage-4-large",
        "route_label": "Ultra"
      }
    ],
    "name": "VoyageAI by MongoDB: voyage-4-large",
    "price": {
      "in": 0.24,
      "in_label": null,
      "out": 0,
      "out_label": null,
      "scope_label": "Token rates",
      "sort_in": 0.24,
      "sort_out": 0,
      "varies": false
    },
    "pricing_profiles": [
      {
        "dimensions": {
          "regime": "base"
        },
        "label": "Эмбеддинги · Base token rates",
        "units": [
          {
            "amount": "0.00024000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000024",
            "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-large",
    "short": "voyage-4-large on Voyage AI:n mixture-of-experts-tekstiupotusmalli yleiskäyttöiseen ja monikieliseen tiedonhakuun. Sen vektorit jakavat Voyage 4 -perheen avaruuden, joten Largen korpusupotuksia voidaan hakea perheen muiden mallien yhteensopivilla kyselyupotuksilla."
  },
  "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-large on Voyage AI:n mixture-of-experts-tekstiupotusmalli yleiskäyttöiseen ja monikieliseen tiedonhakuun. Sen vektorit jakavat Voyage 4 -perheen avaruuden, joten Largen korpusupotuksia voidaan hakea perheen muiden mallien yhteensopivilla kyselyupotuksilla.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "6cc0cd3b4bc2997e6fd8501e5f71d61540ec70b082653e32641977ca5e4880c3",
    "renderer_sha256": "303a59603e2bc29ba8fda690e95fd32cec68de223d92e26054a88babff801dd7"
  },
  "sourceRevision": "22aae33014bebb9da67e8972014ed8d1b08640c33a89865bb207d80856f903a1"
}
