Cosinusgelijkenis is een manier om te meten hoeveel twee stukken tekst op elkaar lijken, door de richting van de cijferreeksen die ze voorstellen te vergelijken. Zodra woorden of zinnen zijn omgezet in embeddings, wordt elke tekst een lange lijst getallen. Cosinusgelijkenis kijkt naar de hoek tussen die twee lijsten: een kleine hoek betekent een vergelijkbare betekenis, een grote hoek betekent dat ze niets met elkaar te maken hebben.

Stel je twee pijlen voor vanaf hetzelfde startpunt. Wijzen ze bijna dezelfde kant op, dan liggen de teksten qua betekenis dicht bij elkaar. Wijst de een naar het noorden en de ander naar het oosten, dan hebben ze geen verband. Het slimme is dat de lengte niet meetelt, alleen de richting. Een korte notitie en een lange alinea over hetzelfde onderwerp scoren dus toch als een bijna perfecte match. Precies dit drijft semantisch zoeken aan, waar resultaten op betekenis worden gerangschikt in plaats van op gedeelde trefwoorden.

Je rekent dit zelden met de hand uit. Een vectordatabase bewaart de embeddings en doet de vergelijking voor je, met de beste matches terug binnen milliseconden. De score, meestal tussen 0 en 1, wordt de relevantievolgorde die je gebruikers zien.

Waarom kies je de hoek boven de gewone afstand? Twee antwoorden gaan over hetzelfde idee, maar het ene is drie keer zo lang. Meet je in rechte lijn, dan lijkt het lange antwoord ver weg, puur omdat het meer woorden bevat. Cosinusgelijkenis negeert dat. Het kijkt alleen naar welke kant elke tekst op leunt, zodat de lengte de uitkomst niet meer vertekent. Juist die eigenschap maakt het de standaardmethode voor chatbots, supportzoekfuncties en aanbevelingen. Kies je een slordige formule, dan krijgt een klant die ‘mijn abonnement opzeggen’ typt een pagina over het afzeggen van een afspraak. Kies je de juiste, dan komt het echt passende artikel bovenaan.

Bij TopDevs gebruiken we cosinusgelijkenis in de zoek- en AI-functies die we bouwen, zodat een vraag wordt beantwoord met de echt relevante inhoud in plaats van met wat toevallig een woord deelt.