Chunking
El chunking es la primera decisión técnica de RAG: el tamaño, el solapamiento y la estrategia de corte determinan lo que el retrieval logra encontrar después. Fragmentos malos se vuelven respuestas sin contexto.
Qué es
El chunking es el proceso de dividir un documento en fragmentos más pequeños que serán indexados y recuperados. El tamaño del fragmento no es un detalle: define qué cabe en la ventana del modelo, cuál es la unidad de búsqueda y cuál es la granularidad de la cita que aparece en la respuesta.
En casi toda arquitectura RAG, el chunking ocurre una vez en la ingesta y nunca más. El pipeline estándar lee el documento, aplica un splitter, genera un embedding por bloque y sigue. Si el corte se pensó mal, todo el índice carga con el problema hasta que alguien rehaga la indexación.
Tamaño y overlap
La pregunta más común es '¿cuál es el tamaño correcto?'. La respuesta honesta es 'depende'. Para preguntas cortas y respuestas factuales, los bloques pequeños funcionan mejor: cada bloque lleva una sola idea, así que el retrieval trae el pasaje exacto. Para preguntas que exigen razonamiento entre párrafos, los bloques más grandes preservan el contexto, y los bloques demasiado pequeños rompen el argumento a la mitad.
El solapamiento (overlap) es el segundo parámetro. Sin solapamiento, una idea que empieza al final de un bloque y continúa al comienzo del siguiente queda huérfana: ninguno de los dos bloques tiene el sentido completo. Con un solapamiento de 10 a 20% del tamaño del bloque, el inicio del siguiente repite el final del anterior, así que la frontera nunca corta una frase por la mitad.
tamaño del bloque 200 a 1000 tokens
overlap 10% a 20% del bloque
regla práctica bloque ~512 tokens, overlap ~50
bloque pequeño -> cita precisa, contexto corto
bloque grande -> razonamiento largo, cita ruidosaEstrategias de corte
Tres familias dominan la práctica. La primera es el corte por caracteres o tokens, simple y predecible, que funciona cuando el documento es prosa limpia. La segunda es el corte recursivo por separadores, que intenta romper primero por párrafo, luego por frase, luego por palabra, y por carácter solo como último recurso. Preserva la estructura del texto sin necesitar un modelo. La tercera es el corte semántico, que agrupa frases por similitud y solo corta cuando la siguiente frase tiene poca relación con la anterior. Cuesta más y usa embeddings, pero produce bloques coherentes.
También existe el corte por estructura: títulos, secciones, celdas de tabla, párrafos de código. En documentos con marcado claro (Markdown, HTML, docx convertido), separar por estructura y mantener la jerarquía en el metadata da chunks más útiles que cualquier splitter genérico.
En la práctica
LangChain ofrece el splitter recursivo listo. El ejemplo configura tamaño y overlap y lo aplica a un texto cualquiera. Para texto en portugués, conviene separar por párrafo, frase y palabra, en ese orden.
from langchain_text_splitters import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=512,
chunk_overlap=50,
separators=[
"\n\n", # párrafo
"\n", # línea
"(?<=[.!?])\\s+", # fin de frase en PT-BR (lookbehind)
" ", # palabra
"", # carácter (último recurso)
],
length_function=len,
is_separator_regex=True,
)
with open("manual.txt", encoding="utf-8") as f:
texto = f.read()
blocos = splitter.split_text(texto)
for i, bloco in enumerate(blocos):
print(f"#{i:03d} {len(bloco)} chars {bloco[:60].replace(chr(10), ' ')}...")Puntos fuertes
- estabilidad: un chunking determinístico produce los mismos bloques para el mismo documento, así que el índice se mantiene reproducible
- control de granularidad: ajustar tamaño y overlap es una palanca directa sobre la calidad del retrieval
- compatibilidad: casi todo framework (LangChain, LlamaIndex, Haystack) trae un splitter listo, así que la barrera de entrada es baja
Limitaciones
- ceguera semántica: el splitter recursivo corta por separador, no por sentido; una idea que cruza la frontera desaparece
- estructura perdida: separar por carácter ignora títulos, listas y tablas; en documentos mixtos, es mejor un splitter específico por tipo
- costo de reindexación: cambiar la estrategia de chunking obliga a reindexar todo; en bases grandes, eso se vuelve una migración
conexiones en el mapa
- Chunkinggenera vectoresEmbeddings
actualizado el 14/10/2026 · fuentes para profundizar · reportar un error
Estudia antes
Desbloquea
pon a prueba lo que entendiste
Cargando preguntas…