Tous les articles Sécurité & RGPD

Anonymisation avant vectorisation : techniques, limites et bons réflexes

L'équipe RagNight · 10 min de lecture · 21 avril 2026

Anonymiser ou pseudonymiser avant de vectoriser ? La distinction RGPD, pourquoi l'anonymisation parfaite est rare sur du texte libre, les techniques (NER, pseudonymisation cohérente) et les réflexes à adopter.

Avant qu'un document n'entre dans un pipeline RAG, il passe par une étape lourde de conséquences : la vectorisation. À partir de ce moment, son contenu — y compris les données personnelles qu'il contient — est dupliqué dans des embeddings, indexé, et potentiellement envoyé à des modèles externes au fil des requêtes. D'où une question que trop d'équipes repoussent : faut-il anonymiser ou pseudonymiser les données personnelles avant de vectoriser ? Et jusqu'où est-ce vraiment possible ?

Cet article fait le tour des techniques, de leurs limites, et des réflexes à adopter — sans vous vendre une promesse de conformité que la technique ne tient pas.

Anonymisation vs pseudonymisation : une distinction qui change tout

On confond souvent les deux termes. Le RGPD, lui, les sépare nettement :

  • Anonymisation — les données sont transformées de façon irréversible, sans possibilité raisonnable de ré-identifier une personne. Des données vraiment anonymes sortent du champ du RGPD.
  • Pseudonymisation — les identifiants directs sont remplacés (par un jeton, un code), mais la ré-identification reste possible via une information conservée séparément. Les données pseudonymisées restent des données personnelles et restent soumises au RGPD.

La frontière entre les deux n'est pas un détail de vocabulaire : elle détermine si vous avez encore des obligations (base légale, durée de conservation, droits des personnes, registre de traitement) ou non. Et le critère officiel est exigeant. Pour qu'une donnée soit jugée anonyme, l'autorité de référence européenne (le G29, devenu le CEPD) demande qu'aucun des trois risques suivants ne subsiste : la singularisation (isoler un individu dans le jeu de données), la corrélation (relier deux enregistrements à la même personne) et l'inférence (déduire une information sur une personne avec une probabilité élevée). Sur du texte libre, écarter ces trois risques simultanément est extrêmement difficile.

L'anonymisation totale et irréversible est un Graal rarement atteint sur du texte riche. Dans la pratique, on fait surtout de la pseudonymisation — et on ne doit jamais prétendre le contraire, ni en interne, ni vis-à-vis d'un auditeur.

Pourquoi c'est difficile sur du texte non structuré

Anonymiser une colonne « email » dans une base, c'est simple. Anonymiser un texte libre — un compte-rendu, un ticket support, un contrat — c'est une autre affaire :

  • les données personnelles y sont diffuses : un nom au détour d'une phrase, une fonction + une ville qui identifient une personne unique, une date d'entretien croisée avec un service.
  • le contexte ré-identifie : « le directeur financier de notre filiale lyonnaise » ne contient aucun nom, mais désigne une personne précise.
  • la suppression dégrade l'utilité : trop caviarder, et le passage devient inexploitable pour le RAG.

Trois exemples concrets de ré-identification par le contexte

Le danger n'est pas tant le nom explicite que vous avez masqué — c'est tout ce qui reste autour. Quelques cas vus en production :

  1. Le quasi-identifiant croisé. Un compte-rendu RH dit : « la seule personne de l'équipe Data ayant rejoint l'entreprise en mars 2024 ». Aucun nom, aucun email. Mais quiconque a accès à l'organigramme retrouve l'individu en dix secondes. La combinaison service + date d'arrivée + caractère unique est un identifiant indirect parfaitement opérant.
  2. La fuite par style et détail. Un ticket support contient : « comme la dernière fois, mon chien Pixel a marché sur le clavier pendant la visio du mardi avec l'équipe de Nantes ». Le prénom de l'animal, le créneau récurrent et l'agence suffisent à singulariser l'auteur dans un corpus interne.
  3. L'agrégation entre chunks. Pris isolément, deux passages sont anodins. Mais le RAG les récupère ensemble : le chunk A mentionne « notre client du secteur viticole en Gironde, 12 salariés », le chunk B « le dirigeant qui a divorcé l'an dernier ». La concaténation au moment de la réponse reconstitue une personne nommable. C'est le point aveugle classique : on raisonne par document, alors que le RAG raisonne par recoupement.

C'est le dilemme central : plus on protège, moins on conserve d'utilité — et inversement.

