Hva er en embedding?
En embedding er betydningen i en tekst gjort om til en liste med tall, en vektor, der tekster med lignende betydning havner nær hverandre. Det lar datamaskiner sammenligne betydning i stedet for eksakte ord. Embeddings brukes til semantisk søk, RAG og duplikatdeteksjon, og lagres ofte i en vektordatabase.
En embedding er et av de begrepene som høres mer komplisert ut enn det er. I bunn og grunn er det en måte å gjøre om tekst til en liste med tall på slik at betydningen blir med. Det lar en datamaskin sammenligne hva tekster faktisk handler om, ikke bare hvilke bokstaver de inneholder, og det er motoren bak moderne søk og RAG.
Betydning som tall
Tenk deg at hvert tekststykke får en lang liste med tall knyttet til seg, en såkalt vektor. Tallene er valgt slik at de fanger meningsinnholdet i teksten. Det sentrale er hva som skjer når man sammenligner to slike lister: Tekster som betyr omtrent det samme, får vektorer som ligger nær hverandre, mens tekster om helt forskjellige ting havner langt fra hverandre.
Et intuitivt eksempel gjør det tydelig. Ordene «faktura» og «regning» havner nær hverandre fordi de betyr nesten det samme. «Faktura» og «ferie» havner langt fra hverandre fordi de handler om vidt forskjellige ting. Datamaskinen forstår ikke ordene slik et menneske gjør, men avstanden mellom vektorene blir et mål på hvor like betydningene er.
Det er hele grunnideen: betydning oversatt til tall, der nærhet betyr likhet. Man trenger ikke å forstå hvordan tallene regnes ut for å forstå hva de brukes til.
Hva embeddings brukes til
Når tekst først kan sammenlignes på betydning, åpner det seg flere bruksområder. Tre er særlig vanlige:
| Bruk | Hva embeddings gjør mulig |
|---|---|
| Semantisk søk | Finne dokumenter ut fra betydning: «regning» matcher en tekst om «faktura» |
| RAG | Plukke ut de riktige dokumentene som en språkmodell skal få før den svarer |
| Duplikatdeteksjon | Oppdage tekster som betyr det samme, selv om formuleringen er ulik |
Semantisk søk er kanskje det tydeligste. Et vanlig søk krever at brukeren gjetter riktig ord. Et søk bygd på embeddings finner frem også når dokumentet uttrykker det samme med andre ord. Det er forskjellen mellom å lete etter eksakte bokstaver og å lete etter mening.
RAG bygger direkte på dette. Når en språkmodell skal svare ut fra deres egne dokumenter, brukes embeddings til å finne nettopp de tekststykkene som er relevante for spørsmålet, slik at modellen får riktig grunnlag servert. Duplikatdeteksjon, til slutt, lar dere finne poster som egentlig handler om det samme, selv om de er formulert ulikt, og det er nyttig når man rydder i registre og kunnskapsbaser.
Forholdet til vektordatabaser
Et naturlig oppfølgingsspørsmål er hvor alle disse vektorene tar veien. Svaret er som oftest en vektordatabase, en database bygd for å lagre embeddings og raskt finne vektorene som ligger nærmest et gitt spørsmål. Dere lager embeddings for dokumentene deres, legger dem i vektordatabasen, og den tar seg deretter av selve likhetssøket på en effektiv måte, også når det er tusenvis av dokumenter.
For en beslutningstaker holder det å forstå kjeden: Tekst blir embeddings, embeddings lagres i en vektordatabase, og sammen gjør de det mulig å søke og resonnere på betydning. Det er grunnlaget under de fleste løsninger der AI skal arbeide med deres egne tekster.
Hvordan embeddings lages, og et viktig forbehold
Selve omgjøringen gjøres av en embedding-modell, en egen AI-modell som bare er trent til å oversette tekst til vektorer. Dere mater inn et tekststykke og får tilbake vektoren for det. Det er en rask og relativt billig operasjon sammenlignet med å la en stor språkmodell generere tekst, og det er en av grunnene til at semantisk søk skalerer godt også for store mengder dokumenter.
Ett forbehold er verdt å nevne. Embeddings fanger betydning påfallende godt, men de forstår ikke alt. Ironi, svært spesifikk fagterminologi eller nyanser som krever bakgrunnskunnskap, kan gå tapt. Kvaliteten avhenger også av hvilken embedding-modell som brukes, og hvor godt den passer til språket og fagfeltet deres. For tekst på norsk og bransjespesifikke begreper er det verdt å teste på virkelige eksempler i stedet for å forutsette at en hvilken som helst modell holder. Vil du vite hvordan dette kan brukes hos dere, kan du lese mer om arbeidet vårt med AI eller ta kontakt.
Ofte stilte spørsmål
Hva er en embedding, enkelt forklart?
Det er en måte å gjøre om tekst til tall på slik at betydningen blir bevart. Hver tekst får en liste med tall, en vektor, og det fine er at tekster som betyr omtrent det samme, får vektorer som ligger nær hverandre. Datamaskinen kan da sammenligne betydning i stedet for bare å matche eksakte ord mot hverandre.
Hva skiller det fra å søke på nøkkelord?
Nøkkelordsøk leter etter eksakte ordtreff. Embeddings fanger betydning, så et søk på «faktura» kan finne et dokument som handler om «regning», selv om ordet faktura ikke forekommer. Det gjør søket mye mer treffsikkert når brukere og dokumenter beskriver det samme med ulike ord.
Hva brukes embeddings til?
Først og fremst tre ting: semantisk søk, der man finner frem basert på betydning i stedet for eksakte ord, RAG, der de riktige dokumentene hentes inn før en språkmodell svarer, og duplikatdeteksjon, der tekster som betyr det samme, kan finnes selv om formuleringen er ulik. Felles for dem er at de bygger på å sammenligne avstanden mellom vektorer.
Hvordan henger embeddings sammen med vektordatabaser?
En vektordatabase er bygd for å lagre embeddings og raskt finne vektorene som ligger nærmest en gitt vektor. Når dere har laget embeddings for dokumentene deres, legger dere dem i en vektordatabase, og den tar seg deretter av selve likhetssøket på en effektiv måte, også når dokumentene er mange.
Må man forstå matematikken bak for å bruke embeddings?
Nei. Det holder å forstå ideen: Tekst blir tall som fanger betydning, og nærhet mellom tallene tilsvarer likhet i betydning. Selve utregningen tar en ferdig embedding-modell seg av. Som kunde holder det å vite hva teknologien gjør og hvilke problemer den løser, ikke hvordan vektorene beregnes i detalj.