En general el tamaño de un Document será más grande de lo que un modelo de ML debería procesar, por lo que debemos partilo o splittearlo en secciones más pequeñas para que sea digerible.

Esta tarea la llevará a cabo el TextSplitter, un componente (conocido como Document Transformer) que se encargará de partir el documento en diferentes sub secciones sin perder el significado semántico, es decir, manteniendo la coherencia entre los nuevos sub-documentos para que el contexto general de una zona no se pierda por completo.

¿Cómo funcionan los TextSplitters?

  1. Dividirán el texto en fragmentos pequeños y semánticamente significativos (a menudo oraciones).
  2. Combinarán estos fragmentos pequeños en fragmentos más grandes hasta que se alcance un tamaño predeterminado (será medido por alguna función).
  3. Una vez se alcanza ese tamaño, hacen de ese fragmento su propio texto y luego comienzan a crear un nuevo fragmento de texto con cierta superposición para mantener el contexto entre fragmentos.

El TextSplitter será personalizable en 2 aspectos: Cómo se divide el texto y cómo se mide el tamaño del fragmento.

El TextSplitter por defecto de LangChain: RecursiveCharacterSplitter

LangChain ofrece un separador de texto por defecto: el RecursiveCharacterSplitter. Este separador de texto toma una lista de caracteres y trata de crear fragmentos basándose en la división del primer caracter, pero si esta división resulta demasiado grande, entonces pasará al siguiente.

La jerarquía de relevancia del separador será: