Aller au contenu

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.md
  • Ops/slo-sla.md, Ops/runbooks.md
  • Deployment/local.md, Deployment/cloud-local.md, Deployment/on-prem.md
  • API/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.