Kielimallit eivät ole tietämyskoneita

Kielimalliälyt jatkavat huikeita kehitysloikkiaan niin monipuolisuudessa kuin tarkkuudessakin. Usein kuitenkin yhä esiintyy väärä käsitys kielimallin luonteesta: Kun se antaa väärän vastauksen suoraan kysymykseen, sanotaan sen olevan ”rikki” tai epäonnistuneen tehtävässään – ajatusvirhe, joka korjataan nyt.

Kielimallit eivät ole Wikipedian kaltaisia tietämyksen kokoelmia, vaan ne ovat, nimensä mukaisesti, malleja kielen käytöstä. Neuroverkko yhdistelee oppimansa tekstimassat – kirjat, Internet-sivut ja tieteellisen tutkimuksen. Washington Postin artikkelista voi selvittää, mitkä sivustot ChatGPT:tä ovat ohjanneet: esimerkiksi YLE on mukana 0,0002 %:n osuudella, Devisioona.fi on valitettavasti jäänyt kokonaan pois.

Kielimalli on kuin suuri tekstin sulatusuuni, joka kysyttäessä luo uusia virkkeitä pyydetystä aiheesta kaiken ahmimansa tekstimassan perusteella. Kielimallien tietämys mistä tahansa aiheesta on vain opetusvaiheessa käsiteltyjen tekstimassojen sulatuksen sivutuote. Tämän huomioiden on hämmästyttävää, että mallit ylipäätään pystyvät vastaamaan kysymyksiin ja tarjoamaan tietoa – ja vieläpä melko hyvin! Tämä näyttää suurten kielimallien monipuolisuuden, mutta korostaa myös tarvetta huomioida kielimallien rajoitukset ja luonne. Kielimalli on monipuolinen kieleen liittyvä työkalu, mutta huono tietolähde.

Juurtaminen omalla datalla

Suurten kielimallien, kuten GPT-4:n, hyödyntäminen liiketoiminnassa vaatii usein mallin tukemista olemassa olevalla, ajantasaisella tiedolla. Oikein juurettuina tai ankkuroituna (englanniksi ”grounding”) kielimallit voivat olla erittäin tehokkaita työkaluja liiketoiminnan kehittämisessä.

Kielimalli on varsin käynnistämään ajattelua, sillä kuuluisat ”nauruversiot” siltä syntyvät varsin luontevasti.

ChatGPT:n verkkopalvelussa juurtaminen voi tarkoittaa yksinkertaista leikkaa-liimaa -menetelmää. Esimerkiksi tämän kirjoituksen luomiseksi hahmottelin ajatuksiani joukolla vapaamuotoisia ranskalaisia viivoja ja pyysin ChatGPT:tä luomaan minulle blogikirjoituksen rakennevaihtoehtoja. Kielimalli auttoi minua jäsentämään ajatukseni tekstiksi, ja tässä tarkoituksessa kielimalli on parhaimmillaan.

Kielimalleja hyödyntävissä sovelluksissa yksinkertaisin tapa juurtamiselle on sisällyttää kielimallin syötteeseen relevantit lähtötiedot perinteisin ohjelmointimenetelmin. Asiakasratkaisuissa tämä tarkoittaa käytännössä, että syötteeseen poimitaan liittyvät lähdetiedot esimerkiksi asiakkaan tietokannasta tai muusta tunnetusta tietolähteestä, ja liitetään ne suoraan kielimallille lähetettävään kysymykseen.

Tosimaailman järjestelmäratkaisuissa esiintyy usein tilanteita, joissa relevanttien tietopalasten sisällyttäminen syötteeseen ei ole suoraviivaista. Vektoritietokantoihin nojaava embeddings-malli auttaa niissä tilanteissa, joissa käytössä on asiayhteyteen liittyvää tekstiä, esimerkiksi tuotekuvauksia. Tässä esimerkissä kielimalli juurretaan todellisuuteen poimimalla herätteeseen tuotekuvauksista oleelliset osat. ”Oleellisen” määrittely ja valinta on keskeinen haaste: rajattoman paljon syötetekstiä mallille ei voi kehotteessa antaa, joten ohjelmiston kehittäjän tehtäväksi jää tulkita, mitä tietoa mallille pitäisi tarjota, jotta käyttäjän kysymykseen voitaisiin vastata luotettavasti.

