Ga naar de hoofdinhoud
BVDNET
Arnhem · websites & automatiseringBVDNET
Praktische Toepassingen

Semantisch zoeken

Semantisch zoeken vindt resultaten op wat een zoekvraag betekent in plaats van op de exacte woorden, zodat klanten en collega's in hun eigen woorden de juiste pagina vinden.

Ook bekend als: semantisch zoeken, vector search, dense retrieval, neural search

Semantisch zoeken vindt resultaten op betekenis in plaats van op overeenkomende woorden. Een klant die in een webshop "iets om droog te blijven op de fiets" typt, krijgt het waterdichte wielerjack te zien, hoewel geen van die woorden in de producttitel staat. Voor een bedrijf betekent dat: klanten vinden wat ze zoeken in hun eigen woorden. Een AI-chatbot gebruikt dezelfde stap om de juiste passage in je documenten te vinden.

Wat is het verschil met zoeken op trefwoorden?

Zoeken op trefwoorden legt de woorden van de zoekvraag naast de woorden in de documenten. Een veelgebruikte formule, BM25, zet een document hoger als zeldzame zoekwoorden er vaak in voorkomen, en corrigeert voor de lengte van het document (Manning, Raghavan en Schütze). De zwakke plek is wat hetzelfde handboek synonymie noemt: één begrip kan met verschillende woorden worden beschreven, dus een zoekopdracht naar "aircraft" mist een pagina over een "plane" (Introduction to Information Retrieval).

Semantisch zoeken vergelijkt in plaats daarvan betekenis. Ook webzoekmachines gingen die kant op: in oktober 2019 begon Google het taalmodel BERT te gebruiken om zoekvragen te interpreteren. Volgens Google zou Search daardoor een op de tien Engelstalige zoekopdrachten in de VS beter begrijpen, vooral langere zoekvragen waarin woordjes als "for" en "to" ertoe doen.

Hoe werkt het?

Semantisch zoeken gebruikt een embeddingmodel, dat een tekst omzet in een embedding: een reeks getallen die de betekenis vastlegt.

  1. Zet elk document of elke passage één keer om en sla de vectoren op in een vectordatabase.
  2. Zet de zoekvraag om met hetzelfde model.
  3. Geef de documenten terug waarvan de vectoren het dichtst bij de vector van de zoekvraag liggen, meestal gemeten met cosine similarity.

Dense Passage Retrieval (Karpukhin e.a., 2020) liet zien dat dit werkt voor het beantwoorden van vragen: een model dat was getraind op paren van vragen en passages, vond 9 tot 19 procentpunt vaker een passage met het antwoord in zijn top 20 dan een sterk BM25-systeem. Met een meertalig model vindt een Nederlandse vraag zelfs een Engels document: Reimers en Gurevych (2020) trainden modellen die een zin en zijn vertaling op hetzelfde punt plaatsen, in meer dan 50 talen.

In RAG is semantisch zoeken de ophaalstap: de gevonden passages gaan in de prompt, en het taalmodel antwoordt op basis daarvan.

Waar gaat het mis?

  • Exacte termen. Embeddingmodellen kunnen exacte overeenkomsten missen die ertoe doen, schrijft Anthropic (september 2024): een zoekopdracht naar foutcode "TS-999" kan pagina's over foutcodes in het algemeen opleveren. Zoeken op trefwoorden zoekt juist naar die exacte tekenreeks.
  • Onbekend materiaal. De BEIR-benchmark (Thakur e.a., 2021) testte tien zoeksystemen op 18 datasets: BM25 hield goed stand als basislijn, en modellen voor dense retrieval deden het vaak slechter dan andere aanpakken op data die afweek van hun trainingsdata.
  • Zeldzame namen. Op eenvoudige vragen als "Where was Arve Furset born?" deden dense retrievers het veel slechter dan zoeken op trefwoorden: ze generaliseren alleen naar bekende namen, tenzij ze dat type vraag in hun training zagen (Sciavolino e.a., 2021).
  • Er is altijd een dichtstbijzijnde match. De zoekfunctie geeft de dichtstbijzijnde documenten terug, ook als geen ervan relevant is; een drempelscore moet je daarom per model testen.

Wat is hybride zoeken?

Hybride zoeken draait allebei, BM25 voor de exacte woorden en semantisch zoeken voor de betekenis, en voegt de twee resultatenlijsten samen; de ophaalopzet van Anthropic doet precies dat. Een eenvoudige manier om samen te voegen is reciprocal rank fusion (Cormack, Clarke en Büttcher, 2009): een document krijgt in elke lijst 1/(60 + zijn positie), en de scores worden opgeteld.

Voorbeeld

Stel: een accountantskantoor maakt zijn interne kennisbank doorzoekbaar. Een medewerker vraagt "Wat is ons beleid voor thuiswerken?", en semantisch zoeken vindt het document "Richtlijnen werken op afstand", waarin het woord "thuiswerken" niet voorkomt. Daarna zoekt ze formulier "HR-12": een embeddingmodel kan formulieren in het algemeen teruggeven, terwijl zoeken op trefwoorden de exacte code vindt. Hybride zoeken kan beide vinden.