Técnicas esenciales de fragmentación para crear mejores aplicaciones de LLM

Técnicas esenciales de fragmentación para crear mejores aplicaciones de LLM
Imagen por autor

Introducción

Cada aplicación de modelo de lenguaje grande (LLM) que recupera información enfrenta un problema simple: ¿cómo se divide un documento de 50 páginas en partes que un modelo realmente pueda usar? Entonces, cuando estás creando una aplicación de generación aumentada de recuperación (RAG), antes de que tu base de datos vectorial recupere algo y tu LLM genere respuestas, tus documentos deben dividirse en partes.

La forma en que divide los documentos en partes determina qué información puede recuperar su sistema y con qué precisión puede responder las consultas. Este paso de preprocesamiento, a menudo tratado como un detalle de implementación menor, en realidad determina si su sistema RAG tiene éxito o falla.

La razón es simple: la recuperación opera a nivel de fragmento, no a nivel de documento. La fragmentación adecuada mejora la precisión de la recuperación, reduce las alucinaciones y garantiza que el LLM reciba un contexto relevante y enfocado. Una fragmentación deficiente se propaga en cascada por todo el sistema, provocando fallos que los mecanismos de recuperación no pueden solucionar.

Este artículo cubre estrategias de fragmentación esenciales y explica cuándo utilizar cada método.

Por qué es importante fragmentar

Los modelos integrados y los LLM tienen ventanas de contexto finitas. Los documentos suelen superar estos límites. La fragmentación resuelve esto dividiendo documentos largos en segmentos más pequeños, pero introduce una importante compensación: los fragmentos deben ser lo suficientemente pequeños para una recuperación eficiente y, al mismo tiempo, lo suficientemente grandes para preservar la coherencia semántica.

La búsqueda vectorial opera en incrustaciones a nivel de fragmentos. Cuando los fragmentos mezclan varios temas, sus incorporaciones representan un promedio de esos conceptos, lo que dificulta la recuperación precisa. Cuando los fragmentos son demasiado pequeños, carecen de contexto suficiente para que el LLM genere respuestas útiles.

El desafío es encontrar el punto medio donde los fragmentos estén enfocados semánticamente pero sean contextualmente completos. Ahora vayamos a las técnicas de fragmentación reales con las que puedes experimentar.

1. Fragmentación de tamaño fijo

La fragmentación de tamaño fijo divide el texto en función de una cantidad predeterminada de tokens o caracteres. La implementación es sencilla:

Seleccione un tamaño de fragmento (comúnmente 512 o 1024 tokens) Agregue superposición (normalmente entre 10 y 20 %) Divida el documento

El método ignora por completo la estructura del documento. El texto se divide en puntos arbitrarios independientemente de los límites semánticos, a menudo a mitad de frase o mitad de párrafo. La superposición ayuda a preservar el contexto en los límites, pero no aborda el problema central de la división ciega a la estructura.

A pesar de sus limitaciones, la fragmentación de tamaño fijo proporciona una base sólida. Es rápido, determinista y funciona adecuadamente para documentos sin elementos estructurales fuertes.

Cuándo usarlo: implementaciones básicas, documentos simples, creación rápida de prototipos.

2. Fragmentación recursiva

La fragmentación recursiva mejora los enfoques de tamaño fijo al respetar los límites naturales del texto. Intenta dividirse en separadores progresivamente más finos (primero en los saltos de párrafo, luego en las oraciones y luego en las palabras) hasta que los fragmentos encajen dentro del tamaño objetivo.

Fragmentación recursiva

Fragmentación recursiva
Imagen por autor

El algoritmo intenta mantener unido el contenido relacionado semánticamente. Si la división en los límites del párrafo produce fragmentos dentro del límite de tamaño, se detiene allí. Si los párrafos son demasiado grandes, aplica recursivamente la división a nivel de oración sólo a fragmentos de gran tamaño.

