rag‑chunk: Outil CLI pour mesurer et optimiser le découpage RAG

rag‑chunk : Outil CLI pour mesurer et optimiser le découpage RAG

La génération augmentée par requête (RAG) devient une pièce maîtresse des pipelines NLP modernes, mais la qualité d’un système RAG dépend fortement de la façon dont le texte source est découpé en morceaux gérables. Trop de fragments trop petits, et votre index explosera ; trop de gros fragments et vous perdrez la fidélité contextuelle.

rag‑chunk résout ce problème grâce à une interface en ligne de commande simple qui vous permet de tester, mesurer et comparer plusieurs stratégies de découpage côte à côte. Il est écrit en Python, publié sous licence MIT et est disponible sur PyPI, vous pouvez donc l’intégrer dans n’importe quel conteneur ou flux de travail CI avec un minimum de friction.


Fonctionnalités principales

Fonctionnalité Description
Stratégies multiples Taille fixe (basée sur les mots ou tokens), fenêtre glissante (préserve le contexte), paragraphe (frontières sémantiques), découpage récursif par caractère (intégration LangChain).
Découpage précis en tokens Support optionnel de tiktoken pour les limites de tokens GPT 3.5 et 4 ; choisissez le modèle avec --tiktoken-model.
Évaluation du rappel Fournissez un fichier de test JSON (examples/questions.json) pour calculer le nombre d’expressions pertinentes apparaissant parmi les k premiers chunks récupérés.
Sortie CLI riche Tableaux élégants alimentés par Rich – clairs, lisibles et exportables.
Export Enregistrez les résultats en JSON, CSV ou dans un format tableau ; les chunks peuvent être exportés dans un dossier .chunks/ pour inspection.
Extensible Ajoutez votre logique de découpage personnalisée dans src.chunker.py et enregistrez‑la dans le dictionnaire STRATEGIES.

Démarrage rapide

Installation

# From PyPI
pip install rag-chunk          # basic
pip install rag-chunk[tiktoken] # with optional tiktoken support

Astuce – Si vous travaillez dans un environnement virtuel, assurez-vous que tiktoken est installé uniquement lorsqu’il vous faut un découpage exact en tokens.

Génération simple de chunks

rag‑chunk analyze examples/ --strategy paragraph
Vous obtiendrez un tableau indiquant le nombre de chunks, le rappel moyen (0 si aucune évaluation), et le répertoire où se trouvent les fragments.

Mesurer toutes les stratégies

rag‑chunk analyze examples/ \
  --strategy all \
  --chunk-size 100 \
  --overlap 20 \
  --output table
L’interface CLI exécutera quatre stratégies (taille fixe, fenêtre glissante, paragraphe et découpage récursif par caractère) et fournira une comparaison concise.

Valider avec un fichier de test

rag‑chunk analyze examples/ \
  --strategy all \
  --chunk-size 150 \
  --overlap 30 \
  --test-file examples/questions.json \
  --top-k 3 \
  --output json > results.json
Le JSON résultant contiendra le rappel global par stratégie et des métriques détaillées par question.


Choisir la bonne stratégie

Stratégie Quand l'utiliser Recommandation de taille de chunk
Taille fixe Latence uniforme, comparaison de référence 150–250 mots (ou tokens avec --use‑tiktoken)
Fenêtre glissante Paragraphes longs où la fuite de contexte est importante 120–200 mots, 20–30 % de chevauchement
Paragraphe Markdown ou prose avec des sections claires Variable – limites naturelles de paragraphes
Découpage récursif par caractère Textes très riches en sémantique, intégration LangChain Selon les paramètres par défaut de LangChain, mais vous pouvez surcharger avec --chunk‑size

Si le rappel_moyen d’une stratégie est inférieur à 0,70, envisagez d’ajuster la taille des chunks, de changer de stratégie ou d’ajouter davantage de tokens de chevauchement.


Étendre rag‑chunk

Si vous avez un algorithme de découpage propriétaire, vous pouvez l’intégrer :

# src/chunker.py
from typing import List, Dict
\def my_custom_chunks(text: str, chunk_size: int, overlap: int) -> List[Dict]:
    chunks = []
    # Votre logique ici – par ex., découper par titres markdown spécifiques
    return chunks

# Register in the global strategies
STRATEGIES = {
    "custom": my_custom_chunks,
    ...
}

Exécutez via l'interface CLI :

rag‑chunk analyze docs/ --strategy custom --chunk-size 180


Cas d'utilisation concrets

  1. Prototype de modèle RAG – Mesurez rapidement à quel point vos embeddings capturent un contenu significatif.
  2. Ajustement d’index de production – Réduisez le nombre de chunks pour diminuer le stockage tout en conservant le rappel.
  3. Frontières de tokens spécifiques au modèle – Pour GPT‑4 avec un contexte de 32 k tokens, générez exactement des chunks de 512 tokens qui correspondent.
  4. Vérifications CI automatisées – Intégrez rag‑chunk comme étape dans votre pipeline CI pour identifier les régressions dans la qualité des chunks.

Obtenir de l’aide et contribuer

  • Code source – https://github.com/messkan/rag‑chunk
  • Documentation – Lisez le README complet sur le dépôt ou utilisez rag‑chunk --help.
  • Tickets/PRs – Le dépôt est ouvert aux pull requests ; sentez‑vous libres de proposer de nouvelles stratégies ou d’améliorer la doc.
  • Communauté – Contactez la page des issues si vous rencontrez un bug ou avez une demande de fonctionnalité.

TL;DR

  • rag‑chunk est un CLI Python sous licence MIT qui vous permet de mesurer les stratégies de découpage RAG.
  • Installez via pip install rag‑chunk[tiktoken].
  • Exécutez des benchmarks rapides avec rag‑chunk analyze <folder> --strategy all --chunk-size 150.
  • Exportez les résultats sous forme de tableaux, JSON ou CSV ; ajustez la précision en token avec --use‑tiktoken.

Précisez votre choix de découpage, obtenez des métriques exploitables et accélérer le développement de votre pipeline RAG dès aujourd’hui !

Original Article: Voir l’original

Partager cet article