patrón · intermedio · 4 min de lectura
Chunking
Chunking divide documentos en fragmentos recuperables para RAG. La estrategia de troceado determina qué tan bien un sistema encuentra información relevante sin perder contexto.
No requiere conocimientos previos.
Alcance en breve
Cubre
- chunking as dividing documents into retrievable pieces for RAG
- strategies: fixed-size, recursive character, semantic, sentence-based, and document-aware
- trade-offs: chunk size, overlap, coherence, retrieval quality
No cubre
- embedding model selection and training
- vector database configuration
- RAG pipeline architecture beyond retrieval
Supone
- The reader understands RAG basics, embeddings, and document retrieval concepts.
Resumen
Chunking es el proceso de dividir documentos grandes en piezas más pequeñas antes de indexarlos para búsqueda o RAG. Cada fragmento se convierte en un vector (embedding) que se almacena para recuperación posterior.
La estrategia de chunking es una de las decisiones más impactantes en la calidad de un sistema RAG. Fragmentos demasiado grandes mezclan conceptos irrelevantes y reducen precisión. Fragmentos demasiado pequeños pierden contexto y hacen que las respuestas sean superficiales.
Alcance y supuestos
Este paquete cubre estrategias de chunking: tamaño fijo, recursivo por caracteres, semántico, por oraciones y consciente de la estructura del documento. Cubre también trade-offs entre tamaño, solapamiento, coherencia y calidad de recuperación.
No cubre selección de modelos de embedding, configuración de bases vectoriales, ni la arquitectura completa del pipeline RAG. Asume que entiendes RAG, embeddings y conceptos básicos de recuperación de documentos.
Modelo mental
Piensa en trocear un libro para una búsqueda. Si arrancas páginas individuales, cada página tiene poca información y pierdes el contexto del capítulo. Si metes capítulos enteros, una página específica queda enterrada dentro de mucho texto irrelevante.
El chunking busca el punto medio: fragmentos lo suficientemente grandes para tener sentido por sí mismos, lo suficientemente pequeños para que la búsqueda encuentre exactamente lo relevante.
Uso práctico
Usa chunking estratégico según el tipo de documento:
- ✅ Texto narrativo o documentación: chunking semántico (divide por párrafos o secciones naturales).
- ✅ Código: chunking por función o clase.
- ✅ Documentos estructurados (MDX, HTML): chunking por encabezados.
- ✅ Texto genérico sin estructura: chunking recursivo con solapamiento.
- ❌ Chunking de tamaño fijo sin solapamiento para documentos densos: pierdes contexto entre cortes.
Ejemplo trabajado: chunking recursivo para documentación técnica
El chunking recursivo divide el texto usando separadores en orden jerárquico:
interface Chunk {
text: string;
metadata: { source: string; startChar: number };
}
function recursiveChunk(text: string, chunkSize = 500, overlap = 50): Chunk[] {
const separators = ["\n## ", "\n### ", "\n\n", "\n", ". ", " "];
const chunks: Chunk[] = [];
let start = 0;
while (start < text.length) {
let end = start + chunkSize;
if (end < text.length) {
// Buscar el mejor separador cerca del límite
for (const sep of separators) {
const splitAt = text.lastIndexOf(sep, end);
if (splitAt > start + chunkSize * 0.5) {
end = splitAt + sep.length;
break;
}
}
}
chunks.push({
text: text.slice(start, end).trim(),
metadata: { source: "doc", startChar: start },
});
start = end - overlap; // solapamiento para no perder contexto en el corte
}
return chunks;
}
Este enfoque respeta la estructura natural del documento mientras mantiene fragmentos de tamaño manejable. El solapamiento asegura que las oraciones o ideas divididas por un corte aparezcan completas en al menos un fragmento.
Evidencia
- LlamaIndex documentation, Chunking Strategies describe estrategias de chunking como tamaño fijo, recursivo, semántico y basado en oraciones.
- LangChain documentation, Text splitters documenta divisores de texto recursivos, por caracteres, por código, y otros métodos de chunking.
Fuentes citadas
- LlamaIndex documentation, Chunking Strategies (Oficial, 21-07-2026)
- LangChain documentation, Text splitters (Oficial, 21-07-2026)