Contenido del curso

Cómo dividir textos largos con LangChain

Resumen

Cuando trabajas con documentos largos en LangChain, los text splitters se vuelven una herramienta clave para dividir el contenido en fragmentos manejables sin perder coherencia. Esta guía te muestra qué son, por qué importan y cómo aplicarlos paso a paso si construyes aplicaciones con modelos de lenguaje como GPT.

Por qué necesitas dividir textos largos al usar modelos de lenguaje

Los modelos como GPT tienen un límite máximo de tokens que pueden procesar de una sola vez. Si intentas pasarle un libro completo, una transcripción extensa o un artículo largo, te vas a topar con la pared del contexto.

Aquí es donde entran los text splitters. Su trabajo es tomar un volumen grande de texto y partirlo en piezas más pequeñas, llamadas chunks, que sí caben dentro del límite del modelo.

¿Qué es un text splitter? Es una utilidad de LangChain que divide textos largos en fragmentos más pequeños llamados chunks, respetando límites de tokens y manteniendo coherencia semántica.

Hay tres razones principales por las que necesitas dividir el texto:

  • Límite de tokens: cada modelo acepta un número máximo de tokens por entrada, y los splitters ajustan los fragmentos a esa restricción.
  • Contexto entre fragmentos: aplicando superposiciones (overlap) entre chunks evitas perder información relevante en los cortes.
  • Coherencia semántica: no se trata solo de cortar por tamaño, sino de asegurar que cada fragmento tenga sentido por sí mismo.

Cómo funciona el RecursiveCharacterTextSplitter en LangChain

El splitter más común para empezar es el que recorre el texto recursivamente carácter por carácter. Para usarlo, primero cargas tu archivo de texto y luego configuras el objeto splitter con sus parámetros [2:00].

El flujo básico se ve así:

  1. Abres el archivo, por ejemplo un example.txt con contenido tipo Lorem Ipsum, y lo guardas en una variable.
  2. Lees el contenido y lo asignas a una variable como estado_de_la_union.
  3. Importas el splitter recursivo por caracteres y configuras sus parámetros.
  4. Creas el documento llamando al método que recibe una lista con tu texto.

Una vez creado el objeto, puedes acceder a cada fragmento por su índice. Por ejemplo, pedir el fragmento cero te devuelve el primer chunk que se generó.

Qué significan chunk size, overlap y length function

Estos tres parámetros definen cómo se corta tu texto y son los que más vas a tocar al ajustar resultados [2:30].

El chunk size establece cuántos caracteres tendrá cada fragmento. Si tu documento tiene 1.000 caracteres y eliges un chunk size de 100, obtendrás aproximadamente 10 fragmentos.

El overlap define cuántos caracteres se superponen entre un chunk y el siguiente. Si trabajas con chunks de 100 caracteres y un overlap de 20, cada fragmento incluirá los últimos 20 caracteres del anterior. Esto preserva continuidad y evita que una idea se rompa a la mitad.

La length function indica cómo se mide la longitud para hacer la división. Puedes medir por caracteres, por tokens o por la regla que necesites según tu caso.

¿Para qué sirve el overlap en un text splitter? Permite que cada chunk comparta caracteres con el anterior, manteniendo el contexto entre fragmentos para que el modelo no pierda información en los cortes.

Cómo usar separadores regex para dividir por patrones

Además de cortar por longitud, puedes pasarle un separador regex al splitter. Esto le dice que use una expresión regular para identificar dónde dividir, lo cual es útil cuando tu documento tiene patrones específicos como saltos de línea, encabezados o marcadores personalizados.

Con esta opción ganas control fino sobre los cortes y puedes adaptarlos a la estructura real del texto que estás procesando.

Cómo acceder a los fragmentos generados por el splitter

Después de crear el documento, cada chunk queda accesible como un objeto independiente. Puedes pedir el contenido completo o navegar fragmento por fragmento usando índices [4:30].

En una prueba con chunk size de 10 y overlap de 2, al pedir el fragmento cero el resultado fue simplemente la palabra Lorem. Cambiando el chunk size a 100, ese mismo fragmento contiene mucho más contenido. Esa es la flexibilidad que te da ajustar los parámetros: decides el nivel de granularidad según tu aplicación.

Explorar cada fragmento te permite verificar que la división tenga sentido antes de pasar los chunks al modelo o a un sistema de embeddings.

Qué otros text splitters puedes explorar en LangChain

El splitter recursivo por caracteres es solo el punto de partida. Dependiendo de tu caso, conviene probar otras variantes:

  • Splitters por tokens: dividen tomando como unidad los tokens del modelo, lo que se alinea mejor con los límites reales de procesamiento.
  • Splitters semánticos: cortan respetando el significado, agrupando frases o párrafos relacionados.
  • Splitters con separadores personalizados: ideales cuando tu texto tiene una estructura clara como capítulos, secciones o marcadores.

El reto ahora es tuyo: prueba dividir un mismo documento con distintos splitters, compara los resultados y comparte tus hallazgos en los comentarios.