Aller au contenu principal

Strategies de decoupage de texte

Le decoupage de texte (chunking) est l’une des etapes les plus critiques d’un pipeline RAG. La facon dont vous decoupez vos documents impacte directement la qualite de tout le systeme. Une mauvaise strategie peut conduire a du contexte non pertinent dans vos prompts, causant des reponses completement fausses.

Trois strategies principales

1. Decoupage par taille

L’approche la plus simple : diviser le texte en chaines de longueur egale. Facile a implementer, fonctionne avec tout type de document.

Inconvenients : les mots sont coupes en pleine phrase, les chunks perdent le contexte du texte environnant, le contenu relie peut etre coupe entre plusieurs chunks.

Avec chevauchement (overlap) : chaque chunk inclut des caracteres des chunks voisins, fournissant du contexte additionnel aux frontieres.

def chunk_by_char(text, chunk_size=150, chunk_overlap=20):
    chunks = []
    start_idx = 0

    while start_idx < len(text):
        end_idx = min(start_idx + chunk_size, len(text))
        chunk_text = text[start_idx:end_idx]
        chunks.append(chunk_text)
        start_idx = (
            end_idx - chunk_overlap if end_idx < len(text) else len(text)
        )

    return chunks

2. Decoupage par phrase

Un bon equilibre entre contexte et sens pour la prose :

def chunk_by_sentence(text, max_sentences_per_chunk=5, overlap_sentences=1):
    sentences = re.split(r"(?<=[.!?])\s+", text)
    chunks = []
    start_idx = 0

    while start_idx < len(sentences):
        end_idx = min(start_idx + max_sentences_per_chunk, len(sentences))
        current_chunk = sentences[start_idx:end_idx]
        chunks.append(" ".join(current_chunk))
        start_idx += max_sentences_per_chunk - overlap_sentences

    return chunks

3. Decoupage par section

Quand les documents ont un formatage coherent (Markdown avec des en-tetes clairs) :

def chunk_by_section(document_text):
    pattern = r"\n## "
    return re.split(pattern, document_text)

Excellents resultats pour les documents bien structures, mais necessite des garanties sur la structure du document.

Choisir la bonne strategie

StrategieIdeal pourLimites
Par caracteresTout type de document, option de secoursPerte de contexte, coupures arbitraires
Par phrasesProse, articles, contenu narratifProblemes avec le code ou les documents techniques
Par sectionsDocuments structures avec en-tetesNe fonctionne pas avec du texte brut non formate

Le decoupage est souvent un processus iteratif. Commencez simple, testez avec vos documents specifiques, puis affinez en fonction de la qualite des resultats.