Ga naar de hoofdinhoud
BVDNET
Arnhem · websites & automatiseringBVDNET
Kernconcepten

Embedding

Een embedding is een rij getallen die de betekenis van een tekst vastlegt, zodat software teksten met dezelfde betekenis vindt, ook als ze andere woorden gebruiken.

Ook bekend als: embeddings, vector embedding, word embedding, insluiting

Een embedding is een rij getallen die een AI-model maakt van een stuk tekst, zoals een zin of een productomschrijving. Teksten met een vergelijkbare betekenis krijgen vergelijkbare rijen, ook als ze geen woorden delen. Zo kan de zoekfunctie op een helppagina het artikel "Abonnement opzeggen" vinden voor een klant die intypt "hoe stop ik met betalen?".

Hoe ziet een embedding eruit?

Een embedding is een vector: een rij kommagetallen met een vaste lengte. Die lengte hangt af van het model: 384 getallen bij het open model all-MiniLM-L6-v2, en standaard 1.536 bij text-embedding-3-small en 3.072 bij text-embedding-3-large van OpenAI. Waar het om gaat, is de afstand tussen twee vectoren. Volgens de embeddingsgids van OpenAI wijst een kleine afstand erop dat twee teksten nauw verwant zijn, en een grote afstand dat ze dat niet zijn. De gebruikelijke maat is cosine similarity.

Waar komt het idee vandaan?

Een van de bekendste woordembeddings is word2vec. Mikolov e.a. (Google, 2013) berekenden woordvectoren uit zeer grote tekstverzamelingen en meldden dat eenvoudig rekenwerk erop werkt: vector("King") min vector("Man") plus vector("Woman") komt het dichtst uit bij vector("Queen"). De Illustrated Word2vec van Jay Alammar laat zien hoe dat werkt.

Latere modellen maken embeddings van hele zinnen. Sentence-BERT (Reimers en Gurevych, 2019) maakt zinsembeddings die je met cosine similarity kunt vergelijken. Het meest gelijkende paar vinden in 10.000 zinnen kostte met BERT, dat elk paar samen moet lezen, ongeveer 65 uur, en met Sentence-BERT ongeveer 5 seconden.

Hoe wordt een embeddingmodel getraind?

Moderne embeddingmodellen leren van paren teksten die bij elkaar horen. Voor zijn onderzoek naar embeddings gebruikte OpenAI (Neelakantan e.a., 2022) naast elkaar staande stukken tekst van internet als paren. De training trekt de vectoren van elk paar naar elkaar toe en duwt ze weg van de andere teksten in dezelfde batch (contrastive learning). De embeddings die dat opleverde, werkten zowel voor classificatie als voor semantisch zoeken.

Hoe gebruik je ze?

OpenAI noemt zoeken, clusteren, aanbevelingen, afwijkingen opsporen, diversiteit meten en classificeren als gangbare toepassingen. Voor semantisch zoeken en RAG zijn dit de stappen:

  1. Maak eenmalig een embedding van elk document of elke passage en sla de vectoren op in een vectordatabase.
  2. Maak van elke vraag een embedding met hetzelfde model. Vectoren van een ander model, of van een opnieuw getrainde versie van hetzelfde model, passen er niet bij (Hu e.a., 2022); de modellen hierboven leveren niet eens even lange rijen op.
  3. Geef de passages terug waarvan de vector het dichtst bij die van de vraag ligt.

Waar gaat het mis?

  • Embeddings nemen de vooroordelen uit hun trainingstekst over. Bolukbasi e.a. (2016) ontdekten dat word2vec-vectoren die op Google News waren getraind de analogie "man is to computer programmer as woman is to x" aanvulden met "homemaker" (huisvrouw).
  • Een gelijkenisscore is relatief. Wat als hoge score telt, verschilt per model, dus test elke drempelwaarde op je eigen data (zie cosine similarity).

Voorbeeld

Stel: het helpcentrum van een webshop heeft een artikel met de titel "Abonnement opzeggen", en een klant typt "hoe stop ik met betalen?". Zoeken op trefwoorden vindt niets, want de twee delen geen woorden: zoekspecialisten noemen dat probleem synonymie (Manning, Raghavan en Schütze). Met embeddings maakt de webshop eenmalig een embedding van elk helpartikel en van elke vraag die binnenkomt, en geeft de zoekfunctie de artikelen met de dichtstbijzijnde vectoren terug. Een chatbot kan dan antwoorden op basis van die artikelen. Of het juiste artikel bovenaan komt, hangt af van het model, dus test de webshop het met echte klantvragen.