Saltar al contenido

Estrategias de fragmentación para RAG

Diseño de fragmentación de alta precisión para RAG de sitios web: estrategias fijas, semánticas, jerárquicas y adaptativas, y su evaluación.

chunking • rag • retrieval • embeddings

La fragmentación convierte el contenido normalizado de las páginas en unidades de recuperación. Las decisiones deficientes inflan el coste (demasiados fragmentos), degradan el recall (bloques demasiado grandes) o diluyen la precisión (fracturas en los límites). No existe un método universalmente mejor; la estrategia se ajusta a la estructura del corpus, su volatilidad y los patrones de consulta. Esta guía traza el espacio de diseño, las compensaciones, el flujo de evaluación y las palancas de optimización para canalizaciones RAG en producción.

Por qué importa la fragmentación

Objetivos:

  • Maximizar la probabilidad de que los hechos relevantes aparezcan en la recuperación top‑k.
  • Preservar la cohesión semántica para que las respuestas generadas estén fundamentadas.
  • Optimizar el uso de tokens (evitar incrustar repetidamente texto de relleno).
  • Permitir actualizaciones incrementales deterministas (IDs de fragmento estables).

Una fragmentación mal alineada se manifiesta como: alta redundancia, bajo Recall@k, hechos alucinados en los límites e inflación del gasto en embeddings.

Fragmentación de ventana fija

Ventanas simples de N tokens (p. ej., 500 tokens). Pros: deterministas, fáciles de implementar, comportamiento de actualización estable. Contras: los límites cortan a través de conceptos; se requiere solapamiento redundante para reducir el truncamiento → crecimiento del coste. Úsala con moderación: buena línea base para contenido heterogéneo o poco estructurado donde las señales semánticas no son fiables.

Ventanas deslizantes con solapamiento

Un tamaño de ventana W con solapamiento O (p. ej., 500 / 50 tokens) reduce el truncamiento de hechos en los límites. Un solapamiento superior al ~15 % produce ganancias de recall decrecientes a la vez que aumenta el tamaño del índice. Sigue duplication_ratio = distinct_token_count / total_token_count para ajustar O a la baja.

Detección de límites semánticos

Segmenta según señales estructurales: encabezados H2/H3, agrupaciones de listas, bloques de código, límites de tablas. Aplica límites mínimos/máximos de tokens (fusiona hermanos demasiado pequeños, divide secciones demasiado grandes). Beneficios: mayor cohesión, menos solapamientos. Riesgos: marcado malformado, jerarquía de encabezados inconsistente. Mitígalos con reparación de jerarquía + recurso a la división por párrafos cuando faltan encabezados.

Fragmentación jerárquica

Índice de dos niveles: embeddings de sección gruesos (p. ej., toda una sección de tutorial) + subfragmentos de grano fino. Flujo de recuperación: ANN grueso → filtrar las N secciones superiores → recuperación fina dentro de ellas. Ventajas: reduce el espacio de búsqueda global para corpus grandes, mejora la latencia. Complejidad: más piezas móviles, se necesita lógica de puntuación en cascada.

Fragmentación adaptativa / dinámica

Ajusta los tamaños de fragmento según la densidad semántica local y las pistas estructurales. Ejemplo de lógica: comienza en una sección de encabezado, si tiene >800 tokens → divide por grupos de párrafos puntuados por similitud semántica; si tiene <120 tokens → fusiona con el hermano siguiente salvo que la divergencia temática supere un umbral. Requiere una pasada previa de embeddings o similitud; paga el coste una vez en la ingesta a cambio de una mejor eficiencia de recuperación a largo plazo.

Consideraciones sobre embeddings

Mantén metadatos: token_count, model_version, content_hash. Evita el truncamiento: precalcula los tokens y divide antes de la llamada al modelo. Los modelos densos se degradan con un exceso de texto de relleno; elimina los artefactos de navegación antes de fragmentar. Monitoriza vector_density (términos únicos / tokens) para detectar fragmentos de baja señal (candidatos a refusión).

Métodos de evaluación

Pruebas comparativas por estrategia:

MétricaPropósito
Recall@kRetención de hechos
Precision@kRuido del contexto
Recuento de fragmentosIndicador de coste
Ratio de duplicaciónAjuste del solapamiento
Tokens medios por fragmentoAprovechamiento de la ventana
Latencia (recuperación)Eficiencia del índice

Ejecuta sobre un conjunto de consultas de referencia; adopta una estrategia solo si las ganancias de recall superan los incrementos de coste y latencia.

Manual de implementación

  1. Línea base: fija 500 + 10 % de solapamiento; recopila pruebas comparativas.
  2. Introduce límites semánticos: reemplaza las ventanas donde los encabezados son fiables; vuelve a medir.
  3. Añade una capa jerárquica si el corpus supera los 250k fragmentos o la latencia supera el objetivo.
  4. Despliega lógica adaptativa para tamaños de sección con alta varianza.
  5. Reevaluación trimestral: compara el coste por delta de calidad frente a las nuevas capacidades de los modelos.

Guarda el diff del manifiesto de fragmentos por iteración para poder revertir.

Conclusiones clave

  • Los límites semánticos suelen superar a las ventanas puramente fijas en precisión/coste.
  • El solapamiento es un dial: mide la duplicación, no la adivines.
  • La recuperación jerárquica ayuda a escalar sin un crecimiento lineal de la latencia.
  • Los IDs de fragmento estables permiten una actualización incremental segura de los embeddings.
  • Evalúa los cambios de estrategia como despliegues de código: prueba, compara, registra.