Blog AI en automatisering

Een RAG-chatbot begint bij documentrechten.

Eigen documenten doorzoekbaar maken vraagt meer dan embeddings. Ontwerp toegang vóór het ophalen, beheer bronversies en toets ook intrekking, caches en onjuiste antwoorden.

Inhoudsopgave11 hoofdstukken
  1. Wat lost RAG op, en wat niet?
  2. Begin bij bronhouderschap en uitsluitingen
  3. Maak documenten klein zonder hun betekenis te verliezen
  4. Controleer rechten vóór het ophalen
  5. Hoe past Supabase RLS in dit ontwerp?
  6. Rechten intrekken is een wijziging door de hele keten
  7. Een bron is informatie, geen opdracht aan het model
  8. Toon onzekerheid op de plek waar iemand een antwoord gebruikt
  9. Test bronkwaliteit en beveiliging afzonderlijk
  10. Privacy vraagt meer dan een technische checklist
  11. Van beperkte proef naar beheerde toepassing

RAG staat voor retrieval-augmented generation: een toepassing zoekt relevante informatie op en gebruikt die als context voor een AI-antwoord. Bij bedrijfsdocumenten komt daar een voorwaarde vóór: de gebruiker moet die informatie mogen zien. Een RAG-chatbot mag geen ontoegankelijke tekst ophalen om die pas achteraf uit het antwoord te proberen te filteren.

Deze gids beschrijft een ontwerp voor een interne documentzoek- en antwoordfunctie. Het is geen kant-en-klare implementatie of AVG-certificering. De oude URL bevat “GDPR-compliance”; de inhoud geeft nadrukkelijk geen compliancegarantie. Een concrete toepassing vraagt onafhankelijke beveiligings- en juridische beoordeling.

Wat lost RAG op, en wat niet?

RAG maakt het mogelijk om actuele documentpassages aan een model mee te geven zonder iedere documentwijziging als modeltraining te behandelen. De toepassing zoekt bijvoorbeeld in een goedgekeurde handleiding en laat vervolgens een uitleg maken met verwijzing naar het betreffende hoofdstuk.

Dat lost niet alle problemen op. De bron kan verouderd zijn, de zoekfunctie kan de verkeerde passage vinden en het model kan een conclusie trekken die de bron niet ondersteunt. Daarnaast ontstaan risico’s in de zoekindex zelf. OWASP beschrijft onder meer ongeoorloofde toegang en lekken tussen gebruikerscontexten bij onvoldoende afscherming van vectoren en documenten.

Overweeg daarom eerst of een goede documentzoekfunctie volstaat. Een lijst betrouwbare passages kan voor sommige taken nuttiger zijn dan één gegenereerd antwoord. Antwoordgeneratie is een extra laag, geen verplicht onderdeel van iedere kennisbank.

Begin bij bronhouderschap en uitsluitingen

Maak een inventaris met documenteigenaar, doelgroep, geldige versie, vertrouwelijkheid en herzieningsmoment. Bepaal welke bron leidend is als documenten elkaar tegenspreken. Sluit personeelsdossiers, onnodige persoonsgegevens, sleutels en niet-goedgekeurde concepten uit van een eerste proef.

Controleer ook of de organisatie de inhoud mag verwerken en beschikbaar stellen. Toegang tot een bestand is niet automatisch een onbeperkt gebruiksrecht. Neem alleen bronnen op die nodig zijn voor de afgebakende vraag. Gegevens uit bestaande bedrijfssystemen vragen hun eigen bron- en toegangsafspraken.

Tarieven

Wat kost het?

Het begint bij . Wat jij betaalt hangt af van je situatie.

Maak documenten klein zonder hun betekenis te verliezen

Voor zoeken worden documenten meestal in kleinere stukken verdeeld. Bewaar per passage het document-ID, de versie, sectie of pagina en de relatie met de toegangsregels. Een stuk tekst zonder context kan een uitzondering verliezen en daardoor het verkeerde antwoord opleveren.

Controleer de extractie van tabellen, kolommen en gescande pagina’s. Een verkeerd herkend teken in een artikelnummer kan een andere instructie opleveren. Laat automatische extractie niet stilzwijgend nieuwe feiten of samenvattingen als brontekst opslaan. Bewaar waar nodig een controleerbare koppeling naar het origineel.

Embeddings zijn numerieke representaties waarmee je inhoud op betekenis kunt vergelijken. Ze maken vertrouwelijke brontekst niet automatisch anoniem. Behandel tekst, metadata en embeddings als onderdelen van dezelfde beschermde gegevensketen.

