Suuret kielimallit (LLM)
Konteksti-ikkuna selitettynä: miksi tekoäly unohtaa asioita
Konteksti-ikkuna on tokenimäärä, jonka malli näkee kerralla. Näin tieto katoaa keskeltä, miksi suomi täyttää ikkunan nopeammin ja mitä tehdä.
Lyhyt vastaus
Konteksti-ikkuna on suurin määrä tokeneita, jonka kielimalli voi ottaa kerralla käsittelyyn. Se kattaa järjestelmäohjeen, koko aiemman keskustelun, liitetyt tiedostot ja mallin oman vastauksen. Kun raja tulee vastaan, palvelu karsii tai tiivistää vanhinta osaa, jolloin malli lakkaa näkemästä sen eikä kerro siitä mitään. Ikkunan kasvattaminen ei poista ongelmaa, koska tarkkuus laskee pitkissä syötteissä myös rajan alapuolella.
Sisällys
- Mitä ikkunaan mahtuu ja mikä sitä täyttää
- Miksi rajaa on ylipäätään olemassa
- Malli ei unohda vaan lakkaa näkemästä
- Keskeltä katoava tieto
- Suomen kieli täyttää ikkunan nopeammin
- Dokumentin liittäminen ja milloin haku on parempi
- Päättelymallit kuluttavat ikkunaa näkymättömästi
- Käytännön ohjeet pitkiin keskusteluihin
- Rajat: mitä isompi ikkuna ei korjaa
- Usein kysytyt kysymykset
- Lähteet ja lisälukemista
Konteksti-ikkuna on suurin määrä tokeneita, jonka kielimalli voi ottaa kerralla käsittelyyn. Kaikki mitä malli tietää kyseisellä hetkellä, on tuon ikkunan sisällä: järjestelmäohje, koko aiempi keskustelu, liittämäsi tiedostot ja vastaus, jota se parhaillaan kirjoittaa. Ikkunan ulkopuolella ei ole mitään.
Tästä seuraa ilmiö, jota kutsutaan unohtamiseksi mutta joka ei ole unohtamista. Malli ei menetä muistoa, koska sillä ei ole muistia. Se lakkaa näkemästä sitä osaa keskustelusta, joka on pudotettu pois, eikä mikään kerro sinulle että näin tapahtui. Perusteet tokeneista ja ennustamisesta ovat artikkelissa miten kielimalli toimii, ja tässä keskitytään siihen, mitä ikkunan rajallisuudesta käytännössä seuraa.
Mitä ikkunaan mahtuu ja mikä sitä täyttää
Ikkuna mitataan tokeneina, ei sanoina eikä merkkeinä. Joka vuorolla siihen ladataan koko konteksti alusta asti:
- Järjestelmäohje, jonka palvelu asettaa itse ja jota et yleensä näe.
- Keskusteluhistoria kokonaisuudessaan, sekä sinun viestisi että mallin aiemmat vastaukset.
- Liitetyt tiedostot ja haetut lähteet siltä osin kuin ne on sisällytetty syötteeseen.
- Työkalujen tulokset, esimerkiksi hakutulokset tai koodin ajon tuloste.
- Vastaus, jota malli kirjoittaa, koska se kasvaa saman rajan sisällä.
Näiden summa on se, mikä lasketaan rajaa vasten. Yksi kohta yllättää usein: mallin omat pitkät vastaukset kuluttavat ikkunaa nopeammin kuin käyttäjän kysymykset. Keskustelu, jossa on kymmenen tuhannen sanan verran mallin tuottamaa tekstiä, on käyttänyt ikkunasta moninkertaisesti sen, mitä kysymykset ovat vieneet.
Miksi rajaa on ylipäätään olemassa
Ikkuna ei ole mielivaltainen liiketoimintapäätös vaan seuraa laskennan rakenteesta. Transformer-mallin huomiomekanismissa jokainen token vertautuu jokaiseen muuhun tokeniin. Kun tokenien määrä kaksinkertaistuu, vertailujen määrä nelinkertaistuu.
Käytännössä tämä tarkoittaa, että kontekstin pidentäminen kasvattaa sekä laskenta-aikaa että muistintarvetta jyrkästi. Uudemmat toteutukset pienentävät kustannusta erilaisilla optimoinneilla, ja siksi ilmoitetut ikkunakoot ovat kasvaneet muutamasta tuhannesta tokenista satoihin tuhansiin muutamassa vuodessa. Luvut muuttuvat niin nopeasti, ettei tähän artikkeliin kannata kirjoittaa mallikohtaisia numeroita: ne kannattaa tarkistaa palvelun omasta dokumentaatiosta.
Toinen syy on hinta. Palvelut laskuttavat tokeneista, ja koko keskustelu lähetetään uudelleen joka vuorolla. Pitkä keskustelu maksaa siis joka vuorolla enemmän kuin edellinen, vaikka kysymyksesi olisi lyhyt. Kuukausimaksullisissa kuluttajapalveluissa sama näkyy toisin: kustannus ei kasva laskulla vaan käyttörajoina, hidastumisena ja siinä, kuinka pitkiä liitteitä palvelu suostuu ottamaan vastaan.
Kolmas syy on tekninen laatu. Mallin pitää oppia käsittelemään pitkiä syötteitä jo opetuksen aikana, eikä ikkunaa voi kasvattaa jälkikäteen pelkällä asetuksella ilman että vastausten laatu kärsii pitkissä syötteissä.
Malli ei unohda vaan lakkaa näkemästä
Kun raja tulee vastaan, palvelun pitää tehdä jotain. Tavallisia ratkaisuja on kolme, ja ne käyttäytyvät eri tavalla.
Karsiminen. Vanhin osa keskustelusta poistetaan syötteestä. Yksinkertaista ja nopeaa, mutta alussa annetut ohjeet katoavat ensimmäisenä.
Tiivistäminen. Palvelu pyytää mallia kirjoittamaan vanhasta osasta lyhyen yhteenvedon ja korvaa alkuperäisen sillä. Tila säästyy, mutta yhteenveto on mallin tuottamaa tekstiä, joten yksityiskohdat ja tarkat luvut katoavat tai muuttuvat.
Haku. Vanha keskustelu tallennetaan erikseen, ja siitä haetaan mukaan vain kysymykseen liittyvät kohdat. Tehokasta, mutta haku voi hakea väärän kohdan, jolloin malli vastaa itsevarmasti puutteellisen tiedon perusteella.
Kaikissa kolmessa lopputulos on käyttäjän kannalta sama: malli alkaa käyttäytyä kuin se ei olisi lukenut alkupään ohjeita. Se ei ilmoita tästä, koska se ei tiedä siitä. Ilmiö selittää myös osan siitä, miksi tekoäly keksii asioita pitkän keskustelun loppupuolella: konteksti on ohentunut, mutta itsevarma sävy ei ole.
Keskeltä katoava tieto
Vaikka aineisto mahtuisi ikkunaan kokonaan, sen kaikki osat eivät ole yhtä hyvin mallin ulottuvilla. Stanfordin tutkijoiden mittaus vuodelta 2023 osoitti, että kun oikea vastaus piilotettiin pitkään syötteeseen, mallit löysivät sen selvästi parhaiten silloin, kun se oli syötteen alussa tai lopussa. Keskellä oleva tieto jäi huomattavasti useammin huomaamatta, ja ilmiö toistui myös malleilla, jotka oli suunniteltu pitkiä syötteitä varten.
Myöhemmät mittaukset ovat vahvistaneet yleiskuvan. RULER-vertailussa lähes kaikkien mallien suorituskyky heikkeni selvästi syötteen pidetessä, ja vain osa niistä säilytti kelvollisen tason ilmoitetun rajansa puolivälissäkään.
Käytännön ohje seuraa suoraan: sijoita tärkein tieto syötteen alkuun ja toista pyyntö lopussa. Jos liität pitkän dokumentin, kirjoita kysymys sekä ennen dokumenttia että sen jälkeen. Tämä ei ole taikatemppu vaan kompensoi mitattua heikkoutta. Lisää saman aiheen käytäntöjä on artikkelissa hyvän promptin rakenne.
Suomen kieli täyttää ikkunan nopeammin
Tokenisoija on opetettu aineistolla, jossa englanti on ylivoimaisesti suurin kieli. Siksi yleiset englanninkieliset sanat ovat usein yksi token, kun taas suomen taivutusmuodot ja yhdyssanat pilkkoutuvat useaksi palaksi.
Alla oleva taulukko on suuntaa antava arvio, ei mittaustulos. Todellinen tokenimäärä riippuu käytetystä mallista ja tekstin luonteesta, ja hajonta on suurta.
| Aineisto | Sanoja suunnilleen | Karkea tokenimäärä suomeksi |
|---|---|---|
| Yhden sivun muistio | 400 | 600 tai 900 |
| Kahdenkymmenen sivun raportti | 8 000 | 12 000 tai 18 000 |
| Kokonainen tietokirja | 80 000 | 120 000 tai 180 000 |
Seurauksia on kolme. Sama sisältö vie suomeksi tyypillisesti noin puolitoista kertaa enemmän tokeneita kuin englanniksi, joten ikkuna täyttyy nopeammin. Käyttö maksaa saman verran enemmän, jos palvelu laskuttaa tokeneista. Ja pitkissä suomenkielisissä aineistoissa tullaan ikkunan tehokkaan alueen rajoille aikaisemmin kuin vastaavan englanninkielisen aineiston kanssa.
Dokumentin liittäminen ja milloin haku on parempi
Tiedoston liittäminen keskusteluun tarkoittaa käytännössä sitä, että sen teksti puretaan ja työnnetään ikkunaan. Tästä seuraa muutama asia, jotka kannattaa tietää etukäteen.
Skannattu PDF ilman tekstikerrosta ei sisällä tekstiä, joten se pitää ensin tunnistaa kuvasta, ja tunnistusvirheet menevät malliin sellaisenaan. Taulukoiden rakenne katoaa usein purkamisessa, jolloin sarakkeet sekoittuvat. Ja pitkä liite voi täyttää ikkunan niin, että keskusteluhistoria putoaa pois heti seuraavalla vuorolla.
Kun aineistoa on enemmän kuin ikkunaan mahtuu, vaihtoehto on haku: aineisto pilkotaan paloihin, tallennetaan erikseen ja kysymykseen haetaan mukaan vain muutama olennainen pala. Tämä on tavallisin tapa rakentaa tekoälyhaku oman dokumenttivaraston päälle. Rajoitus on siirtynyt eikä poistunut: nyt vastauksen laatu riippuu siitä, hakiko haku oikeat palat, ja väärä palanvalinta johtaa itsevarmaan väärään vastaukseen aivan samalla tavalla.
Muista myös, että liittäminen on tietojen luovuttamista palveluntarjoajalle. Ennen kuin liität asiakastietoja tai työpaikan aineistoa, kannattaa lukea tekoäly ja tietosuoja.
Päättelymallit kuluttavat ikkunaa näkymättömästi
Osa nykyisistä malleista tuottaa ennen varsinaista vastausta pitkän välivaiheen, jossa ne kirjoittavat päättelyään auki. Käyttäjä näkee siitä usein vain tiivistelmän tai ei mitään, mutta teksti on silti tokeneita ja se lasketaan samaan ikkunaan ja samaan laskutukseen.
Seuraus on kaksi. Vaikea kysymys voi kuluttaa moninkertaisesti sen, mitä lopullisen vastauksen pituus antaa ymmärtää, ja pitkässä keskustelussa raja tulee vastaan aiemmin kuin näkyvästä tekstistä voisi päätellä. Palvelut käsittelevät välivaihetta eri tavoin: osa poistaa sen seuraavilta vuoroilta, osa säilyttää sen. Ero näkyy sekä hinnassa että siinä, kuinka nopeasti historia alkaa karsiutua, ja se on yksi kohta, jossa tekoälyassistentit eroavat toisistaan.
Käytännön ohje on sama kuin muuallakin: jos vastaukset alkavat hidastua tai lipsua ohjeista, kyse on todennäköisesti täyttyneestä ikkunasta eikä mallin laadusta.
Käytännön ohjeet pitkiin keskusteluihin
- Aloita uusi keskustelu, kun aihe vaihtuu. Vanha historia ei auta uudessa tehtävässä, mutta se syö ikkunaa ja hidastaa vastauksia.
- Pyydä tiivistelmä ennen kuin lopetat. Hyvä pyyntö on lyhyt lista päätöksistä, rajauksista ja avoimista kysymyksistä. Liitä lista uuden keskustelun alkuun.
- Liitä vain se osa aineistosta, jota kysymys koskee. Kokonainen raportti tuottaa keskimäärin huonomman vastauksen kuin kolme oikeaa lukua.
- Toista ohje, kun se on tärkeä. Vastauksen muoto ja rajaukset kannattaa kirjoittaa uudelleen pitkän keskustelun aikana, koska alkuperäinen ohje voi olla jo karsittu pois.
- Tarkista, ettei malli viittaa aiempaan sisältöön epämääräisesti. Jos vastaus sanoo ”kuten aiemmin totesimme” eikä toista asiaa, se saattaa viitata kohtaan, jota se ei enää näe.
- Älä oleta muistitoimintoa. Erilliset muistiominaisuudet tallentavat poimintoja tekstinä ja liittävät ne uuden keskustelun alkuun. Ne täyttävät ikkunaa siinä missä muukin teksti, ja niiden sisältö kannattaa käydä läpi asetuksista.
Rajat: mitä isompi ikkuna ei korjaa
Ikkunoiden kasvu on ollut nopeaa, ja on todennäköistä että luvut kasvavat edelleen. Kolme asiaa ei kuitenkaan ratkea kasvattamalla.
Tarkkuus ei skaalaudu rajan mukana. Mittaukset osoittavat toistuvasti, että hyödyllinen pituus on selvästi ilmoitettua rajaa lyhyempi, ja ero vaihtelee malleittain sekä tehtävittäin. Toiseksi konteksti ei ole tietämystä: ikkunassa oleva teksti ohjaa vastausta, mutta malli ei opi siitä mitään pysyvästi, ja seuraavassa keskustelussa se on poissa. Kolmanneksi pidempi syöte kasvattaa hintaa ja viivettä, joten kaiken liittäminen mukaan on myös taloudellisesti huono oletustapa.
Käyttökelpoinen ajattelutapa on kohdella ikkunaa työpöytänä eikä arkistona. Työpöydälle nostetaan se, mitä juuri nyt tarvitaan, ja loppu pidetään muualla. Kun vastausten laatua haluaa parantaa, kannattaa yleensä lyhentää syötettä eikä pidentää sitä. Rakenteellisia keinoja tähän on koottu promptin rakentajaan.
Usein kysytyt kysymykset
Mitä konteksti-ikkuna tarkoittaa?
Se on suurin tokenimäärä, jonka malli voi ottaa yhdellä kertaa sisään ja tuottaa ulos. Ikkunaan mahtuvat järjestelmäohje, aiempi keskustelu, liitetyt tiedostot ja vastaus. Jos summa ylittää rajan, jotain jää pois, tyypillisesti keskustelun vanhin osa.
Miksi tekoäly unohtaa, mitä pyysin keskustelun alussa?
Kyse ei ole unohtamisesta vaan siitä, että vanhin osa on pudonnut ikkunasta pois tai tiivistetty lyhyemmäksi. Malli näkee vain sen, mikä sille syötetään kyseisellä vuorolla. Ohje lakkaa vaikuttamasta hiljaisesti, koska palvelu ei yleensä ilmoita karsimisesta mitenkään.
Kuinka monta sivua tekstiä konteksti-ikkunaan mahtuu?
Karkea suuntaa antava arvio suomelle on noin 1,5 tai 2 tokenia sanaa kohti, joten sata tuhatta tokenia vastaa suunnilleen 50 000 suomenkielistä sanaa eli parisataa kirjan sivua. Luku vaihtelee tokenisoijan ja tekstin mukaan, joten sitä kannattaa pitää suuruusluokkana eikä tarkkana rajana.
Onko isompi konteksti-ikkuna aina parempi?
Ei automaattisesti. Mittauksissa mallien tarkkuus laskee, kun syöte pitenee, vaikka ilmoitettu raja ei tulisi vastaan. Iso ikkuna on hyödyllinen, kun aineisto on pakko käsitellä kokonaisuutena, mutta rajattu ja hyvin valittu syöte antaa yleensä tarkemman vastauksen kuin kaiken liittäminen mukaan.
Kannattaako pitkä keskustelu aloittaa alusta?
Yleensä kyllä, kun vastaukset alkavat lipsua annetuista ohjeista tai toistaa jo korjattuja virheitä. Tehokkain tapa on pyytää mallia tiivistämään keskustelun päätökset listaksi, aloittaa uusi keskustelu ja liittää tiivistelmä sekä alkuperäiset ohjeet sen alkuun.