Gosoft Connect - tekoälychat, joka nojaa asiakkaan dokumentteihin
Multi-tenant-widget-palvelu, jonka tekoälychat vastaa kunkin asiakkaan omasta tietopohjasta - koko hakupino itse ylläpidettynä yhdellä CPU-nodella.
Mikä se on
Gosoft Connect on multi-tenant-SaaS, jonka olen suunnitellut ja rakentanut yksin GoSoftissa, omassa yhtiössäni: upotettavia verkkosivuwidgettejä - tekoälychat, livechat, lomakkeet, popupit - ja hallintaportaali.
Jokaisella asiakastyötilalla on tietopohja, jota täytetään neljällä tavalla: liittämällä tekstiä, noutamalla URL, lataamalla tiedostoja tai indeksoimalla kokonainen sivukartta. Asiakkaan sivuston tekoälychat vastaa kävijöiden kysymyksiin tämän tietopohjan perusteella ja striimaa vastaukset token kerrallaan.
Avustaja toimii sisäisten työkalukutsujen kautta: käytössä ovat hakutyökalut, laskin sekä työkalut yritystietojen hakuun, liidien keräämiseen ja keskustelun siirtoon ihmiselle. Jokaisen asiasisältöisen viestin kohdalla malli pakotetaan ensimmäisellä kierroksella kutsumaan työkalua, joten vastaukset perustuvat asiakkaan dataan eivätkä mallin oletuksiin.
Chatin ympärillä ovat koostesähköpostit, lomakevastausten tekoälytiivistelmät, keskustelujen luokittelu, öisin ajettavat raportit kysymyksistä, joihin botti ei osannut vastata, sekä syötteen ja vastausten moderointi.
Hakuputki
Vastaukset pohjautuvat hybridihakuun: tiheät vektorit pgvectorissa ja tekstihaun pisteytys yhdistetään reciprocal rank fusion -menetelmällä, minkä jälkeen cross-encoder järjestää tulokset uudelleen, dokumenttikohtaisella monimuotoisuusrajalla ja kielitietoisella haulla suomen-, ruotsin- ja englanninkieliseen sisältöön. Paloittelu on kappaletietoista, ja jokainen pala saa kontekstiotsikon; sisältöhashien ansiosta muuttumattomia dokumentteja ei koskaan upoteta uudelleen.
Stack ja infrastruktuuri
Tarkoituksella pieni: kaikki pyörii yhdellä Linux-nodella, pelkällä CPU:lla. Upotusmalli (bge-m3) ja uudelleenjärjestäjä (bge-reranker-v2-m3) ajetaan paikallisesti ONNX:llä - ei GPU:ta, ei embedding-API:a. Asiakkaan dokumentit lähtevät koneelta täsmälleen yhtä asiaa varten: itse LLM-kutsua (OpenAI, malli valittavissa työtilakohtaisesti), ja kutsun kattaa palveluntarjoajan kanssa tehty tietojenkäsittelysopimus. Vektorivarasto on tavallinen PostgreSQL pgvectorilla - yksi tietokanta kaikelle. Bun ja Hono taustalla, Solid.js-portaali, nginx edessä.
Insinöörityö
Luvut, jotka voin julkaista, ovat insinöörilukuja. Uudelleenjärjestäjän kvantisointi pudotti haun 14 sekunnista 4,1:een CPU:lla, itse järjestysvaiheen 5,6:sta 1,1:een. Varhainen kuormitustesti pudotti kaksi kymmenestä samanaikaisesta chatista ja kaatoi prosessin, kun muistinkäyttö oli 10,4 GB; inferenssisemaforin ja eräpaloittelun jälkeen sama testi palveli 10/10 muistihuipun ollessa 6,8 GB, ilman yhtäkään uudelleenkäynnistystä. Tuotannossa kesäkuusta 2026 lähtien.
Mallit valitaan automaattisella arviointisarjalla. Sarja kulkee samaa koodipolkua kuin kävijän kysymys oikeassa chatissa ja jää koodikantaan regressiotestiksi. GoSoftissa käytämme tekoälyagentteja myös sisäisesti, ohjelmistokehityksessä ja päivittäisessä työssä.