Hvad betyder Cosine similarity?
Cosine similarity sammenligner vinklen mellem to vektorer ved at normalisere deres prikprodukt med vektorernes længder. For vektorer med en længde forskellig fra nul ligger værdien matematisk mellem minus ét og ét. Samme retning giver værdien ét.
I en AI-søgning repræsenterer vektorerne typisk tekst, som en embeddingmodel har kodet. En høj lighed kan pege på et nært forhold efter modellens repræsentation. Den siger ikke i sig selv, at dokumentet indeholder svaret, eller at oplysningerne er korrekte.
Målet skal passe til den valgte embeddingmodel og søgemotor. Nogle systemer bruger direkte cosinuslighed, mens andre anvender normaliserede vektorer og et ækvivalent prikprodukt. Den tekniske definition og eventuelle omregning af scorer skal være kendt, før en tærskel vælges.
Normalisering ændrer hvad sammenligningen lægger vægt på
Cosinuslighed fokuserer på retning frem for vektorlængde. Et almindeligt prikprodukt er ikke automatisk det samme, fordi dokumentvektorernes længde kan påvirke resultatet. Ved passende normalisering kan metoderne give samme rangering.
I en integration bør udvikleren kontrollere, om normaliseringen allerede sker i modellen eller indekset. Dobbelt antagelse eller manglende normalisering kan gøre en konfiguration anderledes end forventet. En nulvektor kræver desuden en bevidst håndtering, da den almindelige formel ikke har en defineret vinkel.
En lighedsscore er ikke en sikkerhedsprocent
En score på eksempelvis 0,8 betyder ikke 80 procents sandsynlighed for et korrekt svar. Fordelingen afhænger af model, tekster og opgave. En tærskel fra et andet indeks kan derfor være misvisende.
Fastlæg en grænse ved at undersøge kendte relevante og irrelevante par. Se på svære næsten-match, såsom samme emne med forkert produktversion. Ved modelskift eller større ændringer i materialet bør sammenligningen gentages, fordi en gammel tærskel ikke nødvendigvis har samme praktiske betydning.
Et eksempel fra praksis
En intern vidensbase indeholder både danske og engelske produktbeskrivelser. Teamet bruger en embeddingmodel, der er valgt til den relevante sprogopgave, og undersøger søgninger efter kendte afsnit.
Et højt match på en engelsk beskrivelse accepteres ikke alene på scoren, hvis spørgsmålet gælder en anden produktvariant. Testen omfatter derfor beslægtede, men forkerte varianter. En eventuel minimumsgrænse vælges ud fra disse eksempler sammen med en kontrol af produktmetadata, så semantisk nærhed og faktisk relevans ikke blandes sammen.
Typiske faldgruber
- En lighedsscore omtales som en procentvis sikkerhed for sandhed.
- Prikprodukt bruges som cosinuslighed uden passende normalisering.
- En fast tærskel genbruges efter skift af embeddingmodel.
Det skal I afklare
- Kontrollér lighedsmål, normalisering og scoreomregning.
- Afprøv både relevante par og overbevisende næsten-match.
- Vurdér tærskler igen ved ændring af model eller dokumentgrundlag.
Spørgsmål og svar
Er højere altid bedre?
Ved direkte cosinuslighed betyder højere værdi mere ens retning. Nogle tjenester returnerer en afstand eller omregnet score, så læs deres definition før rangeringen fortolkes.
Kan cosinuslighed forstå tekst alene?
Nej. Det er en matematisk sammenligning af vektorer. Den sproglige betydning afhænger af, hvordan embeddingmodellen har repræsenteret teksten.
Kilder og videre læsning
De tekniske begreber bygger på nedenstående kilder. Eksemplerne er illustrative og viser, hvordan I kan arbejde med emnet.
- scikit-learn: cosine_similarity ↗Normaliseret prikprodukt og matematisk definition.
- Faiss: MetricType and distances ↗Sammenhæng mellem cosinuslighed, normalisering og prikproduktsøgning.

