Estrategias de Chunking de Documentos
Metodología de descomposición de documentos masivos y bases de código en fragmentos informativamente autosuficientes (chunks) para la generación de vector embeddings y búsqueda precisa en sistemas RAG.
1. Visión general del concepto y problema sistémico
Los modelos de embedding (por ejemplo, text-embedding-3-large o bge-m3) tienen una longitud de ventana de entrada estrictamente limitada (de 512 a 8192 tokens). Aunque el modelo puede técnicamente aceptar un gran documento PDF en su totalidad, comprime toda la información en un único vector de dimensión fija (por ejemplo, 1536 números).
Sin un chunking granular:
- Dilución Semántica (Vector Dilution): Un vector de un documento de 50 páginas se vuelve tan general que pierde detalles específicos de funciones o configuraciones.
- Imposibilidad de muestreo preciso en RAG: El sistema de búsqueda extraerá todo el gigantesco documento en el contexto de un LLM generativo, agotando instantáneamente el presupuesto de tokens.
- 'Destrucción' de la estructura con un corte ingenuo: La división fija por número de caracteres (Character Splitting) rompe palabras por la mitad, separa el encabezado de la función de su implementación y destruye tablas.
Chunking es fundamental para la ingeniería RAG: transforma texto bruto monolítico en una colección de bloques semánticos interrelacionados e informativamente autosuficientes.
2. Taxonomía arquitectónica y modelo mental
Dependiendo de la estructura de datos, se distinguen cuatro niveles arquitectónicos de chunking:
- 1. Chunking Fijo con Superposición (Fixed-Size Sliding Window): El enfoque más simple: el texto se corta en bloques de $N$ tokens con una superposición de $M$ tokens. Rápido, pero a menudo rompe los límites lógicos de los párrafos.
- 2. Chunking Recursivo por Caracteres (Recursive Character Splitting):
Enfoque jerárquico (estándar LangChain/LlamaIndex). El algoritmo intenta cortar el texto primero por doble salto de línea (
\n\n), si el trozo es demasiado grande — por un solo salto (\n), luego por punto (.) y solo en última instancia por espacio. - 3. Chunking Semántico (Semantic / Embedding-Distance Chunking): El texto se divide en oraciones individuales. Para cada una se genera un vector y se calcula la similitud coseno entre oraciones adyacentes. El límite del chunk se establece en puntos de cambio abrupto de semántica (cambio de tema).
- 4. Chunking Sintáctico AST/Markdown (Structural Chunking):
Considera el árbol sintáctico del documento: divide Markdown estrictamente por niveles de encabezados (
#,##,###), manteniendo las migas de pan, y el código programático — por nodos de clases y funciones a través de Tree-sitter.
3. Pipeline técnico y mecánica interna
El pipeline de chunking profesional consta de 4 etapas:
- Document Ingestion & Pre-cleaning (Ingesta de Documentos y Pre-limpieza):
Eliminación de caracteres especiales invisibles, unificación de saltos de línea (
\r\n->\n) y normalización de codificación Unicode (NFC). - Boundary Detection (Detección de Límites): El parser construye un árbol sintáctico (AST) o encuentra puntos seguros de corte (secciones de Markdown, líneas vacías entre funciones).
- Window Formatting & Overlap Calculation (Formateo de Ventanas y Cálculo de Superposición): El texto se agrupa en bloques de 500–700 tokens. Se añade un buffer de superposición (10–15%) al inicio de cada chunk siguiente.
- Metadata Enrichment & Context Injection (Enriquecimiento de Metadatos e Inyección de Contexto):
A cada chunk se le añade un prefijo con metadatos:
[File: api/auth.ts | Class: AuthService | Method: validateToken]Esto garantiza que el vector del fragmento se encuentre incluso con una consulta donde el nombre del método no se menciona en su cuerpo.
4. Escenarios prácticos de ingeniería en producción
01. Indexación de la base de código del repositorio a través de Tree-sitter
Cada archivo TypeScript se analiza en un árbol sintáctico. Se forma un chunk separado para cada interfaz exportada y cada función. Si una función ocupa 20 líneas, se convierte en un chunk autónomo junto con el comentario JSDoc y la lista de tipos importados.
02. Procesamiento de tablas complejas e informes financieros
El corte habitual rompe las filas de la tabla, despojando a los números de su sentido. El chunking profesional convierte cada fila de la tabla en una línea de texto autosuficiente: "En 2024, los ingresos de la división Cloud fueron de $35B, un 15% más que en 2023", formando vectores con alta precisión de búsqueda.
03. Parsing de documentación de API (OpenAPI / Swagger)
Cada ruta (por ejemplo, POST /v1/payments) se destaca en un chunk separado que contiene la ruta, el método HTTP, la descripción de los parámetros, un ejemplo de respuesta y códigos de error, lo que permite al agente generar código cliente sin errores.
5. Errores comunes, trampas y seguridad
- Problema de 'pronombres colgantes' (Dangling Pronouns): Si la oración "Esta función requiere derechos de administrador" cae en el chunk 2, y el nombre de la función queda en el chunk 1, el modelo no podrá responder a la consulta. Siempre use metadatos con enriquecimiento del contexto padre (Parent Document Retrieval).
- Inflación de la base de datos vectorial por exceso de Overlap: Una superposición superior al 25% conduce a la duplicación de información en la base de datos, incrementa el costo de indexación y sobrecarga fragmentos idénticos en los resultados principales.
- Pérdida de contexto estructural (Loss of Lineage): Un chunk sin la indicación del nombre del archivo y el número de línea se convierte en ruido anónimo, dificultando la generación de referencias precisas en las respuestas del agente.
FAQ: Estrategias de Chunking de Documentos
Términos relacionados
RAG (Generación Aumentada por Recuperación)
Patrón arquitectónico de IA corporativa que enriquece dinámicamente la ventana de contexto del modelo con conocimientos verificados y relevantes de almacenes externos (bases de datos vectoriales, grafos, índices de texto completo) antes de generar la respuesta final.
Vector Embeddings (Dense Embeddings)
Proyección matemática de texto, código o datos multimodales en un vector numérico denso y multidimensional, donde el ángulo y la geometría entre las coordenadas reflejan su afinidad semántica.
Búsqueda Híbrida (Dense + Sparse Search)
La arquitectura de recuperación en sistemas RAG modernos que combina la búsqueda semántica vectorial (Dense Embeddings) con la indexación de texto completo basada en palabras clave (Sparse / BM25) a través de algoritmos de fusión de rangos (RRF).
Markdown AST para Agentes (Abstract Syntax Tree)
Representación jerárquica en forma de árbol de la sintaxis Markdown (estándar mdast / Unified.js), que permite a los sistemas programáticos y agentes de IA analizar, transformar y editar contenido técnico de manera determinista y segura, sin recurrir a frágiles expresiones regulares.