Esto mantiene más la estructura original del documento que la división arbitraria de caracteres. Los fragmentos tienden a alinearse con los límites naturales del pensamiento, lo que mejora tanto la relevancia de la recuperación como la calidad de la generación.

Cuándo usarlo: aplicaciones de uso general, texto no estructurado como artículos e informes.

3. Fragmentación semántica

En lugar de depender de caracteres o estructuras, la fragmentación semántica utiliza el significado para determinar los límites. El proceso incorpora oraciones individuales, compara su similitud semántica e identifica puntos donde ocurren cambios de tema.

Fragmentación semántica

Fragmentación semántica
Imagen por autor

La implementación implica calcular incrustaciones para cada oración, medir distancias entre incrustaciones de oraciones consecutivas y dividir cuando la distancia excede un umbral. Esto crea fragmentos donde el contenido es coherente en torno a un solo tema o concepto.

El coste computacional es mayor. Pero el resultado son fragmentos semánticamente coherentes que a menudo mejoran la calidad de la recuperación de documentos complejos.

Cuándo usarlo: artículos académicos densos, documentación técnica donde los temas cambian de manera impredecible.

4. Fragmentación basada en documentos

Los documentos con estructura explícita (encabezados de Markdown, etiquetas HTML, definiciones de funciones de código) contienen puntos de división naturales. La fragmentación basada en documentos aprovecha estos elementos estructurales.

Para Markdown, divida en niveles de encabezado. Para HTML, divídalo en etiquetas semánticas como o . Para el código, divídalo según los límites de función o clase. Los fragmentos resultantes se alinean con la organización lógica del documento, que normalmente se correlaciona con la organización semántica. A continuación se muestra un ejemplo de fragmentación basada en documentos:

Fragmentación basada en documentos

Fragmentación basada en documentos
Imagen por autor

Bibliotecas como LangChain y LlamaIndex proporcionan divisores especializados para varios formatos, manejando la complejidad del análisis y al mismo tiempo permitiéndole centrarse en los parámetros del tamaño de los fragmentos.

Cuándo utilizarlo: documentos estructurados con elementos jerárquicos claros.

5. Fragmentación tardía

La fragmentación tardía invierte la típica secuencia de incrustación y luego fragmentación. Primero, incruste todo el documento utilizando un modelo de contexto largo. Luego divida el documento y obtenga incrustaciones de fragmentos promediando las incrustaciones relevantes a nivel de token de la incrustación completa del documento.

Esto preserva el contexto global. La incorporación de cada fragmento refleja no sólo su propio contenido sino también su relación con el documento más amplio. Las referencias a conceptos anteriores, terminología compartida y temas de todo el documento permanecen codificados en las incrustaciones.

El enfoque requiere modelos de integración de contexto largo capaces de procesar documentos completos, lo que limita su aplicabilidad a documentos de tamaño razonable.

Cuándo utilizar: Documentos técnicos con referencias cruzadas significativas, textos legales con dependencias internas.

6. Fragmentación adaptativa

La fragmentación adaptativa ajusta dinámicamente los parámetros de la fragmentación según las características del contenido. Las secciones densas y ricas en información reciben fragmentos más pequeños para mantener la granularidad. Las secciones contextuales escasas reciben fragmentos más grandes para preservar la coherencia.

Fragmentación adaptativa

Fragmentación adaptativa
Imagen por autor

La implementación suele utilizar heurísticas o modelos ligeros para evaluar la densidad del contenido y ajustar el tamaño del fragmento en consecuencia.

Cuándo utilizar: Documentos con densidad de información muy variable.

7. Fragmentación jerárquica

La fragmentación jerárquica crea múltiples niveles de granularidad. Los fragmentos principales grandes capturan temas amplios, mientras que los fragmentos secundarios más pequeños contienen detalles específicos. En el momento de la consulta, recupere primero los fragmentos gruesos y luego profundice en los fragmentos finos dentro de los padres relevantes.

