Test av KI-basert chat i Digitalarkivet
For et par år siden ble ChatGPT offentlig tilgjengelig, og det vi fikk prøve virket nesten litt… magisk? Plutselig var det mulig å kommunisere med en datamaskin med naturlig språk, og få fornuftige svar, til og med på norsk! Brukergrensesnittet minnet mye om chatbotene vi er vant med fra mange tjenester på nettet, men med KI-genererte svar føltes det nesten som at man kommuniserte med et menneske: Du kunne stille oppfølgingsspørsmål, be om enklere forklaringer eller flere detaljer.
Kanskje en slik type KI-chat kunne være en være en fin måte å utforske og forstå arkivinnhold på, som et alternativ til tradisjonelt søk eller å få hjelp av en saksbehandler hos Arkivverket? Mange kan oppleve at arkivene kan være vanskelig å finne frem i, samtidig som arkivene inneholder mye materiale som er viktig eller interessant for store deler av befolkningen.
Men så var det det med fornuftige svar, da. Helt fra starten var det åpenbart at ChatGPT og tilsvarende løsninger kunne komme med svar som var helt feil, med samme skråsikkerhet som riktige svar. Vi sier gjerne at den hallusinerer når den svarer feil. Dette er et stort problem med denne teknologien – du må egentlig dobbeltsjekke alle svar du får – og det sier også litt om måten slike KI-modeller utvikles på.
Bak KI-chattene ligger en stor språkmodell (LLM, eller large language model). Disse lages (eller "trenes") ved å analysere store mengder tekst, i praksis store deler av internett. Disse modellene beregner (eller "predikerer") hva det neste ordet i svaret skal være. Det ødelegger kanskje litt av den magiske følelsen, men ChatGPT og tilsvarende løsninger er i bunn og grunn bare anvendt statistikk. Og hvis du spør om ting som er dårlig representert i treningsdataene, blir det statistisk grunnlag for å predikere ordene dårligere, og du kan få oppdiktede svar. Det er også verdt å tenke på at KI-modellene ikke forholder seg til virkeligheten direkte, kun til tekster som beskriver virkeligheten. KI-modellen vet altså ikke selv om det den svarer er galt eller riktig.
Ofte inkluderer treningsdataene svært mye av tilgjengelig informasjon, men likevel vil fakta, meninger, tjenester og produkter som er viktige for f.eks. Digitalarkivet og arkivdomenet ikke være en del av det modellen "vet". Det kan være fordi det er informasjon som er privat eller skjult, fordi den ikke anses som viktig nok til å inkludere eller fordi den er for ny. Hvis vi brukte f.eks. ChatGPT for å finne informasjon i Digitalarkivet, vil den sjelden kunne gi riktige svar, samtidig som det er en fare for at svarene den gir, faktisk høres fornuftige ut.
Tillit til arkivene er svært viktig. Man må kunne stole på at det man finner er riktig, og at man finner det man trenger, og da passer det dårlig med løsninger som kan dikte opp opplysninger. Det er vanskelig å hindre hallusinasjoner i en KI-modell, men "retrieval-augmented generation" – eller RAG – er en måte å komme rundt problemet på.
RAG vil helt enkelt si at systemet kan basere svar på andre kilder enn de som modellen er trent på, slik at kunnskapshullene i modellen tettes. Det blir omtrent som å gi KI-modellen jukselapper. Det er fortsatt KI-modellen som skriver svarene, men den har altså tilgang til ekstra informasjon som den kan basere svarene på.
1. Hente informasjon
Basert på informasjon i ulike databaser, kunnskapssamlinger, ontologier, dokumenter og bøker, lager man en samling over små kunnskapsbiter i form av "embeddings". Embeddings er et format som gjør at vi maskinelt kan finne likheter i betydning (semantisk) mellom f.eks. ulike tekstsnutter. Når vi da får inn et spørsmål fra brukeren og gjør denne om til en embedding, kan vi gjøre et semantisk søk og finne de tekstbitene som er likest i betydning til det brukeren spør om.
2. Generere svar
Brukerens spørsmål og de relevante bitene som har blitt funnet, sendes som en pakke til en generativ KI-modell, som GPT, Claude, Mistral eller LlaMA, som lager et svar basert pakken den har fått. På denne måte kan vi sikre at KI-en har fått opplysningene den trenger for å gi et godt svar. Noe som er viktig i valg av modell, er at den er god til å ta instruksjoner fra oss. I pakken vi sender legger vi nemlig til en hel masse beskjeder til modellen om hva den skal gjøre og ikke gjøre. Her finnes det et stort spenn av forskningsbaserte teknikker for å gi disse beskjedene på best mulig måte.
Denne teknologien har Arkivverket testet ut i en proof of concept (poc). Det er enkelt å sette opp en grunnleggende RAG-løsning, men for å få testet ut om RAG faktisk kan løse våre hypoteser om behov og utfordringer, har vi gått videre og laget en mer avansert og modulær RAG-arkitektur. Her har vi tatt i bruk ulike teknikker og algoritmer basert på forskning og det som rører seg i RAG-verdenen på hvert av de ulike stegene i prosessen, for å sørge for et mest mulig pålitelig og utfyllende svar til brukeren basert på våre data.
Poc-en består av to løsninger, som til sammen har latt oss teste ut RAG på flere typer innhold:
Den ene løsningen inneholder materiale om arkivkunnskap, som veiledninger og hjelpetekster. Dette kan være svært nyttig for brukere som har dårlig kjennskap til arkivene og som ikke helt vet hvordan de skal komme i gang med å finne informasjon.
Den andre inneholder to vidt forskjellige typer digitalisert arkivmateriale, henholdsvis arkiver fra Alexander Kielland-ulykken og dagbøker fra reindriftsforvaltningen.
En fordel med RAG er at det er relativt enkelt og billig å innarbeide mer informasjon, da dette skjer ved å oppdatere søket. Uten RAG ville vi vært nødt til å trene nye versjoner av selve KI-modellen for å oppdatere den med ny informasjon, noe som er langt mer ressurskrevende.
Det er et viktig poeng at løsning skal kjøre på våre egne systemer, heller enn at vi kobler oss på eksterne tjenester. Det er viktig at vi både har kontroll på teknologien vi bruker og på datagrunnlaget som legges inn i systemet. Det å kunne velge en modell som fungerer godt på norsk, er viktig, og vi bør kunne bytte ut KI-modeller hvis det f.eks. dukker opp en ny som fungerer bedre til vårt bruk. Vi bør også ha mulighet til å velge teknologi ut ifra økonomiske faktorer.
Poc-en inkluderer også et chattegrensesnitt, som du selv kan teste ut ved å klikke på lenkene nederst i artikkelen. I menyen til venstre kan du justere flere aspekter ved hvordan spørsmålene blir behandlet og hva slags svar du får, så her er det bare å leke seg!
Det er to momenter til som er verdt å legge merke til, som begge er viktige for å skape tillit til resultatene:
I tillegg til at løsningen svarer på spørsmål, gir den også en lenke til originalkildene, slik at brukeren kan få bekreftet svaret eller bla videre i originalkilden hvis hen ønsker å utforske innholdet mer.
Løsningen forklarer at den ikke kan svare hvis brukeren spør om noe som den ikke har informasjon om, i stedet for å hallusinere frem feil svar.
Poc-en har vist oss at en chatteløsning med RAG i bunnen har mange fordeler:
Brukeren får beskjed hvis systemet ikke vet svaret, heller enn at løsningen dikter opp et svar.
Brukeren kan benytte naturlig språk, og skrivefeil og dårlige formuleringer blir ofte forstått.
Systemet vil forstår betydningen av det brukeren spør om, og kan derfor gi svar som kan være nyttige for brukeren, selv om det ikke samsvarer i språk. Den kan også gi svar ut fra informasjon som er relatert til brukerens spørsmål i større grad en f.eks. et leksikalsk søk.
Brukeren kan ha en dialog med systemet, og for eksempel stille oppfølgingsspørsmål eller be om presiseringer.
Brukeren får lenker til originalkildene, slik at det lett å verifisere svarene hen får.
Vi ser også noen utfordringer ved en slik løsning:
En slik avansert RAG-arkitektur er avansert og ressurskrevende å lage. Det kan tenkes at det finnes andre løsninger som gir noen av de samme gevinstene.
Svarene man får er basert på arkivmateriale som kan inneholde utrykk og holdninger som er foreldede eller støtende. Slik utrykk og holdninger kan dermed også finne veien inn svarene som chatboten gir. Brukere er nok forberedt på at eldre materiale inneholder språk som vi ikke vil brukt i dag, men det kan virke støtende eller underlig hvis slikt språk benyttes i en nyskrevet tekst. Det finnes teknikker for å minimere dette problemet som vi kan ta i bruk, men man vil neppe klare å eliminere det helt.
Og selv om RAG reduserer faren for oppdiktede svar betraktelig, er det ikke helt en vanntett metode. Den generative modellen som skal formulere svaret, kan fortsatt klare å hallusinere innhold som ikke var med i informasjonsbitene som svaret skal baseres på. (https://arstechnica.com/ai/2024/06/can-a-technology-called-rag-keep-ai-models-from-making-stuff-up)
Vi har et godt grunnlag som kan peke ut noen retninger for videre utforsking, og vi er spente på hva vi kan lære av dere som prøver løsningen. Veien videre har ikke blitt avgjort, men selv om vi har laget en omfattende og grundig poc, er det mye arbeid igjen for å få en ferdig løsning. Hensikten med en poc er å finne ut om man er inne på noe, om konseptet er teknisk mulig å realisere. Det er langt unna et ferdig produkt, noe som betyr at det kan forekomme små og store feil. Merk også at datagrunnlaget som benyttes ikke nødvendigvis er oppdatert, og at f.eks. veiledningene man søker i kan inneholde feil.
Et kjent problem er at selv om kildehenvisningen blir riktig, så kan den en sjelden gang f.eks. starte nummereringen på 2 eller hoppe over 3. Årsaken er at det søket er mer optimistisk enn språkmodellen, og derfor finner flere mulige kilder til svar enn det språkmodellen faktisk finner svar i. Dermed kan listen over kilder ha litt underlig nummerering.
Her er lenker til de to løsningene, så du selv kan teste dem:
Veiledninger og arkivkunnskap:
https://rag.beta.arkivverket.no
Alexander Kielland-ulykken og dagbøker fra reindriftsforvaltningen:
https://rag-transcriptions.beta.arkivverket.no
Ta gjerne kontakt med oss på [email protected] hvis du har tilbakemeldinger eller er nysgjerrig på arbeidet vårt med KI, søk eller Digitalarkivet generelt.