RAG and EU data protection

GDPR-compliant RAG, and the three places most builds break it

A retrieval system does not become compliant because the model is hosted in Frankfurt. What fails an audit is erasure that never reaches the embeddings, a memory store nobody documented, and answers that cite a document rather than the passage they came from.

What makes a RAG system GDPR-compliant? Three properties, none of which are about model hosting. Erasure has to reach every derived copy of a record, meaning chunks, embeddings, cached answers, conversation memory and logs, not just the source document. Every transfer of personal data outside the EEA has to be identified and covered, and an embedding API call is a transfer. And every answer has to trace to a specific document, version and passage, because a compliance officer cannot verify a claim they cannot follow to its source.

The question a buyer asks is usually "is your RAG GDPR compliant". The question underneath it is narrower and more answerable: if a person exercises their rights next month, can this system actually do what the law requires, and can somebody prove it did. Most builds fail that second question in one of three specific places.

Break one: erasure stops at the source document

A retrieval pipeline is a copying machine. One uploaded PDF becomes a stored file, a set of text chunks, a set of vector embeddings, possibly a keyword index, sometimes a cached answer that quoted it, and, if the assistant has memory, a conversation record that repeated its contents back to a user. Delete the PDF and six copies of the personal data inside it remain.

Article 17 does not care which store the data sits in. Designing for it means one thing at build time: every derived artefact carries the identifier of the record it came from, so deletion is a traversal rather than an investigation. Retrofitting that after launch is expensive, which is the honest reason so many systems quietly cannot do it.

The list to write down before you index anything: source store, chunk store, vector store, keyword index, answer cache, conversation memory, application logs, and any observability tool capturing prompt contents. That last one catches teams out more than the rest combined.

Break two: the transfer nobody mapped

Chapter V governs personal data leaving the EEA, and the mapping exercise usually stops at the chat model. It should not. An embedding call sends the text of your chunks to whoever runs the embedding model. A reranker sees the retrieved passages. An evaluation suite may be replaying real user queries against a third party. A logging or tracing service may be storing prompts and completions in a different jurisdiction entirely.

You have three workable positions, and picking one early saves a procurement cycle later. Run the whole pipeline on infrastructure you control, which is the strongest position and the most work. Use EU-region endpoints from providers offering them, with transfer safeguards documented and a real answer to onward transfer. Or keep personal data out of the retrieval corpus altogether by redacting at ingestion, which is viable more often than people expect when the useful content is procedural rather than personal.

Break three: a citation you cannot follow

This is the one that separates engineering from marketing. Naming a source document is not traceability. If the document is 180 pages and has been revised four times, a citation to the document tells an auditor nothing about whether the answer is supported. Adequate citation resolves to a version and a passage, and it survives the document being updated afterwards.

We learned the discipline for this on work that had no tolerance for anything less. Digiton built an AI oral-history platform for an African cultural-heritage institution, processing more than 60 hours of recorded testimony and over 1,000 pages of transcripts through retrieval pipelines. Every retrieved passage carries which recording it came from, which section, and which speaker, so a researcher can go from an answer back to the original audio and verify it themselves. That work was presented publicly at Universidade Aberta in Lisbon in April 2026.

Heritage material forced a second property that regulated corporate estates also need. Oral testimony contains accounts that contradict each other, and the disagreement is often the historically important part. A naive system synthesises one confident answer and discards the tension. Ours surfaces the divergent passages instead. The same architecture is what stops a corporate assistant from confidently merging a superseded policy with its replacement.

Refusal is a compliance feature

Digiton also deployed a closed-RAG academic assistant inside Moodle for a Central American university, delivered through a partner. Closed RAG means the assistant answers only from a defined, approved corpus, and says plainly when a question falls outside it rather than reaching into the model's training data.

Universities want that for academic integrity. Regulated buyers want it for a different reason: a system that answers from an approved corpus has a defensible processing scope, and one that will improvise does not. Write the refusal behaviour into acceptance criteria, because it is the property most likely to be tuned away when someone complains the assistant is unhelpful.

The self-hosted stack, without the sales pitch

For teams keeping everything in-house, pgvector is the pragmatic default when you already run Postgres and your corpus is measured in the low millions of chunks, because it removes a system rather than adding one. Qdrant and Milvus earn their operational cost at larger scale or where filtered search performance matters. The choice of vector store is rarely what decides whether a project succeeds.

The honest trade sits above that layer. Open-weight models you can host yourself still sit behind frontier models on reasoning quality. For grounded question answering over a corpus you supply, the gap is usually narrow enough not to matter. For open-ended analysis it is not. Test on your own material before committing to a sovereign stack on principle.

What belongs in the DPIA

This is engineering guidance from deployed systems, not legal advice. Take the finished design to your data protection officer or counsel. Related reading: enterprise RAG for legal teams and RAG systems for business.

Frequently asked questions

Can a RAG system be GDPR compliant?

Yes, and it depends far less on where the model is hosted than most vendors imply. The requirements that decide it are erasure reaching every derived copy, a complete map of every transfer including embedding and logging services, and citations specific enough that a claim can be traced to a document version and passage.

Where does personal data hide in a RAG pipeline?

In the source store, the chunk store, the vector store, any keyword index, the answer cache, conversation memory, application logs, and any observability tool capturing prompt contents. Deleting the original document leaves the derived copies untouched unless each one carries the identifier of the record it came from.

Is calling an embedding API a data transfer under GDPR?

If the text being embedded contains personal data and the provider processes it outside the EEA, yes, it is a transfer and needs the same treatment as any other. Rerankers and prompt-logging services fall under the same analysis, and those two are the ones most often missed in a mapping exercise.

What counts as an adequate citation in a compliance context?

A citation that resolves to a specific document version and a specific passage, and that still resolves after the document is updated. Naming the document alone is not adequate when the document runs to 180 pages and has been revised four times, because the auditor cannot verify whether the answer is supported.

Should we self-host the whole RAG stack?

It is the strongest position for data protection and the most operational work. The alternatives are EU-region endpoints with documented transfer safeguards, or keeping personal data out of the corpus by redacting at ingestion, which works more often than teams expect when the useful content is procedural rather than personal.

Which vector database should we use for a self-hosted RAG build?

pgvector is the pragmatic default if you already run Postgres and your corpus is in the low millions of chunks, because it removes a system rather than adding one. Qdrant and Milvus earn their operational cost at larger scale or where filtered search performance matters. The vector store is rarely what decides the project.

Do open-weight models match frontier models for RAG?

Not on general reasoning. For grounded question answering over a corpus you supply, the gap is usually narrow enough not to matter, and that covers most RAG workloads. For open-ended analysis it is still real. Test on your own material rather than adopting a sovereign stack on principle.

What RAG systems has Digiton actually deployed?

An AI oral-history platform for an African cultural-heritage institution, covering more than 60 hours of testimony and over 1,000 pages of transcripts with passage-level provenance, presented publicly at Universidade Aberta in Lisbon in April 2026. Also a closed-RAG academic assistant inside Moodle for a Central American university, delivered through a partner.

Related

Enterprise RAG for legal teamsRAG systems for businessOral history RAG case studyClosed RAG in MoodleAI automation agency for enterprise

Want the number before the call?

The cost calculator gives you a build band, a monthly running cost and a payback range from our published 2026 price list. No email needed to see it.

Open the AI automation cost calculator

Tell us the operation, get a scoped answer

One line about the work you would hand over. We reply within one working day with the band it falls in and whether it is worth building at your volume.

Rather book directly? Book a discovery audit or mail contact@digiton.ai.