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.
- Identificeer de gebruiker en bepaal server-side de actuele toegangscontext.
- Selecteer alleen geldige documenten en passages binnen die rechten.
- Zoek en rangschik binnen de toegestane verzameling.
- Geef uitsluitend die passages door aan het model.
- 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
| 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.