Kielimalliratkaisun voi toteuttaa myös siten, että tarjoaa kielimallille joukon työkaluja ja antaa kielimallin itse kontrolloida prosessin etenemistä syöteketjussa. LangChain on esimerkki tunnetusta heräteketjujen työkalusta tällaiseen tarkoitukseen. Ketjun toteuttamisessa voi käyttää valmista työkalua, tai ketjuidean voi rakentaa helposti omaan koodiin itse. LangChain-toteutuksessa malli paloittelee käyttäjän esittämän tietopyynnön, ja kerää tiedot kasaan eri paikoista.

Juurtamisen esimerkki sovelluskehityksessä

GPT-4 kielimalli on kielimallina hyvin monipuolinen. Kollegani Jouni Heikniemi näytti viime viikolla Microsoftin Developer x AI -tapahtumassa, kuinka Helsingin Seudun Liikenteen reittioppaan taustalla olevaan rajapintaan voi luoda toimivan client-koodin näin yksinkertaisella ChatGPT-syötteellä:

ChatGPT selviää mainiosti rajapintapyynnöstä, kun syötekenttään vain kopioi raakatekstinä sen API-ohjeen, jota on tarkoitus soveltaa. Esimerkissä API-kuvaus napattu Digitransit.fi:stä.

Saman kysymyksen olisi voinut esittää ilmankin rajapintakuvauksen kopiointia – esimerkiksi ”Luo C#-kielinen REST-clientti, joka käyttää HSL:n rajapintoja selvittääkseen, millä lippuvyöhykkeellä tietty koordinaattipiste on”. Tällainen pyyntö tuottaa kuitenkin käytännössä epätyydyttävän kokemuksen: malli pohjaa vastauksensa siihen tietoon, mitä sillä sattui rajapinnoista olemaan, kun tietojoukko muodostettiin vuonna 2021. Myöhemmät muutokset ja rajapintojen käyttösuositukset jäävät huomioimatta, vaikka lopputulos erittäin lähellä toimivaa onkin. Kyselyn juurtaminen oikealla rajapintakuvauksella parantaa tilannetta radikaalisti.

Kielimallin tukeminen vaatii asiantuntemusta

Kielimallit tarjoavat monipuolisia mahdollisuuksia kielitehtävissä – tekstin tulkinnassa, arvioinnissa ja generoinnissa – mutta ne eivät ole itsessään luotettavia tietolähteitä.

Kielimallien tehokas hyödyntäminen tietojärjestelmissä edellyttää niiden yhdistämistä tehtävän kannalta relevantteihin tietolähteisiin. On olemassa useita tehokkaita ja suhteellisen yksinkertaisia ratkaisuja juurtamiseen:

  1. Selkeiden ja määriteltyjen tietopalasten sisällyttäminen kielimallin kehotteeseen
  2. Embeddings-tekniikka tekstimassan muuntamiseksi semanttisesti haettavaan muotoon ja embeddings-hausta saatujen tekstipalasten sisällyttäminen kehotteeseen
  3. Itseohjautuvat kehoteketjut, esimerkiksi LangChain-työkalun avulla

Sopivan menetelmän valinta vaatii tapauskohtaista harkintaa. Oikea vastaus riippuu siitä, paljonko syötetietoa on, kuinka monimutkaisiin kysymyksiin pitää vastata, ja miten reaaliaikaisia oikeiden vastausten pitää olla. Tällä hetkellä parhaat tavat ovat vielä tutkimuskohteita, mutta luultavasti jo loppuvuoden aikana yhteisö löytää tiettyjä vakiotapoja, joilla tunnistaa kuhunkin tilanteeseen parhaiten sopiva malli.

Näemme Devisioonassa kielimalleja hyödyntävillä liiketoiminnan järjestelmillä merkittäviä liiketoiminnan mahdollisuuksia. Onnistumisen reseptiin kuuluu kehitysajattelun kytkeminen strategian painopisteisiin ja hyvä ymmärrys kielimallipohjaisen teknologian mahdollisuuksista, ratkaisutavoista, rajoitteista ja riskeistä. Voimmeko auttaa sinua eteenpäin? Ole yhteydessä minuun tai Jouniin!