Je zoekt op ‘bestuurdersaansprakelijkheid’ en krijgt tientallen treffers. Maar de uitspraak die precies op jouw casus past, spreekt van ‘persoonlijke aansprakelijkheid van de statutair directeur’. Die mis je. Dat is het fundamentele probleem van juridisch zoeken: relevantie zit in de betekenis, niet in de woordkeuze. Hoe los je dat op?
Het antwoord ligt in twee begrippen die je steeds vaker hoort: vectoren en embeddings. Dit zijn de bouwstenen van semantisch zoeken, de technologie die juridische AI onderscheidt van een simpele Ctrl+F. In mijn vorige column legde ik uit wat RAG is: een methode waarbij een AI-systeem eerst informatie ophaalt voordat het een antwoord formuleert. Maar daarmee is de vraag nog niet beantwoord: hoe vindt zo’n systeem eigenlijk de juiste passages?
Van woorden naar getallen
Een computer begrijpt geen woorden. Wat hij wel begrijpt, zijn getallen. Een embedding is de vertaling van tekst naar een reeks getallen die de betekenis van die tekst vastlegt. Niet de letters of klanken, maar de semantische betekenis.
Stel je een sommelier voor die wijnen ordent. Niet alfabetisch op naam, maar op smaakprofiel: fruitig, droog, vol, licht. Twee wijnen van totaal verschillende druiven kunnen vlak naast elkaar staan omdat ze vergelijkbaar smaken. Een Spaanse Garnacha kan dichter bij een Franse Grenache staan dan bij een Spaanse Tempranillo, simpelweg omdat de smaak meer overeenkomt.
Embeddings doen hetzelfde met tekst. Ze ordenen niet op spelling of woordkeuze, maar op betekenis. ‘Huurovereenkomst’, ‘huurcontract’ en ‘lease agreement’ komen dicht bij elkaar te liggen. ‘Koopakte’ staat verder weg. En ‘aansprakelijkheid uit onrechtmatige daad’ en ‘artikel 6:162 BW’ worden als verwant herkend, ook al delen ze geen enkel woord.
Vectoren: coördinaten in een ruimte van betekenis
Een vector is simpelweg een lijst getallen. Net zoals GPS-coördinaten je fysieke locatie uitdrukken in twee getallen (de lengte- en breedtegraad), drukt een vector de ‘locatie’ van een tekst uit in een abstracte ruimte. Het verschil: waar GPS twee dimensies gebruikt, werken embeddings met honderden of zelfs duizenden dimensies. Die dimensies zijn abstracte kenmerken die het model tijdens zijn training heeft geleerd: patronen in hoe woorden samen voorkomen en in welke contexten ze worden gebruikt. Voor een mens zijn deze dimensies niet meer intuïtief te begrijpen.
Wat wél intuïtief is: hoe dichter twee vectoren bij elkaar liggen, hoe meer de teksten op elkaar lijken qua betekenis. Dit is de kern van semantisch zoeken. In plaats van te zoeken op exacte woorden, zoekt het systeem op nabijheid in de vectorruimte.
Hier schuilt ook het risico
In mijn vorige artikel noemde ik het de passage-loterij: het systeem vindt stukjes tekst die qua betekenis lijken, maar het begrijpt bijvoorbeeld niet of ‘aansprakelijkheid’ civielrechtelijk of strafrechtelijk bedoeld is. Twee teksten kunnen semantisch sterk op elkaar lijken en juridisch toch een andere strekking hebben.
En er speelt nog iets anders. Voordat teksten überhaupt kunnen worden doorzocht, moeten ze worden opgeknipt in fragmenten. Dit heet chunking. Een arrest van twintig pagina’s kan niet in zijn geheel worden verwerkt; het wordt opgedeeld in kleinere stukken van bijvoorbeeld enkele honderden woorden. Die fragmenten krijgen elk hun eigen vector.
Hier zit een cruciale ontwerpkeuze. Waar leg je de grenzen? Knip je midden in een redenering, dan verlies je context. Maak je de chunks te klein, dan mist het systeem de samenhang. Maak je ze te groot, dan wordt de betekenis te diffuus om precies te matchen. Veel systemen werken daarom met overlap: fragmenten die gedeeltelijk overlappen, zodat een zin die op de grens valt in meerdere chunks voorkomt.
Het punt is: al deze keuzes bepalen welke passages het systeem vindt. Niet alleen de kwaliteit van het embedding-model, maar ook hoe de bronnen zijn opgeknipt en geïndexeerd. Als gebruiker zie je daar niets van. Je stelt een vraag en krijgt een antwoord. Maar onder de motorkap kan een andere chunking-strategie tot andere zoekresultaten leiden, en dus tot andere antwoorden.
Niet alle embeddings zijn gelijk
De meeste AI-systemen gebruiken generieke embedding-modellen, getraind op brede algemene informatie. Die modellen begrijpen dat ‘bank’ en ‘financiële instelling’ bij elkaar horen, maar worstelen vaak met specifiek juridische begrippen.
Daarom ontstaan er steeds meer legal embedding models: modellen die specifiek zijn getraind op juridische tekst. Een voorbeeld is de Kanon 2 Embedder. Zulke modellen herkennen de nuances van juridisch taalgebruik beter dan hun generieke tegenhangers.
Dit verklaart waarom niet alle juridische AI-tools gelijk presteren, ook al draaien ze op dezelfde onderliggende taalmodellen zoals ChatGPT of Claude. Het verschil zit vaak in de zoekmethode, de kwaliteit van de embeddings, de chunking-strategie en hoe de bronnen worden doorzocht.
Geen wondermiddel
Ook de beste embeddings kennen fundamentele beperkingen. Ze vangen betekenis, maar geen juridische hiërarchie. Een AI weet niet automatisch dat een arrest van de Hoge Raad zwaarder weegt dan een vonnis van de rechtbank.
Dit is waarom goede juridische AI-platforms investeren in een knowledge graph: een netwerk waarin relaties tussen wetten, artikelen en arresten expliciet zijn vastgelegd. De combinatie van embeddings en een knowledge graph levert vooralsnog de beste zoekresultaten op.
Volgende keer: agents – wanneer AI zelfstandig gaat ‘denken’ en beslissen.
