Nettoyer et dédupliquer les données sources
Apprenez à nettoyer les documents bruités et à supprimer les contenus en double avant l’ingestion, afin que votre index RAG reste compact, précis et exempt de réponses contradictoires.
Nettoyer et dédupliquer les données sources est une leçon LLM Apps in Production (RAG + Vector DB + Caching) gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage LLM Apps in Production (RAG + Vector DB + Caching), et ta progression se synchronise sur le web et l'application CoddyKit. Le cours LLM Apps in Production (RAG + Vector DB + Caching) comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Garbage In, Garbage Out
RAG quality is capped by the quality of what you ingest. Boilerplate, HTML tags, duplicate pages, and broken encoding all pollute retrieval.
Cleaning and deduplication happen before chunking and embedding.
Common Noise Sources
Typical junk found in raw documents:
- Navigation menus, headers, footers
- Cookie banners and ads
- Repeated legal disclaimers
- Mojibake from bad encoding
- Excess whitespace and control chars
Basic Text Normalization
Normalize whitespace and strip control characters first.
import re
def clean(text):
text = re.sub(r'[\t\r]+', ' ', text)
text = re.sub(r' {2,}', ' ', text)
text = re.sub(r'\n{3,}', '\n\n', text)
return text.strip()
print(clean('Hello world\n\n\n\nbye'))Stripping Boilerplate
Remove repeated boilerplate that appears on many pages. A simple approach: collect lines that repeat across documents and drop them.
- Footers, copyright lines
- Share-this widgets
- Identical navigation blocks
Fixing Encoding Issues
Mojibake like 'caf\u00c3\u00a9' instead of 'caf\u00e9' confuses embeddings. Detect the source encoding and decode consistently to UTF-8 before storage.
Exact Duplicate Detection
The cheapest dedup: hash the normalized text and drop exact repeats.
import hashlib
seen = set()
def is_dup(text):
h = hashlib.sha256(text.encode()).hexdigest()
if h in seen:
return True
seen.add(h)
return False
print(is_dup('a'))
print(is_dup('a'))Near-Duplicate Detection
Exact hashing misses pages that differ by a date or a word. Use near-duplicate techniques:
- MinHash + Jaccard similarity
- SimHash fingerprints
- Embedding cosine similarity above a threshold
Jaccard Similarity
A quick token-set overlap score to flag near-duplicates.
def jaccard(a, b):
sa, sb = set(a.split()), set(b.split())
return len(sa & sb) / len(sa | sb)
print(round(jaccard('the cat sat', 'the cat ran'), 2))Why Duplicates Hurt RAG
Duplicate chunks waste index space and skew retrieval: the top-k results fill up with copies of the same passage, crowding out diverse evidence. Conflicting near-duplicates (old vs new policy) can even produce contradictory answers.
Building a Cleaning Pipeline
Chain the steps in order: normalize -> fix encoding -> strip boilerplate -> exact dedup -> near dedup. Log how much was removed so you can audit aggressive filters.
Idempotent Re-ingestion
When documents are re-ingested, use a stable content hash as the record key so updates replace the old version instead of creating duplicates. This keeps the index clean over time.
Quick Check
Test your understanding of deduplication.
Recap
You learned to prepare clean source data: normalize text, fix encoding, strip boilerplate, then remove both exact and near-duplicates. Use stable content hashes for idempotent re-ingestion. Cleaner inputs mean a smaller index and more accurate, non-contradictory retrieval.
Questions Fréquemment Posées
La leçon « Nettoyer et dédupliquer les données sources » est-elle gratuite ?
Oui — le texte complet de « Nettoyer et dédupliquer les données sources » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours LLM Apps in Production (RAG + Vector DB + Caching), passe à CoddyKit PRO. Le cours LLM Apps in Production (RAG + Vector DB + Caching) comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Nettoyer et dédupliquer les données sources » ?
Apprenez à nettoyer les documents bruités et à supprimer les contenus en double avant l’ingestion, afin que votre index RAG reste compact, précis et exempt de réponses contradictoires. Tu pratiques LLM Apps in Production (RAG + Vector DB + Caching) avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer LLM Apps in Production (RAG + Vector DB + Caching) ?
Aucune expérience préalable n'est requise. LLM Apps in Production (RAG + Vector DB + Caching) sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Nettoyer et dédupliquer les données sources » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon LLM Apps in Production (RAG + Vector DB + Caching) ?
Oui. Chaque leçon LLM Apps in Production (RAG + Vector DB + Caching) inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Charger différents formats de documents
- Stratégies de découpage tenant compte du contexte
- Gestion et filtrage des métadonnées
- Nettoyer et dédupliquer les données sources