{
  "aboutHtml": "<p>Voyage Context 3 tuottaa kontekstia huomioivia tekstilohkojen vektoriesityksiä asiakirjahakuun. Jokainen lohko saa oman vektorinsa, ja malli huomioi myös samasta asiakirjasta toimitetut muut lohkot. Näin hakujärjestelmä saa paikallisen katkelman esityksen yhdessä laajemman asiakirjakontekstin kanssa, kuten muualla lähteessä esitellyn toimijan tai aiheen.</p><p>Valmistele jokainen asiakirja luettavien tekstilohkojen järjestetyksi sarjaksi. Pidä saman asiakirjan lohkot yhdessä ja säilytä niiden alkuperäinen järjestys. Valmistajan kontekstia huomioivassa työnkulussa kukin sisempi ryhmä sisältää yhden lähteen lohkot ja erilliset ryhmät edustavat erillisiä lähteitä. Ryhmittely on osa syötteen merkitystä: se kertoo mallille, mikä ympäröivä teksti kuuluu esitettävään asiakirjaan.</p><p>Hyödyllinen esimerkki on raportti, jonka alussa nimetään yritys ja jonka myöhempi kappale selittää sen kasvua. Yrityksen kasvua koskeva haku tarvitsee sekä kyseisen kappaleen että asiakirjan identiteetin. Säilytä alkuperäinen lohkoteksti ja sen pääasiakirjan metatiedot tulosvektorin yhteydessä, jotta tulos voi näyttää katkelman ja linkittää koko lähteeseen.</p><p>Valmistajan viitedokumentaatio sallii enintään 120000 tokenia koko pyynnössä sekä enintään 1000 syöteryhmää ja yhteensä 16000 tekstilohkoa. Malliopas ilmoittaa erikseen 32000 tokenin ikkunan lohkoa kohden. Pidä nämä rajaukset erillään aineistoa valmistellessasi: yksittäisen lohkon raja ja koko pyynnön raja kuvaavat eri syötekokoja. Tarkista kokonaismäärä lähteen jakamisen jälkeen sen sijaan, että olettaisit jokaisen lohkon voivan täyttää enimmäiskokonsa samassa pyynnössä.</p><p>Merkitse asiakirjahaussa ryhmitellyt katkelmat asiakirjasyötteeksi. Valmistele kukin hakukysymys omaksi kyselyryhmäkseen. Valmistaja suosittelee toimitettavia asiakirjalohkoja ilman päällekkäisyyttä, jolloin kontekstia huomioiva esitys voi välittää ympäröivää tietoa toistamatta tekstiä jokaisessa katkelmassa. Säilytä asiakirjaryhmän, lohkon sijainnin ja palautetun vektorin vastaavuus indeksiä tallennettaessa.</p><p>Voyage Context 3 tukee 2048, 1024, 512 ja 256 ulottuvuutta sekä liukuluku-, kahdeksan bitin kokonaisluku- ja binääritulosteita. Valitse indeksiesitys ja arvioi sitä samoilla lähdeasiakirjoilla ja kysymyksillä. Säilytä valittu ulottuvuus ja tietotyyppi indeksin yhteydessä, jotta kyselyesitys ja tallennetut vektorit pysyvät yhtenäisinä.</p><p>Käytä tuotettuja vektoreita katkelmahakuun, asiakirjojen löytämiseen tai raporttien, tutkimusjulkaisujen, sopimusten tai teknisten käsikirjojen kanssa työskentelevän avustajan hakuvaiheeseen. Tulos voi yksilöidä rajatun katkelman, ja sen lähdelinkki tarjoaa pääsyn muualla asiakirjassa oleviin määritelmiin ja täsmennyksiin. Säilytä asiakirjojen versiot ja käyttöoikeudet sovelluksen metatietoina vektorien rinnalla.</p><p>Testaa kysymyksiä, jotka edellyttävät sekä paikallista yksityiskohtaa että asiakirjatason kontekstia. Sisällytä samankaltaisia katkelmia eri lähteistä, vain alussa esiteltyjä nimettyjä toimijoita ja kysymyksiä, joiden perusteet ulottuvat useaan osioon. Tarkista, löytyykö odotettu lohko ja näyttääkö sovellus riittävästi ympäröivää tekstiä sen tulkitsemiseksi. Kun lähde muuttuu, tuota asianomaisen asiakirjaryhmän vektorit uudelleen suunnitelmallisesti, jotta sen kontekstia huomioivat lohkot vastaavat yhtä yhtenäistä versiota.</p>",
  "aboutText": "Voyage Context 3 tuottaa kontekstia huomioivia tekstilohkojen vektoriesityksiä asiakirjahakuun. Jokainen lohko saa oman vektorinsa, ja malli huomioi myös samasta asiakirjasta toimitetut muut lohkot. Näin hakujärjestelmä saa paikallisen katkelman esityksen yhdessä laajemman asiakirjakontekstin kanssa, kuten muualla lähteessä esitellyn toimijan tai aiheen.\n\nValmistele jokainen asiakirja luettavien tekstilohkojen järjestetyksi sarjaksi. Pidä saman asiakirjan lohkot yhdessä ja säilytä niiden alkuperäinen järjestys. Valmistajan kontekstia huomioivassa työnkulussa kukin sisempi ryhmä sisältää yhden lähteen lohkot ja erilliset ryhmät edustavat erillisiä lähteitä. Ryhmittely on osa syötteen merkitystä: se kertoo mallille, mikä ympäröivä teksti kuuluu esitettävään asiakirjaan.\n\nHyödyllinen esimerkki on raportti, jonka alussa nimetään yritys ja jonka myöhempi kappale selittää sen kasvua. Yrityksen kasvua koskeva haku tarvitsee sekä kyseisen kappaleen että asiakirjan identiteetin. Säilytä alkuperäinen lohkoteksti ja sen pääasiakirjan metatiedot tulosvektorin yhteydessä, jotta tulos voi näyttää katkelman ja linkittää koko lähteeseen.\n\nValmistajan viitedokumentaatio sallii enintään 120000 tokenia koko pyynnössä sekä enintään 1000 syöteryhmää ja yhteensä 16000 tekstilohkoa. Malliopas ilmoittaa erikseen 32000 tokenin ikkunan lohkoa kohden. Pidä nämä rajaukset erillään aineistoa valmistellessasi: yksittäisen lohkon raja ja koko pyynnön raja kuvaavat eri syötekokoja. Tarkista kokonaismäärä lähteen jakamisen jälkeen sen sijaan, että olettaisit jokaisen lohkon voivan täyttää enimmäiskokonsa samassa pyynnössä.\n\nMerkitse asiakirjahaussa ryhmitellyt katkelmat asiakirjasyötteeksi. Valmistele kukin hakukysymys omaksi kyselyryhmäkseen. Valmistaja suosittelee toimitettavia asiakirjalohkoja ilman päällekkäisyyttä, jolloin kontekstia huomioiva esitys voi välittää ympäröivää tietoa toistamatta tekstiä jokaisessa katkelmassa. Säilytä asiakirjaryhmän, lohkon sijainnin ja palautetun vektorin vastaavuus indeksiä tallennettaessa.\n\nVoyage Context 3 tukee 2048, 1024, 512 ja 256 ulottuvuutta sekä liukuluku-, kahdeksan bitin kokonaisluku- ja binääritulosteita. Valitse indeksiesitys ja arvioi sitä samoilla lähdeasiakirjoilla ja kysymyksillä. Säilytä valittu ulottuvuus ja tietotyyppi indeksin yhteydessä, jotta kyselyesitys ja tallennetut vektorit pysyvät yhtenäisinä.\n\nKäytä tuotettuja vektoreita katkelmahakuun, asiakirjojen löytämiseen tai raporttien, tutkimusjulkaisujen, sopimusten tai teknisten käsikirjojen kanssa työskentelevän avustajan hakuvaiheeseen. Tulos voi yksilöidä rajatun katkelman, ja sen lähdelinkki tarjoaa pääsyn muualla asiakirjassa oleviin määritelmiin ja täsmennyksiin. Säilytä asiakirjojen versiot ja käyttöoikeudet sovelluksen metatietoina vektorien rinnalla.\n\nTestaa kysymyksiä, jotka edellyttävät sekä paikallista yksityiskohtaa että asiakirjatason kontekstia. Sisällytä samankaltaisia katkelmia eri lähteistä, vain alussa esiteltyjä nimettyjä toimijoita ja kysymyksiä, joiden perusteet ulottuvat useaan osioon. Tarkista, löytyykö odotettu lohko ja näyttääkö sovellus riittävästi ympäröivää tekstiä sen tulkitsemiseksi. Kun lähde muuttuu, tuota asianomaisen asiakirjaryhmän vektorit uudelleen suunnitelmallisesti, jotta sen kontekstia huomioivat lohkot vastaavat yhtä yhtenäistä versiota.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "cd83cab646307c7e4138390ef3e7b159cfdcf69b254ba3d95e8c6b8c5903647d",
    "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\">Voyage AI: Voyage Context 3</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Sulje\">×</button></div><div class=\"idline\"><span>Voyage AI /</span><code>voyage-context-3</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|voyage-context-3\">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 Context 3 luo vektorin jokaiselle asiakirjan tekstilohkolle ja sisällyttää siihen kontekstia saman asiakirjan muista lohkoista. Se tukee pitkien asiakirjojen tarkkaa katkelmahakua valittavilla ulottuvuuksilla ja kvantisoiduilla vektoriesityksillä.</p><dl class=\"card-io\" data-card-io><div><dt>Hyväksytyt syötteet</dt><dd>Teksti</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 Context 3 tuottaa kontekstia huomioivia tekstilohkojen vektoriesityksiä asiakirjahakuun. Jokainen lohko saa oman vektorinsa, ja malli huomioi myös samasta asiakirjasta toimitetut muut lohkot. Näin hakujärjestelmä saa paikallisen katkelman esityksen yhdessä laajemman asiakirjakontekstin kanssa, kuten muualla lähteessä esitellyn toimijan tai aiheen.</p><p>Valmistele jokainen asiakirja luettavien tekstilohkojen järjestetyksi sarjaksi. Pidä saman asiakirjan lohkot yhdessä ja säilytä niiden alkuperäinen järjestys. Valmistajan kontekstia huomioivassa työnkulussa kukin sisempi ryhmä sisältää yhden lähteen lohkot ja erilliset ryhmät edustavat erillisiä lähteitä. Ryhmittely on osa syötteen merkitystä: se kertoo mallille, mikä ympäröivä teksti kuuluu esitettävään asiakirjaan.</p><p>Hyödyllinen esimerkki on raportti, jonka alussa nimetään yritys ja jonka myöhempi kappale selittää sen kasvua. Yrityksen kasvua koskeva haku tarvitsee sekä kyseisen kappaleen että asiakirjan identiteetin. Säilytä alkuperäinen lohkoteksti ja sen pääasiakirjan metatiedot tulosvektorin yhteydessä, jotta tulos voi näyttää katkelman ja linkittää koko lähteeseen.</p><p>Valmistajan viitedokumentaatio sallii enintään 120000 tokenia koko pyynnössä sekä enintään 1000 syöteryhmää ja yhteensä 16000 tekstilohkoa. Malliopas ilmoittaa erikseen 32000 tokenin ikkunan lohkoa kohden. Pidä nämä rajaukset erillään aineistoa valmistellessasi: yksittäisen lohkon raja ja koko pyynnön raja kuvaavat eri syötekokoja. Tarkista kokonaismäärä lähteen jakamisen jälkeen sen sijaan, että olettaisit jokaisen lohkon voivan täyttää enimmäiskokonsa samassa pyynnössä.</p><p>Merkitse asiakirjahaussa ryhmitellyt katkelmat asiakirjasyötteeksi. Valmistele kukin hakukysymys omaksi kyselyryhmäkseen. Valmistaja suosittelee toimitettavia asiakirjalohkoja ilman päällekkäisyyttä, jolloin kontekstia huomioiva esitys voi välittää ympäröivää tietoa toistamatta tekstiä jokaisessa katkelmassa. Säilytä asiakirjaryhmän, lohkon sijainnin ja palautetun vektorin vastaavuus indeksiä tallennettaessa.</p><p>Voyage Context 3 tukee 2048, 1024, 512 ja 256 ulottuvuutta sekä liukuluku-, kahdeksan bitin kokonaisluku- ja binääritulosteita. Valitse indeksiesitys ja arvioi sitä samoilla lähdeasiakirjoilla ja kysymyksillä. Säilytä valittu ulottuvuus ja tietotyyppi indeksin yhteydessä, jotta kyselyesitys ja tallennetut vektorit pysyvät yhtenäisinä.</p><p>Käytä tuotettuja vektoreita katkelmahakuun, asiakirjojen löytämiseen tai raporttien, tutkimusjulkaisujen, sopimusten tai teknisten käsikirjojen kanssa työskentelevän avustajan hakuvaiheeseen. Tulos voi yksilöidä rajatun katkelman, ja sen lähdelinkki tarjoaa pääsyn muualla asiakirjassa oleviin määritelmiin ja täsmennyksiin. Säilytä asiakirjojen versiot ja käyttöoikeudet sovelluksen metatietoina vektorien rinnalla.</p><p>Testaa kysymyksiä, jotka edellyttävät sekä paikallista yksityiskohtaa että asiakirjatason kontekstia. Sisällytä samankaltaisia katkelmia eri lähteistä, vain alussa esiteltyjä nimettyjä toimijoita ja kysymyksiä, joiden perusteet ulottuvat useaan osioon. Tarkista, löytyykö odotettu lohko ja näyttääkö sovellus riittävästi ympäröivää tekstiä sen tulkitsemiseksi. Kun lähde muuttuu, tuota asianomaisen asiakirjaryhmän vektorit uudelleen suunnitelmallisesti, jotta sen kontekstia huomioivat lohkot vastaavat yhtä yhtenäistä versiota.</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></dd></div><div><dt>Tulostyypit</dt><dd><code>embedding</code></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><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>voyage-context-3</div><div>Ehdot: Käytä täsmällistä Ailoot-mallin valitsinta.</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr><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 or array&lt;string&gt;</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>Ehdot: Teksti tai tekstiluettelo; säilytä yksi vektori jokaista palautettua data-alkiota ja sen indeksiä kohden.</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr></tbody></table></div><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>optional</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span></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</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>conditions</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>Lähetä teksti valitulle mallille; säilytä jokainen palautettu vektori ja sen indeksi.</td></tr></tbody></table></div><p>Elinkaari: <code>synchronous</code></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>Ei määritetty <span class=\"note-s\">Kun nopea tila on valittu</span></dd><dt>Flex-tila</dt><dd>Ei määritetty <span class=\"note-s\">Kun flex-tila on valittu</span></dd><dt>Päättelyn enimmäisteho</dt><dd>Ei määritetty <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.0004</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-2791-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2791-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · tallenna kaikki vektorit ja käyttötiedot</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-2791-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2791-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncat &gt; request.json &lt;&lt;&#39;JSON&#39;\n{\n  &quot;model&quot;: &quot;voyage-context-3&quot;,\n  &quot;input&quot;: &quot;The quick brown fox jumps over the lazy dog&quot;\n}\nJSON\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 embeddings.json\n# Keep every data item and its index, the full usage object and response headers.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Vastaanota ja tallenna tulokset</h3></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=voyage-context-3&amp;route=Ultra&amp;caller=voyage-context-3&amp;fmt=embeddings\"><code>voyage-context-3</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=voyage-context-3&amp;route=Ultra&amp;caller=voyage-context-3&amp;fmt=embeddings\"><code>voyage-context-3</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "voyage-context-3",
        "fmt": "embeddings",
        "http": "POST",
        "path": "/v1/embeddings",
        "request_model_id": "voyage-context-3",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|embeddings|/v1/embeddings|voyage-context-3",
      "ordinal": 0,
      "rawMethod": {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Save the complete JSON response, every vector with its index, all usage fields and request headers.",
            "lifecycle": {
              "content": [],
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "mode": "synchronous",
              "status": [],
              "unknown": "Säilytä alkuperäinen vastaus ja X-Client-Request-ID täsmäytystä varten. Epäselvä vastaus ei anna lupaa lähettää samaa luontipyyntöä uudelleen.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Tallenna koko JSON-vastaus, jokainen vektori ja sen indeksi, kaikki käyttötietokentät sekä pyynnön otsakkeet.",
              "every_actual_output": true,
              "family": "embedding",
              "fields": [
                {
                  "name": "object",
                  "type": "string"
                },
                {
                  "name": "model",
                  "type": "string"
                },
                {
                  "name": "data[].index",
                  "type": "integer"
                },
                {
                  "name": "data[].embedding",
                  "type": "array<number>"
                },
                {
                  "name": "usage",
                  "type": "object"
                },
                {
                  "name": "usage.prompt_tokens",
                  "type": "integer"
                },
                {
                  "name": "usage.total_tokens",
                  "type": "integer"
                }
              ]
            },
            "parameters": [
              {
                "conditions": "Käytä täsmällistä Ailoot-mallin valitsinta.",
                "default_known": false,
                "enum": [
                  "voyage-context-3"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Teksti tai tekstiluettelo; säilytä yksi vektori jokaista palautettua data-alkiota ja sen indeksiä kohden.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "input",
                "oneOf": [
                  {
                    "minLength": 1,
                    "type": "string"
                  },
                  {
                    "items": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  }
                ],
                "required": true,
                "type": "string or array<string>"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "input": {
                  "oneOf": [
                    {
                      "minLength": 1,
                      "type": "string"
                    },
                    {
                      "items": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  ]
                },
                "model": {
                  "enum": [
                    "voyage-context-3"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "The quick brown fox jumps over the lazy dog",
                "model": "voyage-context-3"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "conditions": [
              "Lähetä teksti valitulle mallille; säilytä jokainen palautettu vektori ja sen indeksi."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [],
            "required": [
              "model",
              "input"
            ]
          },
          "lifecycle": {
            "content": [],
            "create": {
              "http": "POST",
              "path": "/v1/embeddings"
            },
            "mode": "synchronous",
            "status": [],
            "unknown": "Keep the original response and X-Client-Request-ID for reconciliation. An ambiguous response is not permission to submit the same creation again.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/embeddings"
          },
          "output": {
            "all_results": "Save the complete JSON response, every vector with its index, all usage fields and request headers.",
            "every_actual_output": true,
            "family": "embedding",
            "fields": [
              {
                "name": "object",
                "type": "string"
              },
              {
                "name": "model",
                "type": "string"
              },
              {
                "name": "data[].index",
                "type": "integer"
              },
              {
                "name": "data[].embedding",
                "type": "array<number>"
              },
              {
                "name": "usage",
                "type": "object"
              },
              {
                "name": "usage.prompt_tokens",
                "type": "integer"
              },
              {
                "name": "usage.total_tokens",
                "type": "integer"
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Tokenien perushinnat",
            "units": [
              {
                "amount": "0.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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}\"\ncat > request.json <<'JSON'\n{\n  \"model\": \"voyage-context-3\",\n  \"input\": \"The quick brown fox jumps over the lazy dog\"\n}\nJSON\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 embeddings.json\n# Keep every data item and its index, the full usage object and response headers.\n",
            "label": "curl · save all vectors and usage",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "embeddings",
        "http": "POST",
        "in": 0.4,
        "input": [
          "text"
        ],
        "label": "Vektoriesitykset",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 0,
        "output": [
          "embedding"
        ],
        "path": "/v1/embeddings",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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": "voyage-context-3",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "units": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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": "voyage-context-3",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "0b2e4dc49053c756095ce998c60361a0299a1e7e3f3a37b76a6a3bc568fccdb1",
    "input_html_sha256": "cb137a9db8ffa75e325098bc77e97870aff52804e2f73b207108a8bf8a323f14",
    "private_audit_sha256": "ab7b1a58f459a2d50ddba9829ae55421d3ec7d0edb89a6448bea7029dfc23b1d",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/fi/voyage-context-3/",
    "description": "Voyage Context 3 luo vektorin jokaiselle asiakirjan tekstilohkolle ja sisällyttää siihen kontekstia saman asiakirjan muista lohkoista. Se tukee pitkien asiakirjojen tarkkaa katkelmahakua valittavilla ulottuvuuksilla ja kvantisoiduilla vektoriesityksillä.",
    "locale": "fi",
    "md_url": "https://ailoot.ai/models/fi/voyage-context-3/index.md",
    "title": "Voyage AI: Voyage Context 3 — Ailoot",
    "url": "https://ailoot.ai/models/fi/voyage-context-3/"
  },
  "rawModel": {
    "about": "Voyage Context 3 tuottaa kontekstia huomioivia tekstilohkojen vektoriesityksiä asiakirjahakuun. Jokainen lohko saa oman vektorinsa, ja malli huomioi myös samasta asiakirjasta toimitetut muut lohkot. Näin hakujärjestelmä saa paikallisen katkelman esityksen yhdessä laajemman asiakirjakontekstin kanssa, kuten muualla lähteessä esitellyn toimijan tai aiheen.\n\nValmistele jokainen asiakirja luettavien tekstilohkojen järjestetyksi sarjaksi. Pidä saman asiakirjan lohkot yhdessä ja säilytä niiden alkuperäinen järjestys. Valmistajan kontekstia huomioivassa työnkulussa kukin sisempi ryhmä sisältää yhden lähteen lohkot ja erilliset ryhmät edustavat erillisiä lähteitä. Ryhmittely on osa syötteen merkitystä: se kertoo mallille, mikä ympäröivä teksti kuuluu esitettävään asiakirjaan.\n\nHyödyllinen esimerkki on raportti, jonka alussa nimetään yritys ja jonka myöhempi kappale selittää sen kasvua. Yrityksen kasvua koskeva haku tarvitsee sekä kyseisen kappaleen että asiakirjan identiteetin. Säilytä alkuperäinen lohkoteksti ja sen pääasiakirjan metatiedot tulosvektorin yhteydessä, jotta tulos voi näyttää katkelman ja linkittää koko lähteeseen.\n\nValmistajan viitedokumentaatio sallii enintään 120000 tokenia koko pyynnössä sekä enintään 1000 syöteryhmää ja yhteensä 16000 tekstilohkoa. Malliopas ilmoittaa erikseen 32000 tokenin ikkunan lohkoa kohden. Pidä nämä rajaukset erillään aineistoa valmistellessasi: yksittäisen lohkon raja ja koko pyynnön raja kuvaavat eri syötekokoja. Tarkista kokonaismäärä lähteen jakamisen jälkeen sen sijaan, että olettaisit jokaisen lohkon voivan täyttää enimmäiskokonsa samassa pyynnössä.\n\nMerkitse asiakirjahaussa ryhmitellyt katkelmat asiakirjasyötteeksi. Valmistele kukin hakukysymys omaksi kyselyryhmäkseen. Valmistaja suosittelee toimitettavia asiakirjalohkoja ilman päällekkäisyyttä, jolloin kontekstia huomioiva esitys voi välittää ympäröivää tietoa toistamatta tekstiä jokaisessa katkelmassa. Säilytä asiakirjaryhmän, lohkon sijainnin ja palautetun vektorin vastaavuus indeksiä tallennettaessa.\n\nVoyage Context 3 tukee 2048, 1024, 512 ja 256 ulottuvuutta sekä liukuluku-, kahdeksan bitin kokonaisluku- ja binääritulosteita. Valitse indeksiesitys ja arvioi sitä samoilla lähdeasiakirjoilla ja kysymyksillä. Säilytä valittu ulottuvuus ja tietotyyppi indeksin yhteydessä, jotta kyselyesitys ja tallennetut vektorit pysyvät yhtenäisinä.\n\nKäytä tuotettuja vektoreita katkelmahakuun, asiakirjojen löytämiseen tai raporttien, tutkimusjulkaisujen, sopimusten tai teknisten käsikirjojen kanssa työskentelevän avustajan hakuvaiheeseen. Tulos voi yksilöidä rajatun katkelman, ja sen lähdelinkki tarjoaa pääsyn muualla asiakirjassa oleviin määritelmiin ja täsmennyksiin. Säilytä asiakirjojen versiot ja käyttöoikeudet sovelluksen metatietoina vektorien rinnalla.\n\nTestaa kysymyksiä, jotka edellyttävät sekä paikallista yksityiskohtaa että asiakirjatason kontekstia. Sisällytä samankaltaisia katkelmia eri lähteistä, vain alussa esiteltyjä nimettyjä toimijoita ja kysymyksiä, joiden perusteet ulottuvat useaan osioon. Tarkista, löytyykö odotettu lohko ja näyttääkö sovellus riittävästi ympäröivää tekstiä sen tulkitsemiseksi. Kun lähde muuttuu, tuota asianomaisen asiakirjaryhmän vektorit uudelleen suunnitelmallisesti, jotta sen kontekstia huomioivat lohkot vastaavat yhtä yhtenäistä versiota.",
    "about_sha256": "cbe672f81d248e79c90f9384b4d5a3ff311043f96a3b07b7eb8b4ede52d2cd43",
    "alias_of": null,
    "aliases": [],
    "author": "Voyage AI",
    "capabilities": {
      "context_length": 120000,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "embeddings"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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": null,
    "display_name": "Voyage AI: Voyage Context 3",
    "formats": [
      "embeddings"
    ],
    "id": "voyage-context-3",
    "input": [
      "text"
    ],
    "kind": "embedding",
    "locale": "en",
    "max_out": null,
    "methods": [
      {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Save the complete JSON response, every vector with its index, all usage fields and request headers.",
            "lifecycle": {
              "content": [],
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "mode": "synchronous",
              "status": [],
              "unknown": "Säilytä alkuperäinen vastaus ja X-Client-Request-ID täsmäytystä varten. Epäselvä vastaus ei anna lupaa lähettää samaa luontipyyntöä uudelleen.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Tallenna koko JSON-vastaus, jokainen vektori ja sen indeksi, kaikki käyttötietokentät sekä pyynnön otsakkeet.",
              "every_actual_output": true,
              "family": "embedding",
              "fields": [
                {
                  "name": "object",
                  "type": "string"
                },
                {
                  "name": "model",
                  "type": "string"
                },
                {
                  "name": "data[].index",
                  "type": "integer"
                },
                {
                  "name": "data[].embedding",
                  "type": "array<number>"
                },
                {
                  "name": "usage",
                  "type": "object"
                },
                {
                  "name": "usage.prompt_tokens",
                  "type": "integer"
                },
                {
                  "name": "usage.total_tokens",
                  "type": "integer"
                }
              ]
            },
            "parameters": [
              {
                "conditions": "Käytä täsmällistä Ailoot-mallin valitsinta.",
                "default_known": false,
                "enum": [
                  "voyage-context-3"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Teksti tai tekstiluettelo; säilytä yksi vektori jokaista palautettua data-alkiota ja sen indeksiä kohden.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "input",
                "oneOf": [
                  {
                    "minLength": 1,
                    "type": "string"
                  },
                  {
                    "items": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  }
                ],
                "required": true,
                "type": "string or array<string>"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "input": {
                  "oneOf": [
                    {
                      "minLength": 1,
                      "type": "string"
                    },
                    {
                      "items": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  ]
                },
                "model": {
                  "enum": [
                    "voyage-context-3"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "The quick brown fox jumps over the lazy dog",
                "model": "voyage-context-3"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "conditions": [
              "Lähetä teksti valitulle mallille; säilytä jokainen palautettu vektori ja sen indeksi."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [],
            "required": [
              "model",
              "input"
            ]
          },
          "lifecycle": {
            "content": [],
            "create": {
              "http": "POST",
              "path": "/v1/embeddings"
            },
            "mode": "synchronous",
            "status": [],
            "unknown": "Keep the original response and X-Client-Request-ID for reconciliation. An ambiguous response is not permission to submit the same creation again.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/embeddings"
          },
          "output": {
            "all_results": "Save the complete JSON response, every vector with its index, all usage fields and request headers.",
            "every_actual_output": true,
            "family": "embedding",
            "fields": [
              {
                "name": "object",
                "type": "string"
              },
              {
                "name": "model",
                "type": "string"
              },
              {
                "name": "data[].index",
                "type": "integer"
              },
              {
                "name": "data[].embedding",
                "type": "array<number>"
              },
              {
                "name": "usage",
                "type": "object"
              },
              {
                "name": "usage.prompt_tokens",
                "type": "integer"
              },
              {
                "name": "usage.total_tokens",
                "type": "integer"
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Tokenien perushinnat",
            "units": [
              {
                "amount": "0.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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}\"\ncat > request.json <<'JSON'\n{\n  \"model\": \"voyage-context-3\",\n  \"input\": \"The quick brown fox jumps over the lazy dog\"\n}\nJSON\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 embeddings.json\n# Keep every data item and its index, the full usage object and response headers.\n",
            "label": "curl · save all vectors and usage",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "embeddings",
        "http": "POST",
        "in": 0.4,
        "input": [
          "text"
        ],
        "label": "Vektoriesitykset",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 0,
        "output": [
          "embedding"
        ],
        "path": "/v1/embeddings",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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": "voyage-context-3",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "units": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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": "voyage-context-3",
        "request_model_id": "voyage-context-3",
        "route_label": "Ultra"
      }
    ],
    "name": "Voyage AI: Voyage Context 3",
    "price": {
      "in": 0.4,
      "in_label": null,
      "out": 0,
      "out_label": null,
      "scope_label": "Token rates",
      "sort_in": 0.4,
      "sort_out": 0,
      "varies": false
    },
    "short": "Voyage Context 3 luo vektorin jokaiselle asiakirjan tekstilohkolle ja sisällyttää siihen kontekstia saman asiakirjan muista lohkoista. Se tukee pitkien asiakirjojen tarkkaa katkelmahakua valittavilla ulottuvuuksilla ja kvantisoiduilla vektoriesityksillä.",
    "short_sha256": "ecf5347d318cafaa85e440415592285b9b3d6c51afeb2467a37418c7b94e3dd3"
  },
  "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 Context 3 luo vektorin jokaiselle asiakirjan tekstilohkolle ja sisällyttää siihen kontekstia saman asiakirjan muista lohkoista. Se tukee pitkien asiakirjojen tarkkaa katkelmahakua valittavilla ulottuvuuksilla ja kvantisoiduilla vektoriesityksillä.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "b13517d38119f13a3721ce03e3d559d640dfc7e1a39623d9e5e30214f9164a84",
    "renderer_sha256": "303a59603e2bc29ba8fda690e95fd32cec68de223d92e26054a88babff801dd7"
  },
  "sourceRevision": "a22fce0bc03be991332c5543fdd8b5b1fb25e834345007fd3b79323012c2a0ee"
}
