Découper de façon réfléchie
- Leçon 5
- 50 min
- Module 2 : Ingérer les documents de façon reproductible
Leçon 5 sur 18 · RAG : créer une IA qui utilise vos donnéesDécouper de façon réfléchie
1. Définir le problème de connaissances
2. Ingérer les documents de façon reproductible
3. Créer et comparer la récupération
4. Construire des réponses fondées sur les sources
5. Évaluer et déboguer le pipeline
6. Maintenir et protéger la base de connaissances
Ce que vous saurez faire
Découpez chaque document analysé en morceaux que la recherche retourne. Choisissez les coupures de façon réfléchie. Ainsi, un tableau reste entier, chaque morceau indique sa source, et vous connaissez l’effet de votre choix sur la recherche.
Avant de commencerCe qu’il faut savoir et avoir sous la main
Ce que vous devez savoir
- Les blocs, les sections et les positions des caractères, vus dans Analyser et normaliser.
- hit@5, la proportion de questions avec un passage pertinent parmi les 5 premiers résultats, vu dans Une référence de base par mots-clés.
Ce qu’il vous faut sur votre ordinateur
- Le projet avec
parse.pyet la commandeparse, de Analyser et normaliser : exercice guidé.python -m pytestaffiche20 passed(20 tests réussis). - Un terminal dans
~/projects/policy-assistant, avec.venvactivé.
Testé avec Python 3.12.13 sur macOS (Apple silicon). Les nombres de cette leçon reflètent ce moment précis. Les outils et les modèles changent vite; la façon de les comparer reste valable.
Des fiches tirées d’un livre de recettes
Section intitulée « Des fiches tirées d’un livre de recettes »Vous copiez un gros livre de recettes sur des fiches pour trouver rapidement une recette. Il y a deux façons de faire.
La façon rapide : écrivez exactement 100 mots sur chaque fiche, puis commencez la suivante. C’est rapide, et toutes les fiches ont la même taille. Mais une liste d’ingrédients commence maintenant sur une fiche et se termine sur la suivante. Et une fiche qui commence par « cuire pendant 40 minutes » ne dit pas de quel gâteau il s’agit.
La façon soignée : une fiche par recette, avec le nom de la recette en haut. Les fiches ont des tailles différentes, et vous devez trouver où chaque recette commence. Mais chaque fiche est autonome : vous pouvez la prendre et l’utiliser seule.
Le problème : la recherche retourne des morceaux, pas des documents
Section intitulée « Le problème : la recherche retourne des morceaux, pas des documents »La recherche ne donne pas des documents entiers à l’assistant. Elle retourne les 5 premiers morceaux, et le modèle lit seulement ceux-là. Un document entier est trop gros et trop général. La politique de garantie compte sept sections, et une question sur les arroseurs nécessite une seule ligne d’un tableau. La référence de base du module 1 utilisait les sections des fichiers Markdown comme morceaux. Les 36 documents sont maintenant analysés, et le projet a besoin d’une règle commune.
La règle la plus simple est la façon rapide : 100 mots par morceau. Voici ce qu’elle donne sur la politique de garantie. Regardez où le deuxième morceau se termine et où le troisième commence :
…nd metal sheds, greenhouses | 5 years | glass and polycarbonate panels: 1 yearWatering | hoses, hose reels, sprinklers,timers | 1 year | noneSmall kitchen appliances | kettles, t…La ligne des produits d’arrosage est coupée en deux. Un morceau dit « arroseurs », mais pas pour combien de temps; le suivant dit « 1 an », mais pas pour quoi. La question Q34 de Grace est « Combien de temps dure la garantie d’un arroseur de jardin? ». Aucun morceau ne contient à lui seul la réponse.
L’idée : des segments, découpés de trois façons
Section intitulée « L’idée : des segments, découpés de trois façons »Un segment est un morceau de document que l’index stocke et que la recherche retourne comme un résultat. Le découpage consiste à couper les documents en segments. Les passages du module 1 étaient un type de segment : une section Markdown chacun. Désormais, les passages que la recherche retourne sont des segments. Le fichier chunk.py du projet propose trois façons de les créer.
- Taille fixe : des fenêtres de 100 mots, l’une après l’autre. C’est la façon rapide des fiches. La coupure tombe au 100e mot : dans une phrase, une liste ou une ligne de tableau.
- Avec chevauchement : des fenêtres de 100 mots, mais chacune commence 75 mots après la précédente. Donc, 25 mots se répètent. Une phrase coupée à la fin d’un segment est entière dans le suivant.
- Selon la structure : un segment par section, de son titre jusqu’au titre suivant. Une section de plus de 200 mots est divisée entre deux blocs, jamais dans un tableau. Le titre du document précède chaque segment. Le titre de la section aussi, quand un segment poursuit une section. C’est la façon soignée des fiches.
Pour l’outil de découpage, un « mot » est tout morceau de texte entre deux espaces. Donc, le | entre deux cellules de tableau compte aussi comme un mot.
Petit exemple détaillé : une phrase, trois découpages
Section intitulée « Petit exemple détaillé : une phrase, trois découpages »Prenez la première section de la politique de garantie, Ce que couvre la garantie. Sa dernière phrase est « Un article réparé ou remplacé conserve la période restante de la garantie d’origine; aucune nouvelle garantie ne commence. » Elle occupe les caractères 257 à 369 du texte analysé. Le tableau montre ce que chaque méthode en fait. Les fenêtres sont plus petites ici, soit 50 mots, pour que la coupure tombe dans la phrase.
| Méthode (taille) | Segment | Caractères | Ce qui arrive à la phrase |
|---|---|---|---|
| Fixe (50 mots) | #0 | 0–317 | se termine par « …conserve la période restante de » |
| Fixe (50 mots) | #1 | 318–613 | commence par « la garantie d’origine; aucune nouvelle garantie ne commence » |
| Avec chevauchement (50, dont 12 répétés) | #1 | 244–542 | commence par « la solution. Un article réparé ou… » : la phrase est entière |
| Selon la structure | #0 | 27–369 | toute la section, précédée de « Politique de garantie de Larkfield » |
Les segments fixes coupent la phrase en deux. Aucune moitié ne dit qu’une réparation ne fait pas commencer une nouvelle garantie. Le chevauchement répète la fin du segment #0 au début du segment #1. Le segment #1 contient donc la phrase entière. Le coût est de 12 mots stockés deux fois. Le segment selon la structure contient toute la section, car il ne coupe jamais une section qui respecte la limite.
Explorez : la politique de garantie, découpée de trois façons
Section intitulée « Explorez : la politique de garantie, découpée de trois façons »L’explorateur ci-dessous montre la politique de garantie telle que l’analyseur la lit, avec chaque segment superposé au texte. Chaque couleur représente un segment; les couleurs alternent, et les mots dans deux segments sont orange. Un repère numéroté indique où chaque segment commence. Le symbole ✂ indique qu’il commence dans une phrase, une liste ou une ligne de tableau. La ligne pointillée représente le saut de page du PDF. Le tableau sous le document indique l’identifiant, les caractères, les pages et les sections de chaque segment. Tous les segments proviennent du fichier chunk.py du projet.
Explorer
Découper la politique de garantie en segments
Prédisez d’abord : Avec des segments fixes de 100 mots, en combien de segments le tableau de garantie est-il découpé? Et avec des segments selon la structure d'au plus 200 mots?
- Segments
- 5
- Mots par segment
- 84–100
- Le tableau
- coupé, 3 segments
- Titres de section
- 4 segments sur 5 sans titre
Segments de taille fixe (100 mots) : 5 segments pour les 484 mots du document. Le tableau est coupé en 3 segments (#0, #1, #2), donc certaines lignes sont séparées du nom de leurs colonnes. 4 segments sur 5 commencent au milieu d’une phrase, d’une liste ou d’une ligne de tableau, et 4 contiennent des parties de deux sections ou plus.
- un segment (les couleurs alternent)
- le segment suivant
- dans deux segments (répété)
- dans aucun segment
documents/warranty-policy.pdf · warranty-policy, version 5
#0Larkfield warranty policy
What the warranty covers
Our warranty covers defects in materials and workmanship under normal household use. The warranty period starts on the delivery date.
We repair the item, replace it, or refund it. We choose the remedy.
A repaired or replacement item keeps the remaining period of the original warranty; it does not start a new one.
Warranty periods by product category
| Product category | Examples | Warranty period | Exceptions |
|---|---|---|---|
| Hand garden tools | spades, rakes, pruners, shears | 2 years | none |
| Garden furniture | chairs, tables, loungers, benches | 2 years | cushions and ✂ #1fabric covers: 1 year |
| Corded power tools | hedge trimmers such as the HT-550, corded lawn mowers | 3 years | blades: not covered |
| Battery power tools | the Larkfield Volt 20 V range | 3 years | batteries and chargers: 1 year |
| Pressure washers | PW-2200, PW-2400 | 2 years | pump: 3 years; nozzles and hoses: 1 year |
| BBQs and grills | the Ember GR-310 | 2 years | stainless-steel burners: 5 years |
| Sheds and greenhouses | wooden and metal sheds, greenhouses | 5 years | glass and polycarbonate panels: 1 year |
| Watering | hoses, hose reels, sprinklers, ✂ #2timers | 1 year | none |
| Small kitchen appliances | kettles, toasters, blenders | 1 year | none |
| Lighting | indoor lamps, outdoor and solar lights | 1 year | none |
| Textiles | parasols, hammocks, outdoor rugs | 1 year | none |
| Larkfield Pro range | any product marked Pro | 5 years | covers trade use |
If a product fits two categories, the longer period applies.
What is not covered
- Normal wear.
- Misuse, accidents, and repairs or changes made by someone other than Larkfield.
- Rust from leaving tools outside.
- Frost damage, for example a pressure ✂ #3washer stored with water inside below 0 °C.
- Page 2Damage from the wrong fuel, voltage or chemicals.
- Commercial or trade use, except for the Larkfield Pro range.
- Consumable parts, such as blades, nozzles, filters and cutting line, unless the table lists them.
How to make a claim
Contact the help desk with your order number and a photo or short video of the fault.
For power tools and pressure washers, also give the serial number from the label on the product.
Do not send the product back until we ask you to. We send a free return label ✂ #4if we need the product.
Proof of purchase
Your order number is your proof of purchase. For a gift, the gift receipt or the giver's order number is enough.
Customers in Quebec
Customers in Quebec also have the legal warranty under Quebec law, in addition to this warranty. See the French document Garantie légale au Québec.
Safety problems
If a product smokes, sparks, overheats, smells of burning or leaks gas, stop using it and contact us at once. Safety notices win over this policy.
| # | ID du segment | Caractères | Pages | Mots | Sections |
|---|---|---|---|---|---|
| #0 | 521ff4295be4 | 0–613 | 1 | 100 | What the warranty covers / Warranty periods by product category |
| #1 | 7ac8fe213b88 | 614–1159 | 1 | 100 | Warranty periods by product category |
| #2 | 957c935ee2fa | 1160–1708 | 1 | 100 | Warranty periods by product category / What is not covered |
| #3 | 174d797eb4bd | 1709–2252 | 1, 2 | 100 | What is not covered / How to make a claim |
| #4 | 0131e6fb8ee6 | 2253–2744 | 2 | 84 | How to make a claim / Proof of purchase / Customers in Quebec / Safety problems |
Description textuelle de l’explorateur
L’explorateur montre la politique de garantie telle que l’analyseur la lit : le titre, sept titres de section, les paragraphes, la liste Ce qui n’est pas couvert et le tableau de 12 produits à 4 colonnes. Une ligne pointillée marque le début de la page 2, dans la liste. Deux commandes : la méthode (taille fixe, avec chevauchement, selon la structure) et la taille (fixe et avec chevauchement : 50, 100 ou 200 mots; selon la structure : au plus 100, 200 ou 400 mots). L’affichage indique le nombre de segments, les mots par segment, le traitement du tableau et le nombre de segments sans titre initial.
Taille fixe, 100 mots (au départ) : 5 segments de 84 à 100 mots. Le tableau est découpé en 3 segments (#0, #1 et #2). Et 4 des 5 segments commencent dans un bloc, sans titre. Le segment #1 se termine dans la ligne d’arrosage après « arroseurs, ». Le segment #2 commence par « minuteries | 1 an | aucun ». À 50 mots : 10 segments, le tableau découpé en 5. À 200 mots : 3 segments, le tableau découpé en 2.
Avec chevauchement, 100 mots dont 25 répétés : 7 segments; le tableau occupe 4 segments. L’index stocke 634 mots pour un document de 484 mots. À 50 mots : 13 segments, le tableau dans 6. À 200 mots : 3 segments, le tableau dans 2.
Selon la structure, au plus 200 mots : 8 segments de 18 à 200 mots, un par section, plus un. La section du tableau dépasse 200 mots. Sa dernière phrase, « Si un produit correspond à deux catégories, la période la plus longue s’applique. », devient donc le segment #2, précédé du titre du document et de la section. Le tableau est entier dans le segment #1, avec son titre. Au plus 100 mots : 9 segments; le titre de la section du tableau devient un segment distinct de 8 mots. Le tableau reste entier (200 mots), car un tableau n’est jamais divisé. Au plus 400 mots : 7 segments, un par section; le tableau et sa dernière phrase forment un segment de 210 mots.
Avec des segments fixes de 100 mots, le tableau est découpé en trois segments, et les coupures tombent dans les lignes. Avec des segments selon la structure, le tableau forme un seul segment. « Politique de garantie de Larkfield » et le titre de sa section apparaissent en haut. Essayez aussi les tailles. Les segments fixes coupent le tableau à chaque taille. Les segments selon la structure le gardent entier à chaque taille, même à 100 mots, car l’outil ne divise jamais un tableau.
La même comparaison en image fixe, avec les vrais identifiants et positions des segments :
Description textuelle du diagramme
Au milieu, la politique de garantie analysée, de haut en bas : le titre, la section Ce que couvre la garantie, le titre Périodes de garantie par catégorie de produits et son tableau, la phrase après le tableau, Ce qui n’est pas couvert (la page 2 commence dans cette liste), Comment faire une réclamation, Preuve d’achat, Clients au Québec et Problèmes de sécurité. À gauche, les 5 segments fixes de 100 mots : #0 521ff4295be4, caractères 0 à 613, page 1; #1 7ac8fe213b88, 614 à 1 159, page 1; #2 957c935ee2fa, 1 160 à 1 708, page 1; #3 174d797eb4bd, 1 709 à 2 252, pages 1 et 2; #4 0131e6fb8ee6, 2 253 à 2 744, page 2. Des lignes orange pointillées montrent que les segments #1 et #2 commencent dans le tableau. À droite, les 8 segments selon la structure : #0 144a40851685, 27 à 369; #1 d9a5bd8ea531, 371 à 1 453, le titre et le tableau entier, 200 mots; #2 b47ef9ac1993, 1 455 à 1 515, 18 mots; #3 a4dc9ec49818, 1 517 à 1 967; #4 3f7023270716, 1 969 à 2 276; #5 ae23e5ca9b13, 2 278 à 2 409; #6 66cd6ab97679, 2 411 à 2 579; #7 86d27b0a52ac, 2 581 à 2 744. Chaque segment selon la structure couvre une section.
Pourquoi le titre au début compte-t-il autant? Larkfield a deux guides d’entretien presque identiques : un pour le PW-2200 et un pour le PW-2400. Les deux ont une section Caractéristiques techniques. Un segment contenant seulement le texte de cette section ne dit pas quel nettoyeur à pression il décrit. Avec le titre au début, le segment commence par « Nettoyeur à pression électrique PW-2200 : entretien et pièces ». La recherche et le modèle peuvent maintenant distinguer les deux.
La collection de Larkfield : le choix change-t-il la recherche?
Section intitulée « La collection de Larkfield : le choix change-t-il la recherche? »Amira a découpé les 36 documents de trois façons. Elle a testé les 59 questions de Grace avec la recherche par mots-clés du module 1. Avec les tailles par défaut, la collection donne 185 segments selon la structure (une médiane de 34 mots), 80 segments fixes et 88 segments avec chevauchement (100 mots chacun). Elle a ensuite mesuré hit@5 :
| Segments | hit@5 | Mots dans les 5 premiers résultats (médiane) |
|---|---|---|
| Selon la structure | 0.797 | 197 |
| Fixes, 100 mots | 0.864 | 432 |
| Avec chevauchement, 100 mots | 0.881 | 455 |
Tomás lit la colonne hit@5. « Les segments fixes gagnent. Prenez-les, et oubliez les titres. » Priya lit la dernière colonne. Les 5 premiers segments fixes contiennent une médiane de 432 mots; les 5 premiers segments selon la structure en contiennent 197. C’est plus du double de texte. Évidemment, plus de texte permet de trouver plus de preuves. La comparaison n’est pas équitable.
Un test équitable donne à chaque méthode la même quantité de texte. Prenez les résultats dans l’ordre du classement. Arrêtez avant que le segment suivant dépasse la limite. Mesurez ensuite hit avec 100, 200 et 400 mots de contexte. Amira l’a fait :
- Selon la structure
- Fixe, 100 mots
- Avec chevauchement, 100 mots
Description textuelle du graphique
Un graphique à trois lignes. L’axe horizontal représente la taille du contexte : 100, 200 et 400 mots pris au début des résultats. L’axe vertical représente hit : la proportion des 59 questions avec au moins un segment pertinent dans ce contexte. Segments selon la structure : 0.661, 0.746, 0.864. Segments fixes de 100 mots : 0.661, 0.746, 0.864, exactement les mêmes valeurs, donc les deux lignes se superposent. Segments avec chevauchement : 0.678, 0.746, 0.831.
À taille de contexte égale, les trois outils de découpage sont à égalité. Les segments selon la structure et fixes donnent exactement le même hit à 100, 200 et 400 mots. Les segments avec chevauchement gagnent une question à 100 mots et en perdent deux à 400 mots. Avec 59 questions, une ou deux questions ne constituent pas une différence. Les essais enregistrés du cours avec la recherche vectorielle, la méthode du module 3, donnent aussi des résultats proches. Ils mesurent le rappel : la proportion de tous les passages pertinents présents dans le contexte, pas seulement le premier (Mesurer la récupération le définit). Avec 100, 200 et 400 mots, le rappel est de 0,681, 0,794 et 0,870 pour les segments selon la structure. Il est de 0,590, 0,751 et 0,870 pour les segments fixes, et de 0,667, 0,768 et 0,862 avec chevauchement. À 400 mots, les trois sont égaux.
Pourquoi la mesure n’a pas changé ici
Section intitulée « Pourquoi la mesure n’a pas changé ici »Trois raisons, et chacune nous apprend quelque chose.
Premièrement, les documents de Larkfield sont courts : 6 520 mots dans 36 documents, soit environ 180 mots chacun. Une fenêtre de 100 mots contient souvent deux ou trois courtes sections entières. Elle coupe donc rarement la phrase nécessaire à une question.
Deuxièmement, hit@5 est une mesure peu précise. Elle compte un segment comme pertinent s’il couvre une partie quelconque de la bonne section. Pour Q34, la question sur l’arroseur, le premier résultat du découpage fixe est le segment #0 de la politique de garantie, 521ff4295be4. Il couvre le début de la section du tableau, donc la mesure compte un résultat pertinent. Mais il contient seulement la première ligne du tableau et une partie de la deuxième : aucun arroseur, aucun « 1 an ». La réponse se trouve dans deux autres segments, coupée en deux. La mesure ne le voit pas.
Troisièmement, la comparaison à k égal cachait la taille. Voici la leçon générale : comparez les outils de découpage à taille de contexte égale, pas à nombre de résultats égal.
Alors, que change le découpage, sinon ce nombre? Trois choses importantes dès le module 4, quand le modèle lit les segments et les cite.
- Les tableaux restent entiers. Le modèle lit « Arrosage | tuyaux, dévidoirs, arroseurs, minuteries | 1 an | aucun » comme une seule ligne, avec les noms des colonnes au-dessus.
- Les titres accompagnent le texte. Chaque segment indique son document et sa section d’origine : le PW-2200, pas « Caractéristiques techniques ».
- Les citations sont précises. Un segment selon la structure correspond à une section. Une citation pointe donc vers Périodes de garantie par catégorie de produits, page 1. Un segment fixe peut couvrir quatre sections et deux pages.
Le cours garde les segments selon la structure d’au plus 200 mots comme choix par défaut. Sur une collection de longs documents, les nombres peuvent différer. Mesurez avec vos propres questions, à taille de contexte égale.
Quand utiliser chaque méthode, et ce qu’elle coûte
Section intitulée « Quand utiliser chaque méthode, et ce qu’elle coûte »- Taille fixe convient aux textes sans structure, comme les journaux de clavardage ou les transcriptions. Tous les segments ont la même taille, ce qui facilite la planification du budget de contexte. Vous perdez la structure : phrases, lignes et listes coupées, et segments qui n’indiquent pas leur provenance.
- Chevauchement protège une phrase qui tombe sur une coupure. Il coûte du texte répété : les 88 segments avec chevauchement de la collection stockent 7 820 mots pour 6 520. Deux résultats peuvent montrer la même phrase.
- Découpage selon la structure nécessite un analyseur qui trouve les titres, ce que vous avez maintenant. Ses segments ont des tailles inégales (de 18 à 200 mots pour la politique de garantie). Certains sont très courts. En retour, chaque segment forme une unité qu’une personne peut vérifier.
Erreur courante
Un long texte, coupé tous les 100 mots
Symptôme : le premier prototype de Tomás réunissait le texte des 36 documents en un long texte, coupé tous les 100 mots. « Un découpage, c’est un découpage », disait-il. Amira a vérifié les 66 fenêtres. 33 contiennent du texte de deux documents. 12 mélangent un document public et un document réservé au personnel. La première de ces fenêtres termine la page publique Contact and hours (coordonnées et heures d’ouverture) et commence une procédure interne :
… in French is available Monday to Friday, 9:00 to 17:00 Eastern Time. || Courier claims for damaged or lost parcels Purpose We file claims with the courier …Cause : les coupures ignorent les documents, les sections et les étiquettes d’accès. Une telle fenêtre n’a pas de document, de version ou d’étiquette d’accès unique. Avec une étiquette publique, un assistant public peut montrer du texte réservé au personnel. Avec une étiquette réservée au personnel, une question publique perd la moitié publique.
Correction : découpez chaque document séparément et attribuez à chaque segment les métadonnées de son document. Les trois outils de découpage du projet le font, même celui à taille fixe. Une fenêtre ne déborde jamais dans le document suivant. Le script est reference/c09/m02/one_long_text.py; vous n’avez pas besoin de l’exécuter.
Pour un véritable assistant : la structure et les autorisations font partie des données, pas de la décoration. Un segment qui oublie son document ne peut pas être cité, filtré par date ou protégé par une étiquette d’accès. La prochaine leçon donne ces métadonnées à chaque segment.
Exercice guidé : ajouter les outils de découpage
Section intitulée « Exercice guidé : ajouter les outils de découpage »chunk.py utilise metadata.py, qui contient l’enregistrement Chunk et son identifiant. Copiez les deux maintenant; la prochaine leçon explique metadata.py.
-
Copiez les deux fichiers et le test depuis l’instantané. Sur macOS et Linux :
Fenêtre de terminal cp ../nextia-learning-labs/C09/snapshots/end-of-m02/policy_assistant/chunk.py policy_assistant/cp ../nextia-learning-labs/C09/snapshots/end-of-m02/policy_assistant/metadata.py policy_assistant/cp ../nextia-learning-labs/C09/snapshots/end-of-m02/tests/test_chunk.py tests/Sur Windows, dans PowerShell :
Fenêtre de terminal Copy-Item ..\nextia-learning-labs\C09\snapshots\end-of-m02\policy_assistant\chunk.py policy_assistant\Copy-Item ..\nextia-learning-labs\C09\snapshots\end-of-m02\policy_assistant\metadata.py policy_assistant\Copy-Item ..\nextia-learning-labs\C09\snapshots\end-of-m02\tests\test_chunk.py tests\ -
Ouvrez
policy_assistant/chunk.py. Trouvezwindows,fixed,overlappingetstructure, ainsi que les trois nombres en haut :SIZE = 100,OVERLAP = 25etMAX_WORDS = 200. -
Exécutez les tests. Vous voyez
24 passed(24 tests réussis) :Fenêtre de terminal python -m pytestUn nouveau test vérifie que l’outil à taille fixe coupe le tableau. Un autre vérifie que l’outil de découpage selon la structure le garde entier.
-
Lancez Python avec
pythonet découpez la politique de garantie de deux façons :Python session, in ~/projects/policy-assistant from policy_assistant.parse import parsefrom policy_assistant.chunk import fixed, overlapping, structuredoc = parse("corpus/documents/warranty-policy.pdf")source = "documents/warranty-policy.pdf"for c in fixed(doc, source):print(c.position, c.start, c.end, len(c.text.split()), c.sections)for c in structure(doc, source):print(c.position, c.start, c.end, len(c.text.split()), c.sections)Appuyez sur Entrée sur la ligne vide après chaque boucle. La sortie :
0 0 613 100 ('What the warranty covers', 'Warranty periods by product category')1 614 1159 100 ('Warranty periods by product category',)2 1160 1708 100 ('Warranty periods by product category', 'What is not covered')3 1709 2252 100 ('What is not covered', 'How to make a claim')4 2253 2744 84 ('How to make a claim', 'Proof of purchase', 'Customers in Quebec', 'Safety problems')0 27 369 60 ('What the warranty covers',)1 371 1453 200 ('Warranty periods by product category',)2 1455 1515 18 ('Warranty periods by product category',)3 1517 1967 80 ('What is not covered',)4 1969 2276 64 ('How to make a claim',)5 2278 2409 27 ('Proof of purchase',)6 2411 2579 30 ('Customers in Quebec',)7 2581 2744 31 ('Safety problems',) -
Examinez la coupure dans le tableau et le début du segment de tableau découpé selon la structure :
Python session (continued) print(fixed(doc, source)[1].text[-120:])print(structure(doc, source)[1].text[:160])nd metal sheds, greenhouses | 5 years | glass and polycarbonate panels: 1 yearWatering | hoses, hose reels, sprinklers,Larkfield warranty policyWarranty periods by product categoryProduct category | Examples | Warranty period | ExceptionsHand garden tools | spades, rakes, prGardez Python ouvert pour la prochaine tâche.
Comparez les deux listes dans l’explorateur avec « Fixed size, 100 words » (taille fixe, 100 mots) et « Structure-aware, at most 200 words » (selon la structure, au plus 200 mots). Ce sont les mêmes segments.
À vous de jouer : segments avec chevauchement
Section intitulée « À vous de jouer : segments avec chevauchement »Faites une prédiction avant d’exécuter le code : combien de segments la politique de garantie donne-t-elle avec 100 mots et 25 mots répétés? Où commence le segment 1 : avant ou après le caractère 613, où se termine le segment fixe 0? Ensuite, exécutez :
for c in overlapping(doc, source): print(c.position, c.start, c.end, len(c.text.split()))Afficher la réponse
0 0 613 1001 473 1006 1002 878 1424 1003 1297 1846 1004 1709 2252 1005 2129 2695 1006 2537 2744 34Sept segments, soit deux de plus qu’avec l’outil à taille fixe. Le segment 1 commence au caractère 473, avant 613. Ses 25 premiers mots sont les 25 derniers du segment 0, « garden tools | spades, rakes, pruners, shears | 2 years | none Garden furniture … » (outils de jardinage | bêches, râteaux, sécateurs, cisailles | 2 ans | aucun Mobilier de jardin…). Le tableau reste coupé, maintenant en quatre segments, et certaines lignes sont stockées deux fois. Le chevauchement protège une phrase à une coupure; il ne garde pas un tableau entier. Quittez Python avec exit().
Vérification des connaissances
Section intitulée « Vérification des connaissances »Vérifiez votre compréhension
Dans vos mots : qu'est-ce qu'un segment? Pourquoi le découpage compte-t-il même quand la mesure de recherche ne change pas?
Afficher la réponse
Un segment est une partie d’un document que l’index stocke et que la recherche renvoie comme un seul résultat. Le découpage détermine ce que le modèle lit ensuite et ce vers quoi une citation pointe. Un segment découpé selon la structure garde une ligne de tableau entière et conserve le titre du document et de la section. Il couvre une seule section, ce qui rend la citation précise. Un segment fixe peut couper une ligne en deux et mélanger quatre sections. hit@5 compte tout segment qui touche la bonne section. Il ne peut donc pas voir ces différences.
Votre réponse contient-elle les points principaux de la nôtre ?
Connectez-vous et inscrivez-vous au cours pour enregistrer vos réponses. Chaque vérification compte pour le certificat.
Vérifiez votre compréhension
Faites une prédiction : l'outil de découpage A obtient un hit@5 de 0,88 et ses 5 premiers résultats contiennent environ 450 mots. L'outil B obtient un hit@5 de 0,80 et ses 5 premiers résultats contiennent environ 200 mots. A est-il meilleur? Que mesureriez-vous avant de décider?
Afficher la réponse
Pas nécessairement. Les 5 premiers résultats de A contiennent plus du double de texte. Plus de texte permet de trouver plus de preuves. Mesurez les deux avec une taille de contexte égale. Prenez les résultats dans l’ordre du classement, jusqu’à 100, 200 et 400 mots. Comparez le taux de réussite (ou le rappel) à chaque taille. C’est ce qui s’est produit avec la collection de Larkfield. Les segments fixes avaient le hit@5 le plus élevé (0,864 contre 0,797). Avec une taille de contexte égale, les deux étaient à égalité.
Votre réponse contient-elle les points principaux de la nôtre ?
Connectez-vous et inscrivez-vous au cours pour enregistrer vos réponses. Chaque vérification compte pour le certificat.
Vérifiez votre compréhension
Tomás veut réunir tous les documents en un texte et le couper tous les 100 mots, parce que c'est plus simple. Donnez deux problèmes, dont un lié à l'accès.
Afficher la réponse
Premièrement, les fenêtres traversent les limites des documents. Dans la collection de Larkfield, 33 fenêtres sur 66 contiennent du texte de deux documents. Un segment n’a donc pas de document, de version ou de section unique à citer. Deuxièmement, 12 fenêtres mélangent du texte public et du texte réservé au personnel. Quelle que soit l’étiquette d’accès attribuée à une telle fenêtre, elle est incorrecte pour la moitié du texte. Un assistant public peut montrer du texte réservé au personnel ou perdre du texte public. Découpez chaque document séparément et copiez ses métadonnées dans chaque segment.
Votre réponse contient-elle les points principaux de la nôtre ?
Connectez-vous et inscrivez-vous au cours pour enregistrer vos réponses. Chaque vérification compte pour le certificat.
Récapitulatif
- Un segment est une partie d’un document que l’index stocke et que la recherche renvoie. Le découpage peut suivre une taille fixe, une taille avec des mots répétés (chevauchement) ou la structure du document. Cette dernière méthode garde une section par segment, les tableaux entiers, et le titre du document et de la section au début.
- Dans la politique de garantie, les segments fixes de 100 mots coupent le tableau en 3 segments et la ligne d’arrosage en deux. Les segments découpés selon la structure gardent le tableau entier dans un segment, avec son titre.
- Pour les 5 premiers résultats, les segments fixes ont obtenu un meilleur score (hit@5 0.864 contre 0.797). Mais leurs 5 premiers résultats contiennent deux fois plus de texte. Avec une taille de contexte égale, les trois outils de découpage sont à égalité sur cette collection.
- La mesure n’a pas changé parce que les documents sont courts et que hit@5 vérifie seulement la section. Le découpage change quand même ce que le modèle lit et ce vers quoi une citation pointe.
- Découpez chaque document séparément, jamais un seul long texte : un segment doit conserver un document, une version et une étiquette d’accès uniques.
Ensuite, chaque segment reçoit un identifiant stable et ses métadonnées, et le projet reçoit un index sur disque.
Leçon suivante : Conserver les métadonnées