Esto permite consultas de alto nivel (“¿Qué cubre este documento?”) y consultas específicas (“¿Cuál es la sintaxis de configuración exacta?”) utilizando el mismo corpus fragmentado. La implementación requiere mantener relaciones entre los niveles de fragmentos y atravesarlos durante la recuperación.

Cuándo utilizar: manuales técnicos extensos, libros de texto y documentación completa.

8. Fragmentación basada en LLM

En la fragmentación basada en LLM, utilizamos un LLM para determinar los límites de los fragmentos e impulsarlos hacia un territorio inteligente. En lugar de reglas o incrustaciones, el LLM analiza el documento y decide cómo dividirlo en función de la comprensión semántica.

Fragmentación basada en LLM

Fragmentación basada en LLM
Imagen por autor

Los enfoques incluyen dividir el texto en proposiciones atómicas, generar resúmenes para secciones o identificar puntos de interrupción lógicos. El LLM también puede enriquecer fragmentos con metadatos o descripciones contextuales que mejoren la recuperación.

Este enfoque es costoso (requiere convocatorias de LLM para cada documento) pero produce fragmentos muy coherentes. Para aplicaciones de alto riesgo donde la calidad de la recuperación justifica el costo, la fragmentación basada en LLM a menudo supera a los métodos más simples.

Cuándo utilizarlo: aplicaciones en las que la calidad de la recuperación importa más que el coste de procesamiento.

9. Fragmentación agente

La fragmentación agente amplía los enfoques basados ​​en LLM al hacer que un agente analice cada documento y seleccione dinámicamente la estrategia de fragmentación adecuada. El agente considera la estructura del documento, la densidad del contenido y el formato para elegir entre enfoques de tamaño fijo, recursivos, semánticos u otros enfoques por documento.

Fragmentación agente

Fragmentación agente
Imagen por autor

Esto maneja colecciones de documentos heterogéneos donde una única estrategia funciona mal. El agente podría utilizar fragmentación basada en documentos para informes estructurados y fragmentación semántica para contenido narrativo dentro del mismo corpus.

La compensación es la complejidad y el costo. Cada documento requiere un análisis del agente antes de que pueda comenzar la fragmentación.

Cuándo utilizarlo: colecciones de documentos diversas donde la estrategia óptima varía significativamente.

Conclusión

La fragmentación determina qué información puede encontrar su sistema de recuperación y qué contexto recibe su LLM para la generación. Ahora que comprende las diferentes técnicas de fragmentación, ¿cómo selecciona una estrategia de fragmentación para su aplicación? Puedes hacerlo en función de las características de tu documento:

Documentos breves e independientes (preguntas frecuentes, descripciones de productos): no se necesita fragmentación Documentos estructurados (Markdown, HTML, código): fragmentación basada en documentos Texto no estructurado (artículos, informes): pruebe la fragmentación recursiva o jerárquica si la fragmentación de tamaño fijo no da buenos resultados Documentos complejos y de alto valor: fragmentación semántica, adaptativa o basada en LLM Colecciones heterogéneas: fragmentación agente

Considere también la ventana contextual de su modelo de incrustación y los patrones de consulta típicos. Si los usuarios hacen preguntas objetivas específicas, prefiera fragmentos más pequeños para mayor precisión. Si las consultas requieren comprender un contexto más amplio, utilice fragmentos más grandes.

Más importante aún, establezca métricas y pruebe. Realice un seguimiento de la precisión de la recuperación, la exactitud de las respuestas y la satisfacción del usuario a través de diferentes estrategias de fragmentación. Utilice consultas representativas con respuestas correctas conocidas. Mida si se recuperan los fragmentos correctos y si el LLM genera respuestas precisas a partir de esos fragmentos.

Marcos como LangChain y LlamaIndex proporcionan divisores prediseñados para la mayoría de las estrategias. Para enfoques personalizados, implemente la lógica directamente para mantener el control y minimizar las dependencias. ¡Feliz trozo!

Referencias y aprendizaje adicional