Les techniques disponibles

1. Détection d'entités nommées (NER)

Repérer automatiquement noms, emails, téléphones, adresses, numéros (IBAN, sécurité sociale, plaques). C'est la brique de base, portée par des modèles spécialisés (spaCy, Presidio de Microsoft, modèles transformeurs fine-tunés, ou un LLM en extraction). Indispensable, mais imparfaite : elle trébuche sur le jargon métier, les fautes de frappe, les formats inhabituels, les noms rares ou étrangers, et surtout sur les identifiants indirects (une fonction, un lieu) qu'aucun détecteur d'entité ne flague comme « donnée personnelle ». Comptez sur un rappel élevé mais jamais total : prévoyez un filet de sécurité (revue humaine sur les corpus sensibles, listes de motifs métier).

2. Masquage / suppression

Remplacer l'entité par un marqueur fixe ([NOM], [EMAIL]). Simple et robuste, mais casse la cohérence : deux mentions du même nom deviennent indistinctes. Le texte « [NOM] a transmis le dossier à [NOM], qui l'a validé » devient illisible pour un modèle — impossible de savoir s'il s'agit d'une ou deux personnes. Acceptable pour de la simple suppression de log, médiocre pour du RAG conversationnel.

3. Pseudonymisation cohérente

Remplacer chaque entité par un jeton stable et unique (PERSONNE_42), de sorte que toute occurrence de la même personne reçoive le même jeton dans tout le corpus. C'est ce qui préserve les relations — donc l'utilité des réponses. Exemple avant/après :

# AVANT
Marie Dupont (marie.dupont@acme.fr), directrice juridique, a négocié
le contrat avec Acme Corp puis l'a fait signer par Jean Martin, son
adjoint. Marie Dupont reste l'interlocutrice du dossier.

# APRÈS (pseudonymisation cohérente)
PERSONNE_1 (EMAIL_1), ROLE_1, a négocié le contrat avec ORG_1 puis
l'a fait signer par PERSONNE_2, son adjoint. PERSONNE_1 reste
l'interlocutrice du dossier.

Le modèle conserve l'information structurante : il y a deux personnes distinctes, une relation hiérarchique, une organisation, et PERSONNE_1 apparaît bien deux fois. Une question comme « qui est l'interlocuteur du dossier Acme ? » renvoie PERSONNE_1, que l'application peut re-substituer par « Marie Dupont » à l'affichage si et seulement si l'utilisateur est habilité — via le coffre de correspondances décrit plus bas.

4. Généralisation

Remplacer une valeur précise par une catégorie : « 34 ans » → « 30-40 ans », « 12 mars 2024 » → « T1 2024 », « Lyon » → « grande métropole française ». Réduit le risque de singularisation au prix de la finesse. C'est l'outil idéal contre les quasi-identifiants vus plus haut, mais il faut doser : généraliser « directeur financier de la filiale lyonnaise » en « cadre dirigeant » peut vider la phrase de tout intérêt analytique.

5. Chiffrement / coffre des correspondances

Conserver la table qui relie chaque jeton (PERSONNE_42) à sa valeur réelle (« Marie Dupont ») dans un magasin séparé, chiffré, sous contrôle d'accès strict, avec sa propre durée de conservation et sa propre journalisation. C'est ce coffre qui rend la pseudonymisation réversible — et c'est précisément son existence qui maintient les données dans le champ du RGPD.

