{
  "aboutHtml": "<p>Gemini Embedding 2 Preview on Googlen nimetty esiversio sen alun perin multimodaaliseksi suunnitellusta upotusmalliperheestä. Se kuvaa tekstin, kuvat, videon, äänen ja PDF-tiedostot yhteiseen numeeriseen avaruuteen, jossa semanttinen tarkoitus esitetään yli 100 kielellä. Tuloksena on upotuksia eli vektoreita, joilla vertaillaan ja haetaan toisiinsa liittyvää aineistoa. Tämä esiversio on erillinen vakaasta Gemini Embedding 2 -versiosta, eikä sen nimi tarkoita vaihdettavia mallipainoja tai samaa vektoriavaruutta.</p><p>Alkuperäinen julkistus kuvaa jatkosovelluksiksi modaliteettien välisen haun, luokittelun, klusteroinnin, sentimenttianalyysin ja haulla täydennetyn generoinnin. Tekstikysely voi löytää siihen liittyvän visuaalisen kohteen, ja myös kuvaa tai leikettä voi käyttää haun lähtökohtana. Sovellus tallentaa esitykset, vertailee niitä ja palauttaa vastaavat tietueet; erillinen kielimalli voi käyttää haettua lähdeaineistoa vastauksen laatimiseen. Upotus itsessään ei sisällä luonnollisen kielen selitystä tai puheen tekstivastinetta.</p><p>Mallin oma sivu dokumentoi 8 192 tokenin syöterajan ja 128–3 072 ulottuvuuden tulosteet. Suositellut koot ovat 768, 1 536 ja 3 072. Esiversion julkistus ilmoittaa oletukseksi 3 072 ja kuvaa Matryoshka Representation Learning -menetelmän, joka säilyttää hyödyllistä tietoa esityksen lyhyemmissä alkuosissa. Käytä yhtä valittua ulottuvuusmäärää vertailtaville vektoreille ja säilytä tieto malliversiosta kokoelman yhteydessä sen sijaan, että yhdistäisit esityksiä vain niiden yhtäläisen pituuden perusteella.</p><p>Esiversion julkistus dokumentoi enintään kuusi PNG- tai JPEG-kuvaa pyyntöä kohden, enintään 120 sekuntia MP4- tai MOV-videota sekä enintään kuusisivuisia PDF-asiakirjoja. Se dokumentoi myös äänen suoran upotuksen ilman välivaiheena tehtävää tekstiksi litterointia. Nämä määritykset tulevat esiversion omasta julkistuksesta, eivät myöhemmästä vakaan version oppaasta. Julkistus ei vahvista kaikkia nykyisiä äänen kestoon, koodekkeihin tai videokehysten poimintaan liittyviä rajoja juuri tälle esiversioprofiilille.</p><p>Lomitettu multimodaalinen syöte antaa esityksen kuvata medioiden välisiä suhteita, kuten kuvaa ja sen kuvatekstiä. Anna tuoteluetteloa varten valokuva ja hyväksytty kuvaus yhdessä, kun ne kuvaavat yhtä haettavaa kohdetta. Jaa asiakirjakokoelman lähde rajattuihin tekstijaksoihin tai sivuihin ja säilytä sen otsikko ja sijainti. Valitse mediakirjastoon leike, joka vastaa käyttäjien etsittävää tapahtumaa, ja säilytä sen alkuperäinen aikaväli tallennetun tietueen yhteydessä.</p><p>Hyödyllinen hakutehtävä tekee tarkoitetun suhteen selväksi. Selitystä hakeva kysymys, visuaalisesti samankaltaisten kohteiden haku ja aiheen mukainen klusterointi ovat eri tehtäviä, vaikka ne käyttäisivät samaa lähdekokoelmaa. Valmistele sisältö johdonmukaisesti, kirjaa versio ja ulottuvuusmäärä sekä säilytä jokaisen vektorin yhteys lähteeseensä. Samankaltaisuus tuottaa ehdokkaita sovelluksen tarkasteltavaksi; se ei todista, että kaksi tietuetta esittää saman tosiasian tai että haettu lähde vastaa kysymykseen täydellisesti.</p><p>Käytännön mediahaussa esitä valittu kuva tai video-ote vektorina ja vertaa sitä halutun sisällön kuvaukseen. Näytä vastaava lähde kuvatekstin tai aikavälin kanssa, jotta käyttäjä voi tarkastella sitä. Hae tietoavustajalle olennainen sivu tai tekstijakso ennen kirjallisen vastauksen generointia. Preview-mallin tehtävä on näitä valintavaiheita tukeva multimodaalinen numeerinen esitys, kun taas tallennus, järjestyssäännöt ja lopullinen vastaus kuuluvat ympäröivään työnkulkuun.</p>",
  "aboutText": "Gemini Embedding 2 Preview on Googlen nimetty esiversio sen alun perin multimodaaliseksi suunnitellusta upotusmalliperheestä. Se kuvaa tekstin, kuvat, videon, äänen ja PDF-tiedostot yhteiseen numeeriseen avaruuteen, jossa semanttinen tarkoitus esitetään yli 100 kielellä. Tuloksena on upotuksia eli vektoreita, joilla vertaillaan ja haetaan toisiinsa liittyvää aineistoa. Tämä esiversio on erillinen vakaasta Gemini Embedding 2 -versiosta, eikä sen nimi tarkoita vaihdettavia mallipainoja tai samaa vektoriavaruutta.\n\nAlkuperäinen julkistus kuvaa jatkosovelluksiksi modaliteettien välisen haun, luokittelun, klusteroinnin, sentimenttianalyysin ja haulla täydennetyn generoinnin. Tekstikysely voi löytää siihen liittyvän visuaalisen kohteen, ja myös kuvaa tai leikettä voi käyttää haun lähtökohtana. Sovellus tallentaa esitykset, vertailee niitä ja palauttaa vastaavat tietueet; erillinen kielimalli voi käyttää haettua lähdeaineistoa vastauksen laatimiseen. Upotus itsessään ei sisällä luonnollisen kielen selitystä tai puheen tekstivastinetta.\n\nMallin oma sivu dokumentoi 8 192 tokenin syöterajan ja 128–3 072 ulottuvuuden tulosteet. Suositellut koot ovat 768, 1 536 ja 3 072. Esiversion julkistus ilmoittaa oletukseksi 3 072 ja kuvaa Matryoshka Representation Learning -menetelmän, joka säilyttää hyödyllistä tietoa esityksen lyhyemmissä alkuosissa. Käytä yhtä valittua ulottuvuusmäärää vertailtaville vektoreille ja säilytä tieto malliversiosta kokoelman yhteydessä sen sijaan, että yhdistäisit esityksiä vain niiden yhtäläisen pituuden perusteella.\n\nEsiversion julkistus dokumentoi enintään kuusi PNG- tai JPEG-kuvaa pyyntöä kohden, enintään 120 sekuntia MP4- tai MOV-videota sekä enintään kuusisivuisia PDF-asiakirjoja. Se dokumentoi myös äänen suoran upotuksen ilman välivaiheena tehtävää tekstiksi litterointia. Nämä määritykset tulevat esiversion omasta julkistuksesta, eivät myöhemmästä vakaan version oppaasta. Julkistus ei vahvista kaikkia nykyisiä äänen kestoon, koodekkeihin tai videokehysten poimintaan liittyviä rajoja juuri tälle esiversioprofiilille.\n\nLomitettu multimodaalinen syöte antaa esityksen kuvata medioiden välisiä suhteita, kuten kuvaa ja sen kuvatekstiä. Anna tuoteluetteloa varten valokuva ja hyväksytty kuvaus yhdessä, kun ne kuvaavat yhtä haettavaa kohdetta. Jaa asiakirjakokoelman lähde rajattuihin tekstijaksoihin tai sivuihin ja säilytä sen otsikko ja sijainti. Valitse mediakirjastoon leike, joka vastaa käyttäjien etsittävää tapahtumaa, ja säilytä sen alkuperäinen aikaväli tallennetun tietueen yhteydessä.\n\nHyödyllinen hakutehtävä tekee tarkoitetun suhteen selväksi. Selitystä hakeva kysymys, visuaalisesti samankaltaisten kohteiden haku ja aiheen mukainen klusterointi ovat eri tehtäviä, vaikka ne käyttäisivät samaa lähdekokoelmaa. Valmistele sisältö johdonmukaisesti, kirjaa versio ja ulottuvuusmäärä sekä säilytä jokaisen vektorin yhteys lähteeseensä. Samankaltaisuus tuottaa ehdokkaita sovelluksen tarkasteltavaksi; se ei todista, että kaksi tietuetta esittää saman tosiasian tai että haettu lähde vastaa kysymykseen täydellisesti.\n\nKäytännön mediahaussa esitä valittu kuva tai video-ote vektorina ja vertaa sitä halutun sisällön kuvaukseen. Näytä vastaava lähde kuvatekstin tai aikavälin kanssa, jotta käyttäjä voi tarkastella sitä. Hae tietoavustajalle olennainen sivu tai tekstijakso ennen kirjallisen vastauksen generointia. Preview-mallin tehtävä on näitä valintavaiheita tukeva multimodaalinen numeerinen esitys, kun taas tallennus, järjestyssäännöt ja lopullinen vastaus kuuluvat ympäröivään työnkulkuun.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "41bd1cc543fcf266233847eed0a9b3a73ae688f86923de9d9c062c308f2c657d",
    "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\">G</span><h2 id=\"sheet-title\">Google: Gemini Embedding 2 Preview</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Sulje\">×</button></div><div class=\"idline\"><span>Google /</span><code>google/gemini-embedding-2-preview</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|google%2Fgemini-embedding-2-preview\">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\">Gemini Embedding 2 Preview muuntaa tekstiä, kuvia, ääntä, videota ja PDF-tiedostoja numeerisiksi vektoreiksi samaan multimodaaliseen avaruuteen. Sen erikseen dokumentoitu esiversioprofiili tukee hakua ja vertailua eri modaliteettien välillä, 8 192 tokenin syötettä ja joustavia vektoriulottuvuuksia.</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>Gemini Embedding 2 Preview on Googlen nimetty esiversio sen alun perin multimodaaliseksi suunnitellusta upotusmalliperheestä. Se kuvaa tekstin, kuvat, videon, äänen ja PDF-tiedostot yhteiseen numeeriseen avaruuteen, jossa semanttinen tarkoitus esitetään yli 100 kielellä. Tuloksena on upotuksia eli vektoreita, joilla vertaillaan ja haetaan toisiinsa liittyvää aineistoa. Tämä esiversio on erillinen vakaasta Gemini Embedding 2 -versiosta, eikä sen nimi tarkoita vaihdettavia mallipainoja tai samaa vektoriavaruutta.</p><p>Alkuperäinen julkistus kuvaa jatkosovelluksiksi modaliteettien välisen haun, luokittelun, klusteroinnin, sentimenttianalyysin ja haulla täydennetyn generoinnin. Tekstikysely voi löytää siihen liittyvän visuaalisen kohteen, ja myös kuvaa tai leikettä voi käyttää haun lähtökohtana. Sovellus tallentaa esitykset, vertailee niitä ja palauttaa vastaavat tietueet; erillinen kielimalli voi käyttää haettua lähdeaineistoa vastauksen laatimiseen. Upotus itsessään ei sisällä luonnollisen kielen selitystä tai puheen tekstivastinetta.</p><p>Mallin oma sivu dokumentoi 8 192 tokenin syöterajan ja 128–3 072 ulottuvuuden tulosteet. Suositellut koot ovat 768, 1 536 ja 3 072. Esiversion julkistus ilmoittaa oletukseksi 3 072 ja kuvaa Matryoshka Representation Learning -menetelmän, joka säilyttää hyödyllistä tietoa esityksen lyhyemmissä alkuosissa. Käytä yhtä valittua ulottuvuusmäärää vertailtaville vektoreille ja säilytä tieto malliversiosta kokoelman yhteydessä sen sijaan, että yhdistäisit esityksiä vain niiden yhtäläisen pituuden perusteella.</p><p>Esiversion julkistus dokumentoi enintään kuusi PNG- tai JPEG-kuvaa pyyntöä kohden, enintään 120 sekuntia MP4- tai MOV-videota sekä enintään kuusisivuisia PDF-asiakirjoja. Se dokumentoi myös äänen suoran upotuksen ilman välivaiheena tehtävää tekstiksi litterointia. Nämä määritykset tulevat esiversion omasta julkistuksesta, eivät myöhemmästä vakaan version oppaasta. Julkistus ei vahvista kaikkia nykyisiä äänen kestoon, koodekkeihin tai videokehysten poimintaan liittyviä rajoja juuri tälle esiversioprofiilille.</p><p>Lomitettu multimodaalinen syöte antaa esityksen kuvata medioiden välisiä suhteita, kuten kuvaa ja sen kuvatekstiä. Anna tuoteluetteloa varten valokuva ja hyväksytty kuvaus yhdessä, kun ne kuvaavat yhtä haettavaa kohdetta. Jaa asiakirjakokoelman lähde rajattuihin tekstijaksoihin tai sivuihin ja säilytä sen otsikko ja sijainti. Valitse mediakirjastoon leike, joka vastaa käyttäjien etsittävää tapahtumaa, ja säilytä sen alkuperäinen aikaväli tallennetun tietueen yhteydessä.</p><p>Hyödyllinen hakutehtävä tekee tarkoitetun suhteen selväksi. Selitystä hakeva kysymys, visuaalisesti samankaltaisten kohteiden haku ja aiheen mukainen klusterointi ovat eri tehtäviä, vaikka ne käyttäisivät samaa lähdekokoelmaa. Valmistele sisältö johdonmukaisesti, kirjaa versio ja ulottuvuusmäärä sekä säilytä jokaisen vektorin yhteys lähteeseensä. Samankaltaisuus tuottaa ehdokkaita sovelluksen tarkasteltavaksi; se ei todista, että kaksi tietuetta esittää saman tosiasian tai että haettu lähde vastaa kysymykseen täydellisesti.</p><p>Käytännön mediahaussa esitä valittu kuva tai video-ote vektorina ja vertaa sitä halutun sisällön kuvaukseen. Näytä vastaava lähde kuvatekstin tai aikavälin kanssa, jotta käyttäjä voi tarkastella sitä. Hae tietoavustajalle olennainen sivu tai tekstijakso ennen kirjallisen vastauksen generointia. Preview-mallin tehtävä on näitä valintavaiheita tukeva multimodaalinen numeerinen esitys, kun taas tallennus, järjestyssäännöt ja lopullinen vastaus kuuluvat ympäröivään työnkulkuun.</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><div><dt>Konteksti</dt><dd>8 192 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>google/gemini-embedding-2-preview</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[]</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></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[]</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></tbody></table></div><p>Elinkaari: <code>synchronous_json</code></p><p class=\"note-s\">Säilytä jokainen palautettu vektori ja indeksi.</p><p class=\"note-s\">Tästä suppeasta tekstiprofiilista ei päätellä kuva-, ääni- tai tiedosto-olioiden tukea.</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-1488-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1488-panel-0\" aria-selected=\"true\" tabindex=\"0\">Täydellinen minimaalinen JSON-runko</button><button class=\"cg-tab\" id=\"model-code-1488-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1488-panel-1\" aria-selected=\"false\" tabindex=\"-1\">curl · minimaalinen tekstivektorointi</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-1488-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1488-tab-0\"><pre data-lang=\"json\"><code>{\n  &quot;model&quot;: &quot;google/gemini-embedding-2-preview&quot;,\n  &quot;input&quot;: [\n    &quot;First document&quot;,\n    &quot;Second document&quot;\n  ]\n}</code></pre></div><div class=\"cg-pane\" id=\"model-code-1488-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-1488-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncat &gt; embedding-request.json &lt;&lt;&#39;JSON_REQUEST&#39;\n{\n  &quot;model&quot;: &quot;google/gemini-embedding-2-preview&quot;,\n  &quot;input&quot;: [\n    &quot;First document&quot;,\n    &quot;Second document&quot;\n  ]\n}\nJSON_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 @embedding-request.json -o embedding-response.json\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>Malli puuttuu tai JSON on virheellisesti muodostettu.</td><td data-cell-label=\"Seuraava vaihe\"><span class=\"card-cell-label\">Seuraava vaihe</span>Korjaa ilmoitetut kentät.</td></tr><tr><th data-cell-label=\"Vastaus\" scope=\"row\"><span class=\"card-cell-label\">Vastaus</span>413 · <code>invalid_request_error</code></th><td data-cell-label=\"Ehto\"><span class=\"card-cell-label\">Ehto</span>Määritetty pyynnön sisältöraja ylittyi.</td><td data-cell-label=\"Seuraava vaihe\"><span class=\"card-cell-label\">Seuraava vaihe</span>Vähennä todellisen aineiston määrää.</td></tr><tr><th data-cell-label=\"Vastaus\" scope=\"row\"><span class=\"card-cell-label\">Vastaus</span>422 · <code>invalid_request_error</code></th><td data-cell-label=\"Ehto\"><span class=\"card-cell-label\">Ehto</span>Syöte tai ohjausasetukset rikkovat voimassa olevaa erilliskäytäntöä.</td><td data-cell-label=\"Seuraava vaihe\"><span class=\"card-cell-label\">Seuraava vaihe</span>Käytä näytettyä suppeaa tekstisyötettä ilman periytyviä ohjausasetuksia.</td></tr><tr><th data-cell-label=\"Vastaus\" scope=\"row\"><span class=\"card-cell-label\">Vastaus</span>503 · <code>billing_error</code></th><td data-cell-label=\"Ehto\"><span class=\"card-cell-label\">Ehto</span>Pyynnön hyväksymistä tai hinta-arviota ei voida sitoa.</td><td data-cell-label=\"Seuraava vaihe\"><span class=\"card-cell-label\">Seuraava vaihe</span>Säilytä vastaus; älä korvaa käytäntöä toisella.</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=google%2Fgemini-embedding-2-preview&amp;route=Ultra&amp;caller=google%2Fgemini-embedding-2-preview&amp;fmt=embeddings\"><code>google/gemini-embedding-2-preview</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=google%2Fgemini-embedding-2-preview&amp;route=Ultra&amp;caller=google%2Fgemini-embedding-2-preview&amp;fmt=embeddings\"><code>google/gemini-embedding-2-preview</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "google/gemini-embedding-2-preview",
        "fmt": "embeddings",
        "http": "POST",
        "path": "/v1/embeddings",
        "request_model_id": "google/gemini-embedding-2-preview",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|embeddings|/v1/embeddings|google%2Fgemini-embedding-2-preview",
      "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": "Malli puuttuu tai JSON on virheellisesti muodostettu.",
                "http_status": 400,
                "recovery": "Korjaa ilmoitetut kentät.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Määritetty pyynnön sisältöraja ylittyi.",
                "http_status": 413,
                "recovery": "Vähennä todellisen aineiston määrää.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Syöte tai ohjausasetukset rikkovat voimassa olevaa erilliskäytäntöä.",
                "http_status": 422,
                "recovery": "Käytä näytettyä suppeaa tekstisyötettä ilman periytyviä ohjausasetuksia.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Pyynnön hyväksymistä tai hinta-arviota ei voida sitoa.",
                "http_status": 503,
                "recovery": "Säilytä vastaus; älä korvaa käytäntöä toisella.",
                "type": "billing_error"
              }
            ],
            "example_body": {
              "input": [
                "First document",
                "Second document"
              ],
              "model": "google/gemini-embedding-2-preview"
            },
            "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[]"
                ],
                "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": [
                  "google/gemini-embedding-2-preview"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input",
                "required": true,
                "type": "string|string[]"
              }
            ],
            "profile_binding": "Minimal current Source subset: only model and text input. Optional controls and another model dimensions/token limits are not inherited.",
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "input": {
                  "oneOf": [
                    {
                      "minLength": 1,
                      "type": "string"
                    },
                    {
                      "items": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  ]
                },
                "model": {
                  "enum": [
                    "google/gemini-embedding-2-preview"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input"
              ],
              "type": "object"
            },
            "schema_template": {
              "input": [
                "First document",
                "Second document"
              ],
              "model": "google/gemini-embedding-2-preview"
            },
            "unsupported": [
              "image/audio/file objects in this minimal text profile",
              "dimensions (current Native43 supports_dimensions:false)",
              "foreign model-specific dimensions or token limits"
            ]
          },
          "hints": [
            "Säilytä jokainen palautettu vektori ja indeksi.",
            "Tästä suppeasta tekstiprofiilista ei päätellä kuva-, ääni- tai tiedosto-olioiden tukea."
          ],
          "input": {
            "content_type": "application/json",
            "input_shapes": [
              "string",
              "string[]"
            ],
            "material_types": [
              "text"
            ],
            "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": "Keep every vector, index, model and usage field. Current dedicated Source validates count, finite float elements and consistent actual dimensions."
          }
        },
        "ctx": 8192,
        "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": "{\n  \"model\": \"google/gemini-embedding-2-preview\",\n  \"input\": [\n    \"First document\",\n    \"Second document\"\n  ]\n}",
            "label": "Complete minimal JSON body",
            "language": "json"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncat > embedding-request.json <<'JSON_REQUEST'\n{\n  \"model\": \"google/gemini-embedding-2-preview\",\n  \"input\": [\n    \"First document\",\n    \"Second document\"\n  ]\n}\nJSON_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 @embedding-request.json -o embedding-response.json\n",
            "label": "curl · minimal text embeddings",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "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.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": "google/gemini-embedding-2-preview",
        "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": "google/gemini-embedding-2-preview",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "2e8314b137df4bb53b276b431dbf48baff65fc436cdf8fee73306a9c504c5cc4",
    "input_html_sha256": "abbd69adf2cfb639d8331d24855be6334b0efdde3442aabeb9b9d3f1fda03e69",
    "private_audit_sha256": "80c5011b489a821669ca021e69e100a46a6d22a36450b5e18875013573792a97",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/fi/google-gemini-embedding-2-preview/",
    "description": "Gemini Embedding 2 Preview muuntaa tekstiä, kuvia, ääntä, videota ja PDF-tiedostoja numeerisiksi vektoreiksi samaan multimodaaliseen avaruuteen. Sen erikseen dokumentoitu esiversioprofiili tukee hakua ja vertailua eri modaliteettien välillä, 8 192 tokenin syötettä ja joustavia vektoriulottuvuuksia.",
    "locale": "fi",
    "md_url": "https://ailoot.ai/models/fi/google-gemini-embedding-2-preview/index.md",
    "title": "Google: Gemini Embedding 2 Preview — Ailoot",
    "url": "https://ailoot.ai/models/fi/google-gemini-embedding-2-preview/"
  },
  "rawModel": {
    "about": "Gemini Embedding 2 Preview on Googlen nimetty esiversio sen alun perin multimodaaliseksi suunnitellusta upotusmalliperheestä. Se kuvaa tekstin, kuvat, videon, äänen ja PDF-tiedostot yhteiseen numeeriseen avaruuteen, jossa semanttinen tarkoitus esitetään yli 100 kielellä. Tuloksena on upotuksia eli vektoreita, joilla vertaillaan ja haetaan toisiinsa liittyvää aineistoa. Tämä esiversio on erillinen vakaasta Gemini Embedding 2 -versiosta, eikä sen nimi tarkoita vaihdettavia mallipainoja tai samaa vektoriavaruutta.\n\nAlkuperäinen julkistus kuvaa jatkosovelluksiksi modaliteettien välisen haun, luokittelun, klusteroinnin, sentimenttianalyysin ja haulla täydennetyn generoinnin. Tekstikysely voi löytää siihen liittyvän visuaalisen kohteen, ja myös kuvaa tai leikettä voi käyttää haun lähtökohtana. Sovellus tallentaa esitykset, vertailee niitä ja palauttaa vastaavat tietueet; erillinen kielimalli voi käyttää haettua lähdeaineistoa vastauksen laatimiseen. Upotus itsessään ei sisällä luonnollisen kielen selitystä tai puheen tekstivastinetta.\n\nMallin oma sivu dokumentoi 8 192 tokenin syöterajan ja 128–3 072 ulottuvuuden tulosteet. Suositellut koot ovat 768, 1 536 ja 3 072. Esiversion julkistus ilmoittaa oletukseksi 3 072 ja kuvaa Matryoshka Representation Learning -menetelmän, joka säilyttää hyödyllistä tietoa esityksen lyhyemmissä alkuosissa. Käytä yhtä valittua ulottuvuusmäärää vertailtaville vektoreille ja säilytä tieto malliversiosta kokoelman yhteydessä sen sijaan, että yhdistäisit esityksiä vain niiden yhtäläisen pituuden perusteella.\n\nEsiversion julkistus dokumentoi enintään kuusi PNG- tai JPEG-kuvaa pyyntöä kohden, enintään 120 sekuntia MP4- tai MOV-videota sekä enintään kuusisivuisia PDF-asiakirjoja. Se dokumentoi myös äänen suoran upotuksen ilman välivaiheena tehtävää tekstiksi litterointia. Nämä määritykset tulevat esiversion omasta julkistuksesta, eivät myöhemmästä vakaan version oppaasta. Julkistus ei vahvista kaikkia nykyisiä äänen kestoon, koodekkeihin tai videokehysten poimintaan liittyviä rajoja juuri tälle esiversioprofiilille.\n\nLomitettu multimodaalinen syöte antaa esityksen kuvata medioiden välisiä suhteita, kuten kuvaa ja sen kuvatekstiä. Anna tuoteluetteloa varten valokuva ja hyväksytty kuvaus yhdessä, kun ne kuvaavat yhtä haettavaa kohdetta. Jaa asiakirjakokoelman lähde rajattuihin tekstijaksoihin tai sivuihin ja säilytä sen otsikko ja sijainti. Valitse mediakirjastoon leike, joka vastaa käyttäjien etsittävää tapahtumaa, ja säilytä sen alkuperäinen aikaväli tallennetun tietueen yhteydessä.\n\nHyödyllinen hakutehtävä tekee tarkoitetun suhteen selväksi. Selitystä hakeva kysymys, visuaalisesti samankaltaisten kohteiden haku ja aiheen mukainen klusterointi ovat eri tehtäviä, vaikka ne käyttäisivät samaa lähdekokoelmaa. Valmistele sisältö johdonmukaisesti, kirjaa versio ja ulottuvuusmäärä sekä säilytä jokaisen vektorin yhteys lähteeseensä. Samankaltaisuus tuottaa ehdokkaita sovelluksen tarkasteltavaksi; se ei todista, että kaksi tietuetta esittää saman tosiasian tai että haettu lähde vastaa kysymykseen täydellisesti.\n\nKäytännön mediahaussa esitä valittu kuva tai video-ote vektorina ja vertaa sitä halutun sisällön kuvaukseen. Näytä vastaava lähde kuvatekstin tai aikavälin kanssa, jotta käyttäjä voi tarkastella sitä. Hae tietoavustajalle olennainen sivu tai tekstijakso ennen kirjallisen vastauksen generointia. Preview-mallin tehtävä on näitä valintavaiheita tukeva multimodaalinen numeerinen esitys, kun taas tallennus, järjestyssäännöt ja lopullinen vastaus kuuluvat ympäröivään työnkulkuun.",
    "alias_of": null,
    "aliases": [],
    "author": "Google",
    "capabilities": {
      "context_length": 8192,
      "manufacturer_input": [
        "text",
        "image",
        "file",
        "audio",
        "video"
      ],
      "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": 8192,
    "formats": [
      "embeddings"
    ],
    "id": "google/gemini-embedding-2-preview",
    "input": [
      "text"
    ],
    "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": "Malli puuttuu tai JSON on virheellisesti muodostettu.",
                "http_status": 400,
                "recovery": "Korjaa ilmoitetut kentät.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Määritetty pyynnön sisältöraja ylittyi.",
                "http_status": 413,
                "recovery": "Vähennä todellisen aineiston määrää.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Syöte tai ohjausasetukset rikkovat voimassa olevaa erilliskäytäntöä.",
                "http_status": 422,
                "recovery": "Käytä näytettyä suppeaa tekstisyötettä ilman periytyviä ohjausasetuksia.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Pyynnön hyväksymistä tai hinta-arviota ei voida sitoa.",
                "http_status": 503,
                "recovery": "Säilytä vastaus; älä korvaa käytäntöä toisella.",
                "type": "billing_error"
              }
            ],
            "example_body": {
              "input": [
                "First document",
                "Second document"
              ],
              "model": "google/gemini-embedding-2-preview"
            },
            "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[]"
                ],
                "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": [
                  "google/gemini-embedding-2-preview"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input",
                "required": true,
                "type": "string|string[]"
              }
            ],
            "profile_binding": "Minimal current Source subset: only model and text input. Optional controls and another model dimensions/token limits are not inherited.",
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "input": {
                  "oneOf": [
                    {
                      "minLength": 1,
                      "type": "string"
                    },
                    {
                      "items": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  ]
                },
                "model": {
                  "enum": [
                    "google/gemini-embedding-2-preview"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input"
              ],
              "type": "object"
            },
            "schema_template": {
              "input": [
                "First document",
                "Second document"
              ],
              "model": "google/gemini-embedding-2-preview"
            },
            "unsupported": [
              "image/audio/file objects in this minimal text profile",
              "dimensions (current Native43 supports_dimensions:false)",
              "foreign model-specific dimensions or token limits"
            ]
          },
          "hints": [
            "Säilytä jokainen palautettu vektori ja indeksi.",
            "Tästä suppeasta tekstiprofiilista ei päätellä kuva-, ääni- tai tiedosto-olioiden tukea."
          ],
          "input": {
            "content_type": "application/json",
            "input_shapes": [
              "string",
              "string[]"
            ],
            "material_types": [
              "text"
            ],
            "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": "Keep every vector, index, model and usage field. Current dedicated Source validates count, finite float elements and consistent actual dimensions."
          }
        },
        "ctx": 8192,
        "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": "{\n  \"model\": \"google/gemini-embedding-2-preview\",\n  \"input\": [\n    \"First document\",\n    \"Second document\"\n  ]\n}",
            "label": "Complete minimal JSON body",
            "language": "json"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncat > embedding-request.json <<'JSON_REQUEST'\n{\n  \"model\": \"google/gemini-embedding-2-preview\",\n  \"input\": [\n    \"First document\",\n    \"Second document\"\n  ]\n}\nJSON_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 @embedding-request.json -o embedding-response.json\n",
            "label": "curl · minimal text embeddings",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "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.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": "google/gemini-embedding-2-preview",
        "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": "google/gemini-embedding-2-preview",
        "request_model_id": "google/gemini-embedding-2-preview",
        "route_label": "Ultra"
      }
    ],
    "name": "Google: Gemini Embedding 2 Preview",
    "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": "Gemini Embedding 2 Preview muuntaa tekstiä, kuvia, ääntä, videota ja PDF-tiedostoja numeerisiksi vektoreiksi samaan multimodaaliseen avaruuteen. Sen erikseen dokumentoitu esiversioprofiili tukee hakua ja vertailua eri modaliteettien välillä, 8 192 tokenin syötettä ja joustavia vektoriulottuvuuksia."
  },
  "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": "Gemini Embedding 2 Preview muuntaa tekstiä, kuvia, ääntä, videota ja PDF-tiedostoja numeerisiksi vektoreiksi samaan multimodaaliseen avaruuteen. Sen erikseen dokumentoitu esiversioprofiili tukee hakua ja vertailua eri modaliteettien välillä, 8 192 tokenin syötettä ja joustavia vektoriulottuvuuksia.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "b70cc884697f96e476b756b9d0f58251a0b99adb326f5291e9499ad321fb79d4",
    "renderer_sha256": "303a59603e2bc29ba8fda690e95fd32cec68de223d92e26054a88babff801dd7"
  },
  "sourceRevision": "e3350933becd2f501bce01842d54d3e74cf5a92a7231c97b8c7ab2a11fcf2a00"
}
