Skip to content
Learni
View all tutorials
Intelligence Artificielle

Comment maîtriser le semantic chunking avancé en 2026

18 minADVANCED

Introduction

Le semantic chunking dépasse le simple découpage par caractères ou tokens. Il regroupe les phrases selon leur signification grâce aux embeddings, améliorant la pertinence des contextes fournis aux LLM. En 2026, les systèmes RAG exigent une précision élevée pour éviter les hallucinations et optimiser les coûts de tokens. Cette approche utilise la similarité cosinus et des algorithmes de clustering pour créer des segments cohérents. Vous apprendrez à construire un pipeline complet, de l'extraction de texte à l'export des chunks optimisés. Chaque étape inclut des considérations de performance et de scalabilité adaptées aux environnements de production.

Prérequis

  • Python 3.11+
  • Connaissances solides en NLP et vector embeddings
  • Accès à un GPU ou TPU pour les calculs intensifs
  • Familiarité avec scikit-learn et sentence-transformers

Installation des dépendances

terminal
pip install sentence-transformers scikit-learn numpy pandas

Cette commande installe les bibliothèques essentielles pour générer des embeddings et effectuer du clustering sémantique. Évitez les versions obsolètes de scikit-learn qui peuvent causer des incompatibilités avec les matrices de similarité.

Chargement du modèle d'embeddings

embeddings.py
from sentence_transformers import SentenceTransformer
import numpy as np

model = SentenceTransformer('all-MiniLM-L6-v2')

def get_embeddings(sentences: list[str]) -> np.ndarray:
    return model.encode(sentences, convert_to_numpy=True, normalize_embeddings=True)

Le modèle all-MiniLM-L6-v2 offre un excellent compromis vitesse/qualité. La normalisation des embeddings facilite le calcul direct de la similarité cosinus sans division supplémentaire.

Calcul de la matrice de similarité

similarity.py
from sklearn.metrics.pairwise import cosine_similarity

def compute_similarity_matrix(embeddings: np.ndarray) -> np.ndarray:
    return cosine_similarity(embeddings)

Cette matrice capture les relations sémantiques entre toutes les paires de phrases. Elle sert de base pour identifier les frontières naturelles entre chunks.

Implémentation du chunking sémantique

semantic_chunker.py
import numpy as np

def semantic_chunking(sentences: list[str], embeddings: np.ndarray, threshold: float = 0.65) -> list[list[str]]:
    sim_matrix = cosine_similarity(embeddings)
    chunks = []
    current_chunk = [sentences[0]]
    for i in range(1, len(sentences)):
        if sim_matrix[i-1, i] >= threshold:
            current_chunk.append(sentences[i])
        else:
            chunks.append(current_chunk)
            current_chunk = [sentences[i]]
    chunks.append(current_chunk)
    return chunks

L'algorithme parcourt séquentiellement les phrases et coupe lorsque la similarité descend sous le seuil. Ajustez le threshold selon la densité sémantique de votre corpus.

Clustering hiérarchique avancé

hierarchical_chunker.py
from sklearn.cluster import AgglomerativeClustering

def hierarchical_semantic_chunking(embeddings: np.ndarray, n_clusters: int = 5) -> list[int]:
    clustering = AgglomerativeClustering(n_clusters=n_clusters, metric='cosine', linkage='average')
    return clustering.fit_predict(embeddings)

Le clustering hiérarchique permet de créer des chunks de taille variable tout en respectant la structure sémantique globale du document. Idéal pour les textes longs et complexes.

Bonnes pratiques

  • Toujours normaliser les embeddings avant calcul de similarité
  • Tester plusieurs seuils sur un échantillon représentatif
  • Conserver un minimum de 3 phrases par chunk pour préserver le contexte
  • Monitorer la variance des tailles de chunks en production
  • Versionner les modèles d'embeddings utilisés

Erreurs courantes à éviter

  • Utiliser un seuil fixe sans validation sur le domaine métier
  • Oublier de traiter les phrases très courtes qui faussent la similarité
  • Ignorer la parallélisation lors du traitement de gros volumes
  • Ne pas gérer les cas où tous les embeddings sont quasi-identiques

Pour aller plus loin

Approfondissez ces techniques avec nos formations Learni dédiées au RAG et au NLP avancé.