Pour le RAG, la pseudonymisation cohérente est souvent le meilleur compromis : elle préserve les relations entre entités (donc l'utilité des réponses) tout en retirant les identifiants directs des embeddings et des prompts. La généralisation vient en complément pour neutraliser les quasi-identifiants que le NER ne voit pas.

L'arbitrage utilité/protection, illustré

Il n'y a pas de réglage universel : le bon dosage dépend du corpus et de l'usage. Prenez un même passage et trois niveaux de traitement :

  • Brut : « Le Dr. Sophie Berger, oncologue au CHU de Bordeaux, recommande le protocole X pour les patients de plus de 65 ans. » — utilité maximale, protection nulle.
  • Pseudonymisé cohérent : « PERSONNE7, ROLE3 à ORG_2, recommande le protocole X pour les patients de plus de 65 ans. » — la recommandation médicale et le critère d'âge restent exploitables, l'identité du médecin sort des embeddings.
  • Généralisé agressif : « Un spécialiste recommande un protocole pour certains patients. » — protection forte, mais le contenu ne sert plus à rien pour un RAG médical.

L'erreur fréquente est de croire que « plus de masquage = mieux ». Sur un corpus juridique ou médical, sur-anonymiser détruit la valeur même qui justifiait le projet RAG. La bonne démarche : classer les données par sensibilité, et n'appliquer le traitement le plus lourd qu'à ce qui le mérite. Parfois, la meilleure réponse n'est pas d'anonymiser davantage mais de restreindre l'accès et de maîtriser l'hébergement.

Les limites à regarder en face

  • Le risque résiduel de ré-identification — aucun système de NER n'attrape tout, et le contexte peut trahir une identité même sans identifiant explicite. La singularisation par recoupement de chunks est un angle mort réel.
  • La pseudonymisation n'est pas l'anonymisation — tant qu'une table de correspondance existe (ou pourrait être reconstituée), vous traitez des données personnelles. Ne vous racontez pas d'histoires sur votre exposition RGPD : un corpus pseudonymisé reste soumis aux droits d'accès, de rectification et d'effacement.
  • L'arbitrage utilité/protection — sur certains corpus, retirer les données personnelles vide le contenu de son sens. Le réglage est un compromis assumé, pas un absolu.

Le point de fuite que tout le monde oublie : les prompts

On sécurise souvent l'ingestion en oubliant l'autre bout de la chaîne. Au moment de répondre, un RAG récupère des chunks et les recolle dans un prompt envoyé au modèle de génération. Si ce modèle est une API hors UE, vous venez d'exporter des données personnelles — même si votre base vectorielle, elle, est parfaitement hébergée en Europe.

Requête utilisateur
   → recherche vectorielle (chunks pseudonymisés ou non ?)
   → assemblage du prompt
   → APPEL API LLM  ← point de fuite si hors UE et si chunks non pseudonymisés
   → réponse

Deux conséquences pratiques. D'abord, si vos chunks contiennent encore des données personnelles, chaque requête qui les remonte les transmet au fournisseur du LLM, avec toutes les questions de transfert hors UE et de réutilisation que cela pose. Ensuite, c'est exactement là que la pseudonymisation cohérente paie : en pseudonymisant avant la vectorisation, les chunks remontés ne contiennent que des jetons, le LLM externe ne voit jamais d'identité, et la re-substitution se fait côté application, après la réponse, sous contrôle d'habilitation. La règle est simple : rien d'identifiant ne doit franchir la frontière du périmètre maîtrisé.

Les bons réflexes

  • Minimiser à la source — la meilleure donnée personnelle est celle qu'on n'ingère pas. N'indexez que ce qui est utile ; excluez les champs et documents sans valeur RAG.
  • Pseudonymiser avant tout envoi à un modèle externe — c'est le point de fuite le plus courant : des données personnelles dans les prompts partant vers une API hors UE.
  • Garder la table de correspondance cloisonnée — séparée, chiffrée, sous accès strict, avec sa propre durée de conservation et sa propre traçabilité.
  • Traiter le risque de recoupement — auditez ce que votre RAG remonte ensemble, pas seulement document par document. Généralisez les quasi-identifiants qui survivent au NER.
  • Documenter le traitement — quelle technique, quel risque résiduel, quelle base légale. C'est attendu par le RGPD et utile en cas d'audit.
  • Combiner avec la souveraineté — anonymiser n'exonère pas de bien héberger. Sur les données les plus sensibles, le contrôle de l'infrastructure reste la protection ultime.

Conclusion

Anonymiser avant vectorisation est une bonne intention qui se heurte à une réalité technique : sur du texte riche, l'anonymisation parfaite est rare, et la pseudonymisation cohérente est le compromis réaliste. L'essentiel est de ne pas se mentir sur le niveau réel de protection, de traiter le risque de ré-identification par le contexte autant que les identifiants directs, de pseudonymiser systématiquement ce qui part vers l'extérieur, et de combler le reste par le contrôle d'accès et l'hébergement souverain. La protection des données personnelles dans un RAG n'est pas une case à cocher : c'est une chaîne de décisions, de l'ingestion à l'inférence.

Pour aller plus loin

  • RGPD et IA générative : le guide de conformité de vos projets RAG
  • EU AI Act : calendrier des obligations 2025-2027 et checklist entreprise

Prêt à brancher vos agents sur vos données ?

Démarrez gratuitement. Premier audit Knowledge Pulse en 60 secondes.

Démarrer gratuitement