saltar al contenido
volver al mapa
técnica
etapa: ingest
3 min de lectura

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.

LangChainLlamaIndexUnstructuredspaCy

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.

Parámetros típicostext
  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 ruidosa

Estrategias 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.

chunking/splitter.pypython
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

actualizado el 14/10/2026 · fuentes para profundizar · reportar un error

Estudia antes

Desbloquea

pon a prueba lo que entendiste

Cargando preguntas…