Gouvernance des Datasets
Objectif & portée¶
- Couvre datasets d'entraînement/évaluation, KB RAG, logs anonymisés, jeux synthétiques.
- S'applique aux environnements local, cloud-local, on-prem.
Rôles & responsabilités¶
| Rôle | Responsabilités |
|---|---|
| Data/ML | Sourcing, préparation, Data Cards, qualité, drift. |
| Platform | Stockage, versionning, pipelines, observabilité. |
| Security | Contrôles d'accès, chiffrement, audits. |
| DPO | Bases légales, DPIA, droits des personnes, purge. |
Cycle de vie dataset¶
- Sourcing → Validation légale → Ingestion → Nettoyage/PII → Anonymisation → Versionnage → Splits → Label/QA → Publication → Monitoring → Retrait/purge.
Data Cards (obligatoires)¶
- Objectif, origine/source, base légale, champs collectés, PII résiduelles (si null, explicitement mentionner).
- Prétraitements, anonymisation (k-anonymity/l-diversity/t-closeness), qualité (complétude, exactitude, fraîcheur).
- Biais/équité (groupes à risque), restrictions d'usage, durée de rétention et politique de purge.
- Traçabilité (lineage, versions, hash), contacts (owner/on-call).
Template Data Card¶
dataset: salambot-faq-fr
version: v1.3.0
owner: data-ml
purpose: 'RAG - FAQ FR'
legal_basis: 'intérêt légitime'
license: 'propriétaire'
region_scope: ['MA', 'EU']
tenant_scope: ['demo']
data_class: 'internal'
sources: ['KB/MinIO/demo/']
pii_residual: false
consent_version: 'privacy-policy@2025-01'
privacy:
anonymization: ['tokenization', 'hash:sha256+salt-tenant']
k_anonymity: '>=20'
quality:
completeness: '>=98%'
freshness_days: '<=30'
deduplication: 'simhash@0.92'
row_fingerprint: 'sha256(text+tenant)'
bias_fairness:
checks: ['language-balance', 'topic-distribution']
embeddings:
model: 'text-embedding-3-large'
dim: 3072
reembed_on_model_change: true
rag_metadata:
store: ['source_id', 'chunk_id', 'page', 'section', 'url']
retention:
ttl_days: 365
purge_trigger: ['tenant-delete', 'user-erasure']
lineage:
inputs: ['raw/faq.csv@sha256:...', 'kb/*.md@sha256:...']
code_ref: 'git://ml-pipeline@abc123'
docker_image: 'registry/ml:1.8.2'
reproducibility:
seed: 42
determinism: true
registry:
location: 's3://ml-datasets/salambot-faq-fr/v1.3.0/'
contact: 'data-ml@company.local'
allowed_use: ['training', 'rag-index']
restrictions: ['no_external_sharing']
PII & anonymisation¶
- Interdit: PII sensibles (santé, religion, mineurs).
- Logs et métriques: aucune PII en clair; hashing + salting par tenant.
- Anonymisation RAG: retirer emails/tel/IDs; remplacer par tokens.
- Vérifications CI/CD: scanners PII sur diffs et artefacts (blocage en cas d'échec).
Sécurité supplémentaire¶
- Anti-malware : scanner les pièces/documents avant ingestion (blocage en cas de détection).
- Prévention fuite tenant : chaque enregistrement porte
tenant; interdiction de mélange cross-tenant dans splits et exports.
Références croisées:
Versionning & splits¶
- Version sémantique (MAJOR.MINOR.PATCH) + hash immuable.
- Splits stratifiés: train/val/test (ex: 80/10/10), éviter la fuite d'info (leakage).
- Manifestes de publication (schema, tailles, stats).
Exemple de manifeste¶
manifest:
dataset: salambot-faq-fr
version: v1.3.0
hash: sha256:...
splits:
train: { size: 48000 }
val: { size: 6000 }
test: { size: 6000 }
schema:
- { name: id, type: string }
- { name: text, type: string }
- { name: tenant, type: string }
stats:
avg_len_tokens: 210
dup_rate_simhash_0_92: 1.3%
Qualité des données¶
- Règles: complétude, unicité, cohérence, exactitude, fraîcheur, non-duplicats.
- Détection doublons: simhash/minhash, seuils documentés.
- Tests de qualité automatisés à chaque build; rapport publié (Grafana/CI).
Quality gates CI/CD¶
- Blocants : complétude >=98%, taux de doublons (simhash@0.92) <=2%, fraîcheur <=30 jours.
- Échec pipeline si un seuil est violé (rapport publié CI/Grafana).
- Échantillonnage manuel (n=200) à chaque release majeure, avec validation DPO si PII potentielle.
RAG: chunking & embeddings¶
- Chunking: taille 512–1024 tokens, chevauchement 10–20%.
- Normalisation: lowercasing optionnel, conservation de la ponctuation utile.
- Embeddings: modèle et dimension documentés; régénération sur changement de modèle.
- Index: politique de mise à jour (full vs incrémental), snapshots Qdrant/Pinecone.
Métadonnées de citation (obligatoires)¶
- Stocker dans l'index:
source_id,chunk_id,page,section,url,ingested_at(UTC). - Exiger la restitution de
citations[]dans les réponses (source+page+url) pour traçabilité et audits.
Évaluation & métriques¶
- Retrieval: MRR@3≥0.7, MRR@5≥0.8; Latence p95<400ms.
- Génération: factualité (faithfulness), taux de hallucination, BLEU/ROUGE (si pertinent).
- Monitoring drift (données/concepts); déclencheurs de re-train.
Métriques de qualité¶
| Métrique | Seuil | Mesure |
|---|---|---|
| Pertinence | ≥0.80 | Score cosinus vs ground truth |
| Cohérence | ≥0.85 | Analyse sémantique interne |
| Factualité | ≥0.90 | Vérification sources externes |
| Fluidité | ≥0.75 | Score linguistique automatisé |
Les réponses RAG doivent toujours inclure
citations[](source/page/url) — conforme àAPI/reference.md.
Seuils & drift¶
- Retrieval : MRR@3 >=0.7, MRR@5 >=0.8 ; latence p95 <400ms.
- Drift données : PSI (Population Stability Index) > 0.2 sur distribution des features ou des longueurs de chunks ⇒ re-train/re-embed.
- Drift performance : chute MRR@5 > 0.05 sur 7 jours glissants ⇒ audit features/sources.
- Déclencheurs re-embedding : changement de modèle d'embedding, ajout
10% de nouveaux documents, ou PSI >0.2.
Références croisées:
Sécurité & accès¶
- Accès via RBAC+ABAC (tenant, environment), tous événements audités.
- Chiffrement au repos (AES-256) et en transit (TLS 1.2+). Clés par tenant si disponible (KMS/Vault).
- Stockage: MinIO/S3 (buckets par tenant), Vector DB avec snapshots et Object Lock/WORM pour jeux validés.
Purge & re-train¶
- Triggers: droit à l'effacement, fin de contrat, TTL expiré.
- Portée: raw, features, embeddings, caches, index, backups (si applicable).
- Pipeline de re-train planifié; preuve de purge (logs + audit).
Références croisées:
Données synthétiques¶
- Usage pour tests/renforcement; jamais ré-identifiables.
- Valider distribution et absence de fuite PII.
Versioning & dépréciation¶
- SemVer : MAJOR = schéma/champ critique, MINOR = nouveaux exemples, PATCH = corrections mineures.
- Release notes obligatoires (sources, métriques, changements de politique PII/consentement).
- Dépréciation : annoncer N+1 versions à l'avance ; geler l'accès en lecture seule ; plan de purge associé.
Checklists¶
Ingestion nouveau dataset¶
- [ ] Base légale/DPIA validées (DPO).
- [ ] Data Card complétée et revue.
- [ ] Scanner PII passé.
- [ ] Qualité (dup/completude/fraicheur) OK.
- [ ] Version + manifest générés.
Pré-release¶
- [ ] Splits et seeds figés.
- [ ] Métriques evaluation ≥ seuils.
- [ ] Access control validé.
- [ ] Plan purge & re-train prêt.
Purge ciblée¶
- [ ] Identification enregistrements (lineage).
- [ ] Suppression raw/features/embeddings/index.
- [ ] Backups taggés/épurés selon politique.
- [ ] Rapport d'audit généré.
Références croisées¶
Security/pii.md,Security/iam.md,Security/audit.mdOps/slo-sla.md,Ops/runbooks.mdDeployment/local.md,Deployment/cloud-local.md,Deployment/on-prem.mdAPI/reference.md(endpoints canoniques: /v1/generate/reply, /v1/search/query)
Note API : utiliser des endpoints canoniques uniques (/v1/generate/reply,
/v1/search/query) et aligner les autres documents pour éviter les variantes.