Spring til indhold
AI Ordbog

AI Ordbog

Cosine similarity

Et matematisk mål for hvor ens to vektorer (embeddings) er i retning.

Kristian Primdal Skrevet og redigeret af Kristian Primdal · Sidst opdateret 18. marts 2026

Indhold

Hvad er cosine similarity?

Cosine similarity er en måde at måle hvor ens to vektorer (lister af tal) er. Det er det mål AI-systemer bruger til at afgøre om to tekster, billeder eller andre data har lignende betydning.

Forestil dig to pile der peger ud fra samme punkt. Hvis de peger i præcis samme retning, er de identiske. Cosine similarity er 1. Hvis de peger i helt modsatte retninger, er cosine similarity -1. Hvis de peger vinkelret på hinanden (90 grader), er cosine similarity 0. Ingen sammenhæng.

Når du søger i en AI-drevet søgemaskine, konverteres din søgning og alle dokumenter til vektorer (embeddings). Cosine similarity beregnes mellem din søge-vektor og hver dokument-vektor. De dokumenter med højest cosine similarity (de der peger mest i samme retning som din søgning) returneres som resultater.

Hvordan fungerer det?

Den intuitive forklaring

Cosine similarity måler vinklen mellem to vektorer, ikke afstanden. Det betyder at den fokuserer på retning, ikke længde.

Tænk på to anmeldelser:

  • Anmeldelse A: “Fantastisk film, elsker den!”
  • Anmeldelse B: “Fantastisk, fantastisk, fantastisk film, elsker den virkelig!”

Anmeldelse B er længere og mere intens, men retningen er den samme. Begge er positive filmanmeldelser. Cosine similarity fanger dette: retningen (positiv anmeldelse om film) er ens, selvom længden (intensiteten) er forskellig.

Formlen

Cosine similarity mellem to vektorer A og B beregnes som:

cosine_similarity(A, B) = (A · B) / (|A| × |B|)

Hvor:

  • A · B er prikproduktet (dot product). Gang hvert par af tal sammen og summér.
  • |A| og |B| er vektorernes længder (normer).

Et simpelt eksempel

To vektorer med kun 3 dimensioner (i virkeligheden har embeddings hundredvis):

  • Vektor A: [0.8, 0.2, 0.5] (repræsenterer “hund i parken”)
  • Vektor B: [0.7, 0.3, 0.4] (repræsenterer “kat i haven”)
  • Vektor C: [0.1, 0.9, 0.0] (repræsenterer “aktiemarkedet faldt”)

Cosine similarity mellem A og B vil være høj (begge handler om dyr udendørs). Mellem A og C vil den være lav (helt forskellige emner).

Skalaen

ScoreBetydningEksempel
1.0Identisk betydningSamme tekst eller perfekte synonymer
0.8-0.99Meget ens“Hunden løber” vs. “En hund der render”
0.6-0.8Relateret“Hunden løber i parken” vs. “Katten leger i haven”
0.3-0.6Svagt relateret“Hunden løber” vs. “Motion er sundt”
0.0-0.3Ingen sammenhæng“Hunden løber” vs. “Aktiemarkedet faldt”
< 0Modsatte betydningerSjældent i praksis med moderne embeddings

I praksis med moderne embedding-modeller ligger de fleste scores mellem 0.3 og 1.0. Scores under 0.3 indikerer typisk ingen meningsfuld sammenhæng.

Hvorfor cosine similarity og ikke afstand?

Der findes flere måder at sammenligne vektorer. Cosine similarity er den foretrukne metode for tekst-embeddings af flere grunde:

Cosine similarity (vinkel)

  • Måler retning, ignorerer længde.
  • To dokumenter om det samme emne scorer højt uanset om det ene er et afsnit og det andet er en hel bog.
  • Det mest brugte mål for tekst-embeddings.

Euklidisk afstand (lige linje)

  • Måler den direkte afstand mellem to punkter.
  • Påvirkes af vektorernes længde. Et langt dokument og et kort dokument kan have stor afstand selvom de handler om det samme.
  • Bruges i nogle use cases, men kræver normaliserede vektorer for at fungere godt med tekst.

Dot product (prikprodukt)

  • Hurtigere at beregne end cosine similarity (ingen normalisering).
  • Bruges ofte internt i AI-modeller og i optimerede systemer.
  • Hvis vektorerne allerede er normaliserede (længde 1), giver dot product og cosine similarity identiske resultater.

Hvor bruges cosine similarity?

Semantisk søgning

  1. Alle dokumenter konverteres til embeddings.
  2. Brugerens søgning konverteres til en embedding.
  3. Cosine similarity beregnes mellem søge-embeddingens vektor og alle dokument-embeddings.
  4. Dokumenter med højest score returneres. De der ligner søgningen mest i betydning.

RAG (Retrieval-Augmented Generation)

  1. Virksomhedens dokumenter gemmes som embeddings i en vector database.
  2. Et spørgsmål konverteres til en embedding.
  3. Vector databasen bruger cosine similarity til at finde de mest relevante dokumentchunks.
  4. Chunks med højest score sendes som kontekst til sprogmodellen.

Duplikat-detektion

  1. Beregn embeddings for alle dokumenter.
  2. Find par med cosine similarity over 0.95.
  3. Disse er sandsynlige duplikater. Selvom ordlyden er forskellig.
  4. Bruges til at rydde op i databaser, finde plagiater og fjerne gentagelser.

