Glossaire
Termes utilisés dans la documentation piighost. Chaque entrée définit le
concept par ce qu'il fait. Les noms de classes restent en anglais.
- Anonymisation
- Suppression des PII sans aucun moyen de les restaurer. Irréversible par définition. Une placeholder factory de caviardage anonymise, puisqu'elle ne garde aucune correspondance vers la valeur.
- Cipher
- Composant qui chiffre et déchiffre des octets de façon réversible, de sorte
qu'un stockage garde du chiffré au lieu du clair. Une fuite du stockage ne
donne rien sans la clé, tenue en dehors du stockage.
RedisConversationMemoryetSqlAlchemyConversationMemorypeuvent en utiliser un pour chiffrer les valeurs persistées.AesGcmCipherest le backend AES-GCM fourni. - Conversation (thread)
- Suite de messages identifiée par un
thread_id. La mémoire est isolée par conversation, donc deux conversations parallèles ne partagent jamais leurs données confidentielles. Un placeholder reste stable sur tous les messages d'une même conversation. - Dé-identification
- Remplacement des données confidentielles par des placeholders tout en
gardant la correspondance entre chaque valeur et son placeholder, de sorte que l'original peut être
restauré ensuite. Le pipeline
piighostpar défaut dé-identifie. Au sens du RGPD c'est de la pseudonymisation, pas de l'anonymisation. - Détection
- Une occurrence d'une valeur repérée par un détecteur, c'est-à-dire un
Span, le texte apparié, un label et une confiance dans l'intervalle 0 à 1. Détecter Patrick commePERSONen(0, 7)avec une confiance de0.95est uneDetection. - Détecteur
- Composant qui trouve les données confidentielles dans un texte et retourne des détections. Les
détecteurs implémentent le protocole
AnyDetectoret sont interchangeables. Les trois familles sont regex, NER et LLM, chacune sous son entrée. - Détecteur LLM
- Détecteur qui demande à un grand modèle de langage de retourner les valeurs
trouvées en sortie structurée. Plus lent et moins déterministe que le regex
ou le NER, mais capable de raisonner sur le contexte.
LLMDetector. - Détecteur NER
- Named Entity Recognition, reconnaissance d'entités nommées. Modèle d'IA qui
classe les mots d'un texte dans des catégories décidées à l'avance, comme
personne, lieu ou organisation. Fonctionne sur le texte libre là où un motif
échoue.
Gliner2Detector,Gliner2PiiDetector,SpacyDetector,TransformersDetector,PresidioDetector, etBridgeDetector, qui attend un modèle exécuté ailleurs, par exemple en JavaScript dans le navigateur. - Détecteur regex
- Détecteur qui reconnaît des motifs fixes, c'est-à-dire des chaînes de
caractères qui suivent une structure connue comme un IBAN ou un numéro de
téléphone. Efficace sur les formats structurés, inutilisable sur du texte
libre comme un prénom ou une date écrite.
RegexDetector. - Données confidentielles
- Tout ce que
piighostprotège, c'est-à-dire les données personnelles (PII) et les secrets comme les clés d'API. Chaque élément détecté est une valeur, remplacée par un placeholder dans le texte dé-identifié. - Entité
- Groupe de détections qui référent à la même valeur. Chaque occurrence
de la valeur est une détection. Le groupe partage un placeholder, qui se
restaure en une seule valeur. Différent d'une détection, qui est une occurrence unique.
Entity. - Garde-fou
- Composant qui revérifie le texte dé-identifié à la recherche de données confidentielles
que le pipeline a manquées. Il tourne après le remplacement et lève une erreur si une
valeur résiduelle demeure. Un garde-fou peut relancer un détecteur
(
DetectorGuardRail), classer la sortie avec un modèle GLiNER2 local (Gliner2GuardRail), interroger un LLM (LLMGuardRail) ou l'API de modération de Mistral (ModerationGuardRail). - Linker
- Composant qui regroupe les détections en entités. Il trouve les occurrences
qui référent à la même valeur, afin qu'elles partagent un placeholder. Lier
Patrick en
(0, 7)et patrick en(34, 41)donne une entité.ExactEntityLinker. - Mémoire de conversation
- Stockage qui accumule les entités d'une conversation au fil des messages, de sorte
qu'une valeur vue dans un message garde son placeholder dans le suivant.
InMemoryConversationMemoryla tient dans le processus.RedisConversationMemoryla persiste dans Redis, etSqlAlchemyConversationMemorydans une table SQL. Ces deux backends peuvent chiffrer les valeurs avec un cipher et hacher les clés. - PII
- Personally Identifiable Information, en français donnée à caractère
personnel. C'est la partie données personnelles des données confidentielles.
Toute valeur qui peut identifier une personne, c'est-à-dire nom,
adresse, numéro de téléphone, email, lieu, organisation, numéro de compte.
piighosttrouve et remplace les PII pour qu'un LLM en aval ne voie jamais la valeur brute. - Placeholder
- Jeton qui remplace une valeur dans le texte dé-identifié, par exemple <<PERSON:1>> ou <<EMAIL:1>>. L'apparence d'un placeholder est décidée par une placeholder factory.
- Placeholder factory
- Composant qui produit les placeholders. Il décide la forme du jeton et ce que
le jeton préserve, c'est-à-dire un label, une identité stable, les deux ou
rien. Les factories fournies sont
RedactPlaceholderFactory,LabelPlaceholderFactory,LabelCounterPlaceholderFactory,LabelHashPlaceholderFactoryetMaskPlaceholderFactory. - Poivre
- Secret qui sert de clé à un hasher, lu depuis la variable d'environnement
PIIGHOST_HASH_PEPPER. Le poivre est obligatoire, parce qu'une valeur à faible entropie hachée sans secret reste attaquable par force brute. Utilisé parSha256HasheretArgon2Hasher. - Recognizer
- Grammaire de jetons que le middleware utilise pour retrouver les placeholders
d'un pipeline dans une réponse LLM, sans passer par l'anonymiseur. Un pipeline
l'expose dans son attribut
recognizer, qui vaut unBaseDelimitedPlaceholderFactoryouNone. - Résolveur d'entités
- Composant qui réconcilie les entités en conflit, c'est-à-dire des entités qui
partagent une détection ou dont les valeurs sont proches.
MergeEntityResolverfusionne les entités qui partagent une détection,FuzzyEntityResolverfusionne les valeurs presque identiques.SeparateEntityResolvergarde les entités séparées. Il donne chaque détection partagée à la plus grande entité qui la contient et la retire des autres. - Secret
- Identifiant d'accès qui ne doit jamais atteindre un modèle, comme une clé
d'API, un jeton d'accès, une clé privée ou une chaîne de connexion. Les
secrets sont l'autre partie des données confidentielles. Ils sont détectés
par les groupes du catalogue
piighost/secretsetpiighost/secrets-extended, tirés par exemple aveccatalogs = ["catalog:piighost/secrets"]. Les autres groupes du catalogue,piighost/genericet les groupes régionaux, ne contiennent aucun motif de secret.Gliner2PiiDetectordemande aussi à son modèle les clés d'API et les mots de passe. - Span
- Intervalle de caractères semi-ouvert
[start, end)dans un texte, calqué sur la sémantique du slice Python. Chaque détection porte unSpanqui marque où se trouve la valeur.Span. - Tag de préservation de placeholder
- Type fantôme (un type qui ne sert qu'au vérificateur de types) posé sur
une placeholder factory, qui énonce ce que ses jetons préservent. Les tags
concrets sont
PreservesNothing,PreservesLabel,PreservesShape,PreservesIdentityOnly,PreservesLabeledIdentityOpaqueetPreservesLabeledIdentityHashed.PreservesIdentity,PreservesRecognizableIdentityetPreservesLabeledIdentitysont des tags abstraits qui les regroupent. Le middleware exigePreservesRecognizableIdentitypour pouvoir restaurer les valeurs. Il rejette une factory qui ne fournit pas ce tag dès la vérification de types. - thread_id
- Chaîne qui identifie une conversation. Le pipeline de conversation et le middleware s'en servent pour cadrer la mémoire et router chaque message vers la bonne conversation.