{"licence":{"name":"CC BY-SA 4.0","spdx":"CC-BY-SA-4.0","url":"https://creativecommons.org/licenses/by-sa/4.0/","attribution":"Atlas, a bilingual technical dictionary (https://cmaintz.github.io/tech-atlas/)"},"id":"ai/embedding-model","url":{"en":"https://cmaintz.github.io/tech-atlas/en/terms/ai/embedding-model/","da":"https://cmaintz.github.io/tech-atlas/da/terms/ai/embedding-model/"},"term":{"en":"Embedding model","da":"Embedding-model"},"aka":{"en":["embedder"],"da":["embedder"]},"domain":["ai"],"cluster":"retrieval","layer":"model","status":"current","summary":{"en":"A model that reads a piece of text and gives back an embedding instead of writing an answer.","da":"En model, der læser et stykke tekst og giver en embedding tilbage i stedet for at skrive et svar."},"body":{"formal":{"en":"A neural network, usually a transformer, trained so that texts close in meaning come out as embeddings that score high on cosine similarity; it turns both stored documents and incoming questions into embeddings.","da":"Et neuralt netværk, som regel en transformer, der er trænet, så tekster med nær betydning kommer ud som embeddings, der scorer højt på cosinuslighed; det laver både gemte dokumenter og indkommende spørgsmål om til embeddings."},"plain":{"en":"Like a wine taster who marks every wine on the same flavour chart - light to heavy, sweet to dry - without ever telling you what the label says.","da":"Som en vinsmager, der sætter et kryds for hver vin på det samme smagsskema - let til tung, sød til tør - uden nogensinde at fortælle, hvad der står på etiketten."},"inPractice":{"en":"A developer at a Danish software house runs a pension fund's 3,000 help pages through an embedding model once, stores the results, and runs each member's question through the same model when they search.","da":"En udvikler i et dansk softwarehus kører en pensionskasses 3.000 hjælpesider gennem en embedding-model én gang, gemmer resultaterne og kører hvert medlems spørgsmål gennem samme model, når der søges."},"whyItMatters":{"en":"Switching to a new one means redoing every stored embedding, since the numbers from two different models cannot be compared - and a model weak in Danish gives weak Danish search.","da":"Skifter man til en ny, skal alle gemte embeddings laves om, da tallene fra to forskellige modeller ikke kan sammenlignes - og en model, der er svag i dansk, giver svag dansk søgning."}},"deepDive":{"en":"Most retrieval embedding models are bi-encoders: the same transformer (or two towers) encodes query and document independently, and the per-token hidden states are pooled into one fixed-length vector, by mean pooling, the [CLS] token, or for decoder-based models the final token. Independence is the point, because document vectors can be computed once at indexing time and only the query needs encoding at search time. Output dimensions typically range from 384 to over 4,000. Models trained with Matryoshka representation learning (Kusupati et al., 2022) can be truncated to a prefix of their dimensions, trading accuracy for storage, provided the truncated vectors are renormalised.\n\nTraining is contrastive. Given a query and a relevant passage, an InfoNCE loss pushes their similarity above that of negatives: L = −log(exp(s(q, p⁺)/τ) / Σ exp(s(q, pᵢ)/τ)), where s is usually cosine similarity and τ a temperature. Other passages in the same batch serve as cheap \"in-batch negatives\", so large batches help, and mined hard negatives (passages that look relevant but are not) matter most for quality. Sentence-BERT (Reimers and Gurevych, 2019) showed that fine-tuning BERT in a siamese setup turned it into a usable similarity model; later families such as E5, BGE and GTE add a weakly supervised pretraining stage on hundreds of millions of mined text pairs before fine-tuning on labelled data. Many models are asymmetric and expect prefixes or instructions, such as \"query: \" and \"passage: \" for E5; omitting them at query time is a common, silent cause of poor recall. Since 2023, embedding models built on decoder-only LLMs have reached the top of public leaderboards, so the older rule that embedders are encoders is no longer reliable.\n\nMTEB (Muennighoff et al., 2023) evaluates models across task types such as retrieval, classification, clustering, reranking and semantic textual similarity in many languages, but leaderboard averages are English-heavy and can be inflated by training on benchmark-adjacent data. For Danish, the Scandinavian Embedding Benchmark (Enevoldsen et al., NeurIPS 2024) covers Danish, Swedish and Norwegian tasks and found notable gaps between models that MTEB averages did not reveal. The reliable test remains retrieval recall on a labelled sample of one's own queries and documents.\n\nOperationally, vectors from different models, or different versions of one model, live in incompatible spaces, so the model identifier and version should be stored with every vector, and a migration means re-embedding the corpus, often by dual-writing to a new index before cutting over. Embeddings are not anonymisation: Vec2Text (Morris et al., 2023) recovered 92 % of 32-token inputs exactly from their embeddings, so vectors derived from personal data should be treated as personal data. Neighbouring designs are learned sparse models such as SPLADE, which output vocabulary-weighted vectors for inverted indexes, and multi-vector models such as ColBERT, which keep one vector per token.","da":"De fleste embedding-modeller til søgning er bi-encodere: Den samme transformer (eller to tårne) koder forespørgsel og dokument uafhængigt af hinanden, og de skjulte tilstande pr. token samles til én vektor med fast længde ved mean pooling, via [CLS]-tokenet eller, for decoder-baserede modeller, via det sidste token. Uafhængigheden er pointen, for dokumentvektorerne kan beregnes én gang ved indeksering, og kun forespørgslen skal kodes ved søgning. Outputdimensionerne ligger typisk fra 384 til over 4.000. Modeller trænet med Matryoshka representation learning (Kusupati m.fl., 2022) kan afkortes til et præfiks af deres dimensioner og bytte nøjagtighed for lagerplads, forudsat at de afkortede vektorer normaliseres igen.\n\nTræningen er kontrastiv. Givet en forespørgsel og en relevant passage skubber et InfoNCE-tab deres lighed op over negativernes: L = −log(exp(s(q, p⁺)/τ) / Σ exp(s(q, pᵢ)/τ)), hvor s som regel er cosinuslighed og τ en temperatur. Andre passager i samme batch fungerer som billige \"in-batch negatives\", så store batches hjælper, og udvundne hårde negativer (passager, der ligner relevante, men ikke er det) betyder mest for kvaliteten. Sentence-BERT (Reimers og Gurevych, 2019) viste, at finjustering af BERT i en siamesisk opsætning gjorde den til en brugbar lighedsmodel; senere familier som E5, BGE og GTE tilføjer et svagt superviseret fortræningstrin på hundreder af millioner udvundne tekstpar før finjustering på mærkede data. Mange modeller er asymmetriske og forventer præfikser eller instruktioner, fx \"query: \" og \"passage: \" for E5; glemmer man dem ved forespørgslen, er det en almindelig og stille årsag til dårlig recall. Siden 2023 har embedding-modeller bygget på rene decoder-LLM'er ligget i toppen af offentlige leaderboards, så den gamle tommelfingerregel om, at embeddere er encodere, holder ikke længere.\n\nMTEB (Muennighoff m.fl., 2023) evaluerer modeller på tværs af opgavetyper som søgning, klassifikation, klyngedannelse, genrangering og semantisk tekstlighed på mange sprog, men leaderboard-gennemsnittene er tungt præget af engelsk og kan pustes op af træning på data tæt på benchmarkene. For dansk dækker Scandinavian Embedding Benchmark (Enevoldsen m.fl., NeurIPS 2024) danske, svenske og norske opgaver og fandt markante forskelle mellem modeller, som MTEB-gennemsnittene ikke viste. Den pålidelige test er stadig genfindingsrecall på et mærket udsnit af ens egne forespørgsler og dokumenter.\n\nI drift ligger vektorer fra forskellige modeller, eller forskellige versioner af samme model, i uforenelige rum, så modelidentifikator og version bør gemmes med hver vektor, og en migrering betyder nye embeddings for hele korpusset, ofte ved at skrive til et nyt indeks parallelt, før man skifter over. Embeddings er ikke anonymisering: Vec2Text (Morris m.fl., 2023) genskabte 92 % af input på 32 tokens præcist ud fra deres embeddings, så vektorer afledt af personoplysninger bør behandles som personoplysninger. Beslægtede designs er lærte sparse modeller som SPLADE, der giver vektorer vægtet over ordforrådet til inverterede indeks, og multivektormodeller som ColBERT, der beholder én vektor pr. token."},"edges":[{"type":"requires","to":"ai/embedding","confidence":"high","strength":"normal"},{"type":"requires","to":"ai/transformer","confidence":"high","strength":"normal"},{"type":"contrasts-with","to":"ai/large-language-model","why":{"en":"Both read text, but an embedding model returns a single list of numbers, while a large language model writes new text.","da":"Begge læser tekst, men en embedding-model returnerer én liste af tal, mens en stor sprogmodel skriver ny tekst."},"confidence":"high","strength":"primary"},{"type":"used-with","to":"ai/vector-database","why":{"en":"The embedding model makes the embeddings; the vector database keeps them and finds the closest ones later.","da":"Embedding-modellen laver embeddings; vektordatabasen gemmer dem og finder de nærmeste senere."},"confidence":"high","strength":"primary"},{"type":"used-with","to":"ai/encoder","why":{"en":"Most embedding models are encoders that turn a whole text into one list of numbers.","da":"De fleste embedding-modeller er encodere, der gør en hel tekst til én liste af tal."},"confidence":"medium","strength":"normal"}],"depth":2,"sources":[{"title":"Reimers & Gurevych (2019), Sentence-BERT - Sentence Embeddings using Siamese BERT-Networks","tier":"reference"},{"title":"Muennighoff et al. (2023), MTEB - Massive Text Embedding Benchmark","tier":"reference"},{"title":"Enevoldsen, Kardos, Muennighoff & Nielbo (2024), The Scandinavian Embedding Benchmarks - Comprehensive Assessment of Multilingual and Monolingual Text Embedding","url":"https://arxiv.org/abs/2406.02396","tier":"reference"},{"title":"Morris et al. (2023), Text Embeddings Reveal (Almost) As Much As Text","url":"https://arxiv.org/abs/2310.06816","tier":"reference"}],"draft":true}