Anbefalingssystemer

  1. Brugerens præferencer repræsenteres som en vektor.
  2. Produkter, film eller artikler repræsenteres som vektorer.
  3. Cosine similarity finder de produkter der ligner brugerens præferencer mest.
  4. Netflix bruger lignende teknikker til at anbefale film baseret på din seerhistorik.

Klassifikation

  1. Beregn embeddingens vektor for en ny tekst (f.eks. en kundehenvendelse).
  2. Sammenlign med embeddings for kendte kategorier.
  3. Tildel teksten den kategori den ligner mest (højest cosine similarity).
  4. Eksempel: en email med høj cosine similarity til “returneringer”-kategoriens embedding klassificeres automatisk som en returneringshenvendelse.

Clustering

  1. Beregn cosine similarity mellem alle par af dokumenter.
  2. Dokumenter med høj indbyrdes lighed grupperes sammen.
  3. Resultat: automatisk opdeling af tusindvis af dokumenter i meningsfulde temaer.

Cosine similarity i praksis

Eksempel: kundesupport-routing

En virksomhed modtager tusindvis af henvendelser dagligt:

  1. Reference-embeddings oprettes for hver afdeling: “Faktura og betaling,” “Teknisk support,” “Returneringer,” “Klager.”
  2. Ny henvendelse ankommer: “Min regning ser forkert ud, jeg er blevet opkrævet dobbelt.”
  3. Cosine similarity beregnes mod alle afdelinger:
    • Faktura og betaling: 0.87
    • Klager: 0.52
    • Teknisk support: 0.21
    • Returneringer: 0.15
  4. Routing: Henvendelsen sendes automatisk til Faktura og betaling (højest score).

Eksempel: plagiat-detektion

  1. En studerendes opgave konverteres til en embedding.
  2. Cosine similarity beregnes mod en database af eksisterende opgaver og kilder.
  3. Hvis nogen chunk har cosine similarity > 0.92 med en eksisterende kilde, flagges det som potentielt plagiat.
  4. Underviseren kan gennemgå de flaggede sektioner manuelt.

Thresholds: hvornår er noget “ens nok”?

At vælge den rigtige grænseværdi (threshold) for cosine similarity afhænger af use casen:

  1. Duplikat-detektion: > 0.95. Kun næsten identiske dokumenter.
  2. Semantisk søgning: > 0.7. Dokumenter med tydelig relevans.
  3. Bred søgning: > 0.5. Dokumenter der er relaterede men ikke nødvendigvis direkte relevante.
  4. Anbefalinger: > 0.6. Produkter der ligner brugerens præferencer.

Disse tal varierer med embedding-modellen. Forskellige modeller producerer scores i forskellige intervaller, kalibrér altid mod dit specifikke datasæt.

Begrænsninger

  1. Ingen forståelse af negation. “Jeg elsker denne film” og “Jeg hader denne film” kan have relativt høj cosine similarity fordi de begge handler om en holdning til en film. Embedding-modellen skal fange negationen. Ikke alle gør det lige godt.
  2. Afhænger af embedding-kvalitet. Cosine similarity er kun så god som de embeddings den sammenligner. Dårlige embeddings giver meningsløse similarity-scores.
  3. Domænespecificitet. En embedding-model trænet på generel tekst kan give dårlige scores for højt specialiseret fagsprog (medicin, jura, teknik).
  4. Kontekstlængde. Meget korte tekster (et enkelt ord) og meget lange tekster (en hel bog) giver embeddings af forskellig kvalitet, hvilket påvirker similarity-scoren.

Cosine similarity er AI’s definition af “ligner” Hver gang et AI-system skal afgøre om to ting er relaterede (om et dokument er relevant for en søgning, om en film ligner en du kan lide, om en email hører til en bestemt kategori) bruger det typisk cosine similarity. Det er et simpelt matematisk mål, men det er fundamentet for semantisk søgning, RAG, anbefalinger og meget mere. At forstå cosine similarity er at forstå hvordan AI “tænker” om lighed og relevans.


FAQ

Hvad er cosine similarity?

Cosine similarity er et matematisk mål der beregner hvor ens to vektorer (embeddings) er ved at måle vinklen mellem dem. Resultatet er en score fra -1 (modsatte) til 1 (identiske). Det er det primære mål for semantisk lighed i AI-applikationer som søgning, RAG og anbefalingssystemer.

Hvad er forskellen på cosine similarity og euklidisk afstand?

Cosine similarity måler vinklen (retningen) mellem to vektorer og ignorerer deres længde. Euklidisk afstand måler den direkte afstand mellem to punkter og påvirkes af længde. For tekst-embeddings er cosine similarity typisk bedre fordi to tekster om samme emne bør score højt uanset tekstlængde.

Hvad er en god cosine similarity score?

Det afhænger af use casen og embedding-modellen. Generelt: over 0.8 indikerer stærk lighed, 0.6-0.8 er relateret, under 0.5 er svagt relateret. For duplikat-detektion bruges typisk > 0.95, for semantisk søgning > 0.7.

Hvorfor bruger AI cosine similarity i stedet for andre mål?

Cosine similarity fokuserer på retning og ignorerer længde, hvilket gør det robust over for forskelle i tekstlængde og intensitet. Det er hurtigt at beregne, intuitivt at fortolke (0 = ingen lighed, 1 = identisk) og fungerer godt med højdimensionelle embeddings.


Relaterede termer