Chatassistenter
Chatbot på egne dokumenter — slik fungerer kildehenvisning
En chatbot som svarer fra egne dokumenter finner først de avsnittene som faktisk handler om spørsmålet, og formulerer så svaret ut fra nettopp de avsnittene. Kildehenvisningen er ikke pynt på slutten: den er selve mekanismen som holder svaret på plass, fordi assistenten bare får bruke tekst den har hentet, og alltid kan peke tilbake på hvor den hentet den. Finner den ingenting, skal den si det — ikke gjette.
Hva vil det si at en chatbot svarer fra egne dokumenter?
En skriptet chatbot kjenner bare de spørsmålene noen har rukket å skrive inn på forhånd. En chatassistent på egne dokumenter jobber motsatt vei: for hvert spørsmål søker den i håndbøker, rutiner, prislister og produktdata, henter de avsnittene som ser relevante ut, og formulerer svaret ut fra dem. Derfor takler den også spørsmål ingen har forutsett.
Språkmodellen er ikke lagringsplassen. Den er formuleringsevnen. Kunnskapen ligger i dokumentene deres, og den kan byttes ut, oppdateres og slettes uten at noe må trenes på nytt. Det er en viktig forskjell både for ferskhet og for personvern: oppdaterer dere rutinen i dag, svarer assistenten etter den nye rutinen i morgen.
Hvordan finner assistenten riktig avsnitt?
Først deles dokumentene opp
Et 80 siders kvalitetshåndbok er ubrukelig som én bit. Den deles derfor i mindre biter, helst langs dokumentets egen struktur — kapittel, underkapittel, avsnitt. Bitene får litt overlapp, slik at en setning som står på grensen mellom to biter ikke mister sammenhengen sin. Hver bit får med seg hvor den kommer fra: dokumentnavn, versjon, kapittel og sidetall.
Så gjøres bitene søkbare på mening
Hver bit oversettes til en tallrekke som representerer meningen i teksten. Spørsmålet oversettes på samme måte, og systemet finner bitene som ligger nærmest. Det er derfor «kan jeg levere tilbake en vare som er åpnet?» treffer et avsnitt om «retur av brutt forsegling», selv om ingen av ordene er like.
Og kombineres med vanlig ordsøk
Meningssøk alene er sårbart for det som må treffe eksakt: artikkelnumre, paragrafer, produktkoder og navn. Derfor kjører vi meningssøk og ordsøk parallelt og slår resultatene sammen. Til slutt rangeres kandidatene en gang til, slik at det er de ti–femten mest relevante bitene som går videre — ikke de hundre som var i nærheten.
Hvordan blir kildehenvisningen riktig?
Hver bit som hentes fram har en id. Når modellen får bitene, får den også beskjed om at svaret bare skal bygges på dem, og at hver påstand skal merkes med id-en til biten den kom fra. Når svaret settes sammen i grensesnittet, byttes id-ene ut med klikkbare kilder: dokumentnavn, kapittel, sidetall og lenke rett til stedet i dokumentet.
Det gjør kildehenvisningen etterprøvbar, ikke dekorativ. Brukeren kan klikke, lese avsnittet selv og se om assistenten leste det riktig. I praksis er dette den viktigste tillitsmekanismen vi har: folk begynner å stole på assistenten først når de har sjekket den noen ganger og funnet ut at den stemmer.
En nyttig tilleggsregel er å vise kildene selv når svaret er kort. Et svar uten kilde skal skille seg tydelig ut i grensesnittet, fordi det betyr at assistenten svarte på generelt grunnlag — og da er det brukerens jobb å være skeptisk.
Hva skjer når svaret ikke finnes i dokumentene?
Da skal assistenten si at den ikke vet. Det høres selvsagt ut, men det er et valg som må bygges inn: den får en terskel for hvor godt de hentede bitene må treffe før den svarer i det hele tatt, og en instruks om at fravær av kilde betyr fravær av svar.
Deretter må det finnes et neste steg. Hos oss sendes samtalen videre til et menneske, med spørsmålet og det assistenten fant, slik at den som overtar slipper å begynne på null. Spørsmål som havner der er samtidig den beste innholdslisten dere kan få: de forteller nøyaktig hvilke rutiner som mangler, er utdaterte eller er skrevet så uklart at ingen finner fram.
Hvordan hindrer kildehenvisning at assistenten dikter?
En språkmodell som svarer fritt fra hukommelsen kan formulere noe som høres riktig ut uten å være det. Når svaret i stedet må bygges av hentet tekst, og hver påstand må kunne knyttes til en bit, forsvinner mesteparten av rommet for det. Det som blir igjen er feil av en helt annen type — og de er lettere å oppdage.
- Riktig kilde, feil tolkning: assistenten fant rett avsnitt, men leste det upresist. Fanges ved at brukeren kan klikke og lese selv
- Utdatert kilde: dokumentet i arkivet er tre år gammelt. Fanges ved at versjon og dato vises sammen med kilden
- Motstridende kilder: to rutiner sier ulike ting. Da skal assistenten vise begge og si fra, ikke velge
Alle tre er egentlig dokumentproblemer som allerede fantes. Assistenten skaper dem ikke — den gjør dem synlige.
Hvem får se hva?
Tilgangsstyring må ligge før søket, ikke etter. Hver bit arver rettighetene til dokumentet den kom fra, og søket kjøres bare mot de bitene brukeren har lov til å se. Filtrerer man i stedet svaret i etterkant, har man allerede latt modellen lese noe den ikke skulle sett — og det er en lekkasje uansett hvor pent svaret ser ut.
I praksis betyr det at assistenten arver rollemodellen fra systemet den står i. Er den bygget som en komponent i skreddersydd programvare, er dette allerede løst. Er den koblet rett på et filarkiv, må rettighetene speiles eksplisitt — og de må holdes i takt når noen slutter eller bytter rolle.
Hva må dokumentene ha for at dette skal fungere?
- Én gjeldende versjon. Ligger «rutine_v4_endelig_NY.docx» ved siden av «rutine_v4.docx», henter assistenten fra begge
- Tekst, ikke bilder. Skannede PDF-er må gjennom tekstgjenkjenning først, ellers finnes innholdet ikke for søket
- Overskrifter som betyr noe. Struktur i dokumentet blir til presise biter — og dermed presise kilder
- En eier per dokument. Noen må kunne svare på om innholdet fortsatt gjelder
Ligger kildene spredt i flere fagsystemer, er det systemintegrasjon som må på plass først. Det er som regel den delen av jobben som tar tid — selve assistenten er raskt oppe når kildene er ryddige.
Hvordan måler dere om svarene faktisk er gode?
Lag et testsett på 30–50 ekte spørsmål med fasit, hentet fra e-post og henvendelser dere allerede har fått. Kjør det på nytt hver gang noe endres. Da ser dere om en justering gjorde det bedre eller bare annerledes.
- Treffrate: hvor ofte lå riktig avsnitt blant bitene som ble hentet?
- Andel svar med kilde: går den ned, svarer assistenten for fritt
- Eskaleringsrate: hvor ofte havner samtalen hos et menneske, og på hvilke temaer?
- Tilbakemelding fra brukerne: tommel opp eller ned per svar, koblet til spørsmålet og kildene
CSUB, som leverer subsea-konstruksjoner fra Haugalandet, hadde prosjektinformasjonen spredt i regneark og dokumentmapper. Vi samlet tallene i ett dashbord og satte en chatassistent oppå arkivet. Verdien lå ikke i at assistenten kunne prate — den lå i at spørsmål som før krevde at noen husket hvilket ark svaret sto i, nå kunne besvares med en kilde å klikke på.
