Rakensin chatbotin — näin se toimii teknisesti
Rakensin RAG-pohjaisen chatbot-demon: tekoäly vastaa kysymyksiin yrityksen omasta dokumentaatiosta ilman hallusinointia. Tässä tekninen kuvaus siitä, miten se toimii.
Rakennettuani AI-avusteisen kehitysympäristön alkaa ajatuksia tulla ja virrata. Tällöin alkaa miettimään mitä kaikkea voisi syntyä yhdessä AI:n kanssa ja millaisia asioita voisi testailla. Edellinen demo oli C-Suite Simulator, missä Clauden taitoja ja muutamaa muuta tekniikkaa hyödyntäen rakennettiin näkökulmia antava AI-palvelu.
Tämä vei sitten ajatukseni siihen, että miten voisi tehdä pieniä palveluja muihin tarpeisiin yksinkertaisesti. Chatbotit ovat olleet pitkään ja niistä paljon puhutaan. Haasteena on vain kielimallien hallusinointi ja muut ongelmat. Totesin, että haluan rakentaa testiympäristön miten tuollaisen käytöstä voi testailla.
Viime viikkoina olen rakentanut demon, joka tiivistää yhden konkreettisen AI-käyttötapauksen: chatbotin, joka vastaa kysymyksiin yrityksen omasta dokumentaatiosta. Ei hallusinoi, ei puhu ohi aiheen — vastaa ainoastaan sille syötetyn tiedoston sisällöstä.
Demo on julkisesti kokeiltavissa osoitteessa jerekaariainen.fi/demo/unlock.
Mitä RAG tarkoittaa käytännössä
RAG tulee sanoista Retrieval-Augmented Generation. Perusidea on yksinkertainen: sen sijaan että kielimalli yrittää vastata muistin varassa, sille annetaan ensin relevantti konteksti — ja se vastaa sen pohjalta.
Käytännössä tämä tarkoittaa kolmea vaihetta:
Indeksointi — dokumentti pilkotaan pieniin osiin (chunkkeihin)
Haku — kun käyttäjä kysyy jotain, järjestelmä etsii relevanteimmat chunkit
Generointi — LLM saa kysymyksen + löydetyt chunkit ja muodostaa vastauksen
Tulos: malli ei puhu omasta päästään, vaan nimenomaisesti dokumentista.
Tekninen arkkitehtuuri
Demo pyörii Next.js 15 -sovelluksessa. Kaikki logiikka on palvelimella — selain ei näe API-avaimia tai dokumenttien sisältöä.
Autentikointi — magic link
Käyttäjä syöttää sähköpostiosoitteensa. Palvelin generoi HMAC-SHA256-allekirjoitetun linkin ja lähettää sen sähköpostiin. Linkki on voimassa 10 päivää. Kun käyttäjä klikkaa linkkiä, palvelin asettaa signed cookien — tästä eteenpäin kaikki API-kutsut tunnistetaan.
Yksinkertainen, mutta turvallinen: ei salasanoja, ei OAuth-integraatioita, ei käyttäjätietokantaa.
Dokumentin käsittely
Käyttäjä lataa PDF- tai Word-tiedoston (max 20 MB). Palvelin tarkistaa tiedoston sekä päätteestä että magic byteista — .pdf-tiedosto jonka sisältö on jotain muuta, hylätään.
Teksti puretaan tiedostosta (pdf-parse tai mammoth), minkä jälkeen se pilkotaan noin 400 sanan chunkkeihin 80 sanan päällekkäisyydellä. Päällekkäisyys varmistaa, ettei asiayhteys katkea chunkkirajoilla.
Relevanttien chunkkien valinta
Tässä demossa retrieval on tahallisesti yksinkertainen: keyword-pohjainen pisteytysmalli. Jokainen chunkin sana tarkistetaan kysymystä vastaan, harvat sanat suodatetaan pois, ja eniten osumia saaneet chunkit valitaan kontekstiksi.
Tuotantokäyttöön tähän tulisi vektoriembedding + semanttinen haku — se löytää merkitystason osumia, ei vain sanoja.
LLM — Claude Haiku
Valitsin Anthropicin Claude Haiku 4.5:n nopeutensa ja hinnan takia. System prompt kieltää mallia vastaamasta mitään muuta kuin dokumentin sisällöstä — ja jos vastausta ei löydy, se sanoo niin selkeästi.
Handoff — ihminen ottaa ohjat
Kiinnostavin ominaisuus on human handoff. Kun käyttäjä haluaa puhua ihmiselle, chatbot lähettää koko keskusteluhistorian minulle Telegramiin. Vastaukseni kulkeutuvat takaisin käyttäjälle. Tämä on relevantti malli asiakaspalvelukäytössä: AI hoitaa rutiinit, ihminen astuu kuvaan poikkeuksissa.
Miksi tämä on yrityksille kiinnostava
Monessa yrityksessä on dokumentaatiota jota kukaan ei lue — palvelukuvauksia, hinnastoja, usein kysyttyjä kysymyksiä, prosessikuvauksia. Tämä teknologia muuttaa ne kysyttäviksi.
Asiakas saa vastauksen heti. Myyjä tai asiakaspalvelija vapautuu rutiineista. Ja kun chatbot ei tiedä vastausta, se sanoo niin — eikä keksi.
Demo on käytettävissä arkisin klo 10–18 ihmissiirron osalta, AI aina auki.
Haluatko rakentaa jotain vastaavaa omalle yrityksellesi? Ota yhteyttä — voidaan jutella kokemuksista.