Controleer rechten vóór het ophalen

Een autorisatiebewuste aanvraag begint bij een geverifieerde gebruiker en organisatie. Pas daarna bepaalt de server welke documenten beschikbaar zijn. Een organisatie-ID of rol die iemand zelf in een chatbericht noemt, is niet de bron van bevoegdheid.

  1. Identificeer de gebruiker en bepaal server-side de actuele toegangscontext.
  2. Selecteer alleen geldige documenten en passages binnen die rechten.
  3. Zoek en rangschik binnen de toegestane verzameling.
  4. Geef uitsluitend die passages door aan het model.
  5. Controleer de bronverwijzingen en toegang opnieuw voordat antwoord en bronlink worden aangeboden.

Dit is een conceptuele volgorde, geen getest codevoorbeeld. Een applicatie die eerst alle klanten doorzoekt en daarna een tekstfilter toepast, heeft de vertrouwelijke informatie al aan andere onderdelen blootgesteld. Een gedeelde cache kan hetzelfde probleem opnieuw introduceren.

Hoe past Supabase RLS in dit ontwerp?

Supabase laat in RAG with Permissions zien hoe Postgres Row Level Security de documentpassages tijdens het zoeken kan beperken. De voorbeeldopzet verbindt passages aan documenten en bepaalt welke daarvan de ingelogde gebruiker mag lezen. RLS moet worden geactiveerd en de policies moeten bij het werkelijke rollen- en organisatiemodel passen.

Controleer met welke databaserol zoekfuncties, views en achtergrondtaken draaien. Administratieve toegang kan een afscherming omzeilen. De officiële RLS-documentatie beschrijft onder meer de bypass-rechten van de service_role en de aandachtspunten rond views en security-definer-functies. Geef een algemene zoekroute niet gemakshalve administratieve toegang.

Voer negatieve tests uit via precies hetzelfde API-pad als de echte gebruiker. Een policytest met een andere rol bewijst niet dat de applicatieroute veilig is. Beveilig daarnaast opslag, oorspronkelijke bestanden en bronlinks; een goed afgeschermde zoekindex helpt niet als het originele document publiek te downloaden is.

Liever even bellen?

Laat je terugbellen

Eén telefoontje is vaak sneller dan drie mailtjes. Je hoort binnen een werkdag van ons.

Rechten intrekken is een wijziging door de hele keten

Stel dat een medewerker geen toegang meer heeft tot een klantproject. Nieuwe zoekvragen moeten dat direct respecteren volgens het afgesproken intrekkingsbeleid. Controleer ook oude sessies, eerder gemaakte antwoorden, downloadlinks en eventuele caches. Een eerder antwoord opnieuw tonen is óók toegang tot de daarin opgenomen informatie.

Neem gebruikers- en organisatierechten op in het cacheontwerp, of cache alleen materiaal dat voor alle betrokken gebruikers toegankelijk is. Bewaar niet simpelweg ieder antwoord onder de vraagtekst. Dezelfde vraag kan voor twee gebruikers een andere toegestane bronverzameling hebben.

Bij een documentwijziging moet duidelijk zijn wanneer de nieuwe versie actief wordt en de oude uit resultaten verdwijnt. Bij verwijdering volgen passages, embeddings, afgeleide caches en relevante logs het vastgelegde beleid. Leg vast hoe back-ups en herstel hiermee omgaan, zodat een teruggezette back-up ingetrokken informatie niet ongemerkt opnieuw aanbiedt.

Een bron is informatie, geen opdracht aan het model

Een document kan instructies bevatten die een AI-model proberen te sturen. OWASP waarschuwt dat RAG prompt injection niet volledig oplost. Een tekst die wordt teruggevonden, mag dus geen toestemming worden om andere dossiers te openen of informatie door te sturen.

Beperk een documentassistent tot zoeken en antwoorden. Geef hem niet ook algemene verzend- of uitvoeringsfuncties. Houd broninhoud apart van applicatie-instructies en controleer de uitvoer voordat die als HTML of link verschijnt. Laat een gegenereerde link nooit automatisch een privébestand publiek maken.

Toon onzekerheid op de plek waar iemand een antwoord gebruikt

Een bronverwijzing moet leiden naar de specifieke passage en geldige versie, binnen de rechten van de gebruiker. Markeer wanneer documenten botsen of wanneer een antwoord een interpretatie bevat. Laat de toepassing bij onvoldoende ondersteuning terugvallen op passages of menselijke hulp.

Een ingestelde temperatuur of een modelscore is geen garantie voor feitelijkheid. Gebruik niet zomaar een zelfgerapporteerd vertrouwenspercentage als beslisregel. Beoordeel eerst of de juiste bronnen zijn gevonden en of iedere belangrijke conclusie door die bronnen wordt gedragen.

Test bronkwaliteit en beveiliging afzonderlijk

Een acceptatieset voor documentvragen
Proef Verwachte uitkomst
Een bekende vraag met geldige bron De juiste passage wordt gevonden en ondersteunt het antwoord
Het antwoord staat niet in de bronnen Geen verzonnen procedure; een duidelijke grens of vervolgvraag
Dezelfde vraag vanuit een andere organisatie Geen passage, titel of antwoord uit de eerste organisatie
Rechten worden tijdens de sessie ingetrokken Nieuwe uitvoer, hergebruik en bronlinks respecteren de intrekking
Een document wordt vervangen of verwijderd Oude inhoud komt niet terug via index, cache of nieuwe antwoorden
Een bron bevat misleidende instructies Geen extra toegang, externe actie of verandering van opdracht

Leg bekende goede antwoorden en toegestane bronnen vooraf vast met de inhoudseigenaar. Houd zoekkwaliteit, antwoordkwaliteit, rechten en herstelscenario’s als losse resultaten bij. Een hoog gemiddeld antwoordcijfer kan een ernstig toegangslek niet compenseren.

Privacy vraagt meer dan een technische checklist

De AVG stelt eisen aan de concrete verwerking. Beoordeel onder meer doel, grondslag, noodzakelijkheid, informatieverstrekking, bewaarbeleid, leveranciers en eventuele doorgifte. Artikel 35 regelt een DPIA wanneer een soort verwerking waarschijnlijk een hoog risico oplevert; niet ieder documentproject krijgt automatisch dezelfde beoordeling.

RLS, encryptie en contractafspraken kunnen onderdelen van de maatregelen zijn, maar bewijzen geen volledige naleving. Laat ook bepalen hoe betrokkenen hun toepasselijke rechten kunnen uitoefenen. Zelfhosting verandert niet vanzelf de voorwaarden van een externe embedding- of modeldienst. Breng alle verwerkende onderdelen in kaart voordat je echte dossiers gebruikt.

Van beperkte proef naar beheerde toepassing

Begin met niet-gevoelige, gecontroleerde documenten en een interne testgroep. Houd modelversie, bronversie, zoekinstellingen en wijzigingen traceerbaar. Stel gebruikslimieten in en maak een veilige route beschikbaar als zoeken of genereren niet werkt.

Laat pas echte gebruikers toe na inhoudelijke acceptatie, een onafhankelijke securityreview en de noodzakelijke juridische beoordeling. Neem bronverversing, incidenten en intrekking mee in beheer. De koppeling met bronsoftware en de overdracht van verantwoordelijkheden blijven onderdeel van de oplossing, ook nadat de eerste antwoorden overtuigend lijken.

Bronnen

  1. Supabase: RAG with Permissions
  2. Supabase: Row Level Security
  3. OWASP: Vector and Embedding Weaknesses
  4. OWASP: Prompt Injection
  5. AVG: officiële Nederlandse verordening

Vragen

Veelgestelde vragen

Moet ik alle documenten opnieuw gebruiken om het model te trainen?

Nee. RAG levert relevante informatie tijdens het beantwoorden aan. Documenten verversen en een model trainen zijn verschillende processen met verschillende gegevens- en testvragen.

Is RLS voldoende om een RAG-chatbot veilig te maken?

Nee. Ook oorspronkelijke bestanden, zoekfuncties, modelcontext, caches, sessies, bronlinks en logs moeten afgeschermd zijn. Test de volledige route met verschillende gebruikers en ingetrokken rechten.

Kan deze opzet juridisch advies uit contracten geven?

Dat valt buiten deze algemene documentzoekopzet. Juridische interpretatie vraagt een afzonderlijke scope en deskundige beoordeling. Een contractpassage vinden is niet hetzelfde als een betrouwbare juridische conclusie trekken.

Volgende stap

Neem contact op met het SiteJob-team

Bespreek je vraag met het team dat jouw systeem ontwerpt en bouwt. We kijken samen welke volgende stap past.