Dans le dernier blog, nous avons appris comment charger des documents dans un format standard à l'aide des chargeurs de documents de LangChain. Une fois les documents chargés, l’étape suivante consiste à les diviser en morceaux plus petits. Ce processus peut sembler simple au premier abord, mais il existe des subtilités et des considérations importantes qui peuvent avoir un impact significatif sur les performances et la précision des tâches en aval.
Le fractionnement des documents est crucial car il garantit que le contenu sémantiquement pertinent est regroupé au sein du même bloc. Ceci est particulièrement important lorsque vous répondez à des questions ou effectuez d’autres tâches qui s’appuient sur les informations contextuelles présentes dans les documents.
Prenons l'exemple suivant : disons que nous avons une phrase sur la Toyota Camry et ses spécifications. Si nous divisons naïvement cette phrase, sans tenir compte du contexte, nous pourrions nous retrouver avec un morceau contenant une partie de la phrase et un autre morceau contenant la partie restante. Par conséquent, lorsque nous tentons de répondre à une question sur les spécifications de la Camry, nous n'aurons pas les informations complètes dans aucun des deux blocs, ce qui entraînera une réponse incorrecte ou incomplète.
La base de tous les séparateurs de texte dans LangChain consiste à diviser le texte en morceaux d'une taille spécifiée, avec un chevauchement facultatif entre les morceaux adjacents. Ceci est illustré dans le schéma suivant :
Letaille_morceaucorrespond à la taille de chaque morceau, qui peut être mesurée en caractères ou en jetons (nous discuterons des deux approches). Lechunk_overlapest une partie de texte partagée entre des morceaux consécutifs, permettant de conserver le contexte au-delà des limites des morceaux.
Tous les séparateurs de texte dans LangChain ont deux méthodes principales :créer_documents()etsplit_documents(). Ces méthodes suivent la même logique sous le capot mais exposent des interfaces différentes : l'une prend une liste de chaînes de texte et l'autre prend une liste de documents préexistants.
LangChain propose plusieurs types de séparateurs de texte, chacun avec ses propres atouts et cas d'utilisation. Voici quelques-uns des séparateurs les plus couramment utilisés :
LeCaractèreTextSplitterest un séparateur plus basique qui divise le texte en fonction d'un seul séparateur de caractère, tel qu'un espace ou une nouvelle ligne. Ce séparateur est utile lorsque vous traitez du texte qui n'a pa...
[Courte citation de 8% de l'article original]