Chunking (découpage en fragments)

IA / LLM 🟡 Mid

Définition

Découpe des documents en morceaux de taille bornée avant embedding, car un embedding résume mal un texte trop long et le contexte du LLM est limité. LangChain propose RecursiveCharacterTextSplitter (préserve paragraphes puis phrases), TokenTextSplitter et CharacterTextSplitter, réglés par chunkSize et chunkOverlap (recouvrement entre fragments, 0 par défaut).

Analogie

Découper un livre en fiches de lecture d'une page, chaque fiche répétant les dernières lignes de la précédenté pour ne pas couper une idée.

Exemple de code

import { RecursiveCharacterTextSplitter } from '@langchain/textsplitters';

const splitter = new RecursiveCharacterTextSplitter({
  chunkSize: 800,        // caractères par fragment
  chunkOverlap: 100,     // recouvrement pour ne pas couper une idée
  separators: ['\n## ', '\n\n', '\n', '. ', ' '],  // du plus fort au plus faible
});
const chunks = await splitter.createDocuments([markdown], [{ url }]);
// Chaque chunk garde ses metadata (url, titre) pour citer la source
for (const c of chunks) await indexChunk(c.pageContent, c.metadata);

Cas d'usage

Préparer une base RAG à partir de docs Markdown, PDF ou pages web.

Anti-pattern

Couper à taille fixe au milieu des tableaux ou des blocs de code : le fragment perd son sens.
#ia#rag

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre