Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Découper un document pour la recherche

Après cette leçon: Je peux découper un document pour que chaque morceau puisse être retrouvé.

Leçon de 60 min3 commandesLab agent de code IA : utiliser opencode pour expliquer et corriger du code, et vérifier son travail

Une réponse dans une longue fiche

Découper un document (en anglais chunking), c’est le couper en morceaux assez petits pour être trouvés et lus un par un. Cela compte parce que la recherche rend des morceaux entiers : leur taille décide de ce que vous recevez.

Une médiathèque a une seule fiche avec les horaires, les règles d’emprunt et les salles. Un visiteur demande les retards. La réponse tient en une phrase. Donner toute la fiche la noie.

À la fin de cette leçon

Remarque

Je peux découper un document pour que chaque morceau puisse être retrouvé.

Mots-clés

MotCe que ça veut direExemple
Morceauune partie d’un document découpé
Taillele nombre de mots d’un morceau8
Chevauchementles mots que partagent deux morceaux de suite
Titreune ligne qui ouvre une section
Recherchetrouver les morceaux qui répondent à une question

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Pourquoi couper un document en morceaux

Un seul vecteur pour toute une fiche mélange tous les sujets en une moyenne. Une question sur les retards ne paraît alors pas plus proche de la fiche qu’une question sur les salles.

Un petit morceau parle d’une seule chose : son vecteur pointe clairement quelque part. Il est aussi assez court pour entrer plus tard dans une consigne, à côté de quelques autres.

Taille et chevauchement

Le découpage le plus simple compte les mots. Un morceau de 8 mots contient 8 mots. Le morceau suivant commence quelques mots avant la fin du précédent. Ces mots partagés forment le chevauchement.

Le chevauchement évite de couper une idée en deux. Une phrase au bord d’un morceau se retrouve aussi au début du suivant.

Exemple travaillé : chevauchement sur dix mots

MorceauCommence au motMots
11a b c d
24d e f g
37g h i j

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Couper aux titres garde une idée entière

Un nombre de mots ne sait pas où finit une idée. Un titre, si. Si le document a des titres, commencez un nouveau morceau à chacun.

Le script ci-dessous fait les deux. Il coupe la fiche de la médiathèque à ses titres, puis découpe une section par mots avec un chevauchement.

Écrire le script de découpage, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const fiche = \"# Horaires\nLa médiathèque ouvre à 9 h du lundi au vendredi. Le samedi, elle ouvre à 10 h. Elle est fermée le dimanche.\n# Emprunt\nVous pouvez emprunter 8 livres pour 3 semaines. Un retard coûte 20 centimes par jour. Vous pouvez prolonger un livre deux fois en ligne.\n# Salles d’étude\nUne salle accueille 6 personnes. Réservez à l’accueil ou en ligne. Une réservation dure 2 heures.\";' 'function parTitre(texte) {' '  const parties = [];' '  const lignes = texte.split(\"\n\");' '  for (let i = 0; i < lignes.length; i++) {' '    if (lignes[i].startsWith(\"# \")) {' '      parties.push({ titre: lignes[i].slice(2), texte: \"\" });' '    } else {' '      const derniere = parties[parties.length - 1];' '      derniere.texte = (derniere.texte + \" \" + lignes[i]).trim();' '    }' '  }' '  return parties;' '}' > decoupe.js"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Écrire le script de découpage, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function parMots(texte, taille, chevauchement) {' '  const mots = texte.split(\" \");' '  const morceaux = [];' '  let debut = 0;' '  while (debut < mots.length) {' '    morceaux.push(mots.slice(debut, debut + taille).join(\" \"));' '    if (debut + taille >= mots.length) break;' '    debut = debut + taille - chevauchement;' '  }' '  return morceaux;' '}' 'const parties = parTitre(fiche);' 'console.log(\"Par titre :\", parties.length, \"morceaux\");' 'parties.forEach(function (partie) { console.log(\"-\", partie.titre, \":\", partie.texte.split(\" \").length, \"mots\"); });' 'const morceaux = parMots(parties[1].texte, 8, 3);' 'console.log(\"Par mots, taille 8, chevauchement 3 :\", morceaux.length, \"morceaux\");' 'morceaux.forEach(function (morceau) { console.log(\"-\", morceau); });' >> decoupe.js"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Lancer le script et lire les morceaux

Commande
docker exec -w /home/node/project agent node decoupe.js

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Ce qu’il affiche

LigneCe qu’elle montre
Par titre : 3 morceauxUn morceau par titre
- Emprunt : 24 motsLa taille du morceau du milieu
Par mots, taille 8, chevauchement 3 : 5 morceauxLe texte sur l’emprunt coupé en cinq
- deux fois en ligne.Ses trois premiers mots terminent aussi le morceau d’avant

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Une erreur fréquente

Attention

Beaucoup de gens croient que les gros morceaux sont plus sûrs parce qu’ils contiennent plus. Un gros morceau n’a qu’un vecteur qui mélange plusieurs sujets, et il remplit la consigne. Prenez le plus petit morceau qui contient encore une réponse entière.

À propos de ce labo et de sa source: Lab agent de code IA : utiliser opencode pour expliquer et corriger du code, et vérifier son travail

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.