Hoe werkt de assistent?
De assistent verzint geen kennis: elk antwoord wordt opgebouwd uit de … artikels van de beschikbare bronnen. Deze pagina toont schematisch hoe een vraag verwerkt wordt en hoe de prompt naar het AI-model eruitziet. Alles wat hieronder gemarkeerd is, kan je aanpassen via Instellingen.
Van vraag naar antwoord
De prompt die naar het AI-model gaat
Dit is geen voorbeeld maar de actuele configuratie: wijzig je iets op de instellingenpagina, dan verandert het hieronder mee. De gekleurde {plaatshouders} worden per vraag ingevuld.
…
…
[1] Titel (categorie) gevolgd door de tekst
{question} → de letterlijke vraag van de zorgverlener
{noAnswer} → de ingestelde weigertekst
Modelinstellingen: …
Tussen de systeemprompt en het gebruikersbericht staan ook de laatste … chatberichten uit het lopende gesprek (zonder hun oude [n]-verwijzingen), zodat het model vervolgvragen kan plaatsen. Bij een meta-vraag wordt dezelfde structuur gebruikt, maar dan met de aparte meta-systeemprompt en de artikelcatalogus als context in plaats van fragmenten.
Waarom dit betrouwbaar is
- Gesloten context — het model mag alleen putten uit de meegestuurde fragmenten; algemene modelkennis is expliciet verboden.
- Twee verdedigingslinies — de scoredrempel houdt vragen zonder relevante bron al vóór het model tegen; de systeemprompt verplicht weigeren als de context toch tekortschiet.
- Controleerbaar — elke bewering draagt een [n]-verwijzing en de bronkaartjes tonen het letterlijke bronfragment, zodat de zorgverlener het antwoord kan natrekken.
- Meetbaar — de vaste testset op de pagina Evaluatie controleert na elke wijziging of het zoeken, de antwoorden én het weigergedrag nog kloppen.
Volgende stap: semantisch zoeken met embeddings
Nog niet gebouwd — dit beschrijft de logische volgende stap na deze proof of concept.
Het zoeken werkt nu lexicaal (BM25): een fragment scoort alleen als er letterlijk dezelfde woorden in staan als in de vraag. De prefix-matching vangt verbuigingen op ("aanrekenen" vindt ook "aangerekend"), maar géén synoniemen of omschrijvingen:
- Wie "suikerziekte" typt, mist fragmenten die alleen over "diabetes" spreken.
- Wie "papieren van de patiënt kopiëren" vraagt, mist het artikel over het "afschrift van het verpleegdossier".
De oplossing is semantisch zoeken met embeddings: elk fragment en elke vraag wordt door een embeddings-model (bv. via dezelfde OpenAI API die de antwoorden al schrijft) omgezet in een reeks getallen die de betekenis weergeeft. Fragmenten waarvan de betekenis dicht bij de vraag ligt, scoren dan hoog — ook zonder één gedeeld woord. In de praktijk combineer je beide (hybride retrieval): BM25 blijft sterk voor exacte termen zoals nomenclatuurnummers en bedragen, embeddings vangen synoniemen en omschrijvingen op. Beide scores worden samengevoegd tot één ranglijst.
Voor de rest van de pijplijn verandert er niets: dezelfde drempel, dezelfde prompt, dezelfde guardrails en dezelfde evaluatieset — die meteen meetbaar maakt hoeveel beter het zoeken wordt. De fragmentembeddings worden eenmalig berekend bij het opbouwen van de index (verwaarloosbare kost bij 100-150 artikels); per vraag komt er één snelle, goedkope embeddings-aanroep bij.