rag‑chunk: Herramienta CLI para evaluar y optimizar la fragmentación RAG

rag‑chunk: Herramienta CLI para evaluar y optimizar la fragmentación RAG

La Generación Augmentada por Recuperación (RAG) se está convirtiendo en la piedra angular de los pipelines modernos de PLN, pero la calidad de un sistema RAG depende en gran medida de qué tan bien se divide el texto fuente en fragmentos manejables. Demasiados fragmentos muy pequeños explotan el índice; demasiados grandes hacen que pierdas la fidelidad contextual.

rag‑chunk resuelve este problema con una interfaz de línea de comandos sencilla que te permite probar, evaluar y comparar varias estrategias de fragmentación lado a lado. Está escrito en Python, bajo licencia MIT, y está disponible en PyPI, por lo que puedes integrarlo en cualquier contenedor o flujo de CI con mínima fricción.


Funcionalidades principales

Característica Descripción
Múltiples Estrategias Tamaño fijo (basado en palabras o tokens), Ventana deslizante (preserva contexto), Párrafo (límites semánticos), Carácter recursivo (integración LangChain).
Fragmentación exacta en tokens Soporte opcional de tiktoken para los límites de tokens de GPT 3.5 y 4; elige el modelo con --tiktoken-model.
Evaluación de recuperación Proporciona un archivo de prueba JSON (examples/questions.json) para calcular cuántas frases relevantes aparecen en los fragmentos recuperados top‑k.
Salida CLI enriquecida Tablas hermosas impulsadas por Rich: claras, legibles y exportables.
Exportar Guarda los resultados en formato JSON, CSV o tabla; los fragmentos pueden almacenarse en una carpeta .chunks/ para inspección.
Extensible Añade lógica de fragmentación personalizada en src.chunker.py y regístrala en el diccionario STRATEGIES.

Inicio rápido

Instalación

# Desde PyPI
pip install rag-chunk          # básica
pip install rag-chunk[tiktoken] # con soporte opcional de tiktoken

Tip – Si trabajas dentro de un entorno virtual, asegúrate de que tiktoken solo esté instalado cuando necesites fragmentación exacta en tokens.

Generación simple de fragmentos

rag‑chunk analyze examples/ --strategy paragraph
Obtendrás una tabla que muestra el número de fragmentos, la recuperación media (0 si no se evaluó) y el directorio donde residen los fragmentos.

Evaluar todas las estrategias

rag‑chunk analyze examples/ \
  --strategy all \
  --chunk-size 100 \
  --overlap 20 \
  --output table
La CLI ejecutará cuatro estrategias (tamaño fijo, ventana deslizante, párrafo y carácter recursivo) y reportará una comparación concisa.

Validar con un archivo de prueba

rag‑chunk analyze examples/ \
  --strategy all \
  --chunk-size 150 \
  --overlap 30 \
  --test-file examples/questions.json \
  --top-k 3 \
  --output json > results.json
El JSON resultante contendrá la recuperación total por estrategia y métricas detalladas por pregunta.


Elegir la estrategia adecuada

Estrategia Cuándo usarla Recomendación de tamaño de fragmento
Tamaño fijo Retraso uniforme, comparación de referencia 150–250 palabras (o tokens con --use‑tiktoken)
Ventana deslizante Párrafos largos donde la fuga de contexto importa 120–200 palabras, 20–30 % de superposición
Párrafo Markdown o prosa con secciones claras Variable – límites de párrafo naturales
Carácter recursivo Textos de gran riqueza semántica, integración de LangChain Según los valores por defecto de LangChain, pero puedes sobreescribir con --chunk‑size

Si el avg_recall de una estrategia es inferior a 0,70, considera ajustar el tamaño del fragmento, cambiar la estrategia o agregar más tokens superpuestos.


Extender rag‑chunk

Si tienes un algoritmo de fragmentación propietario, puedes integrarlo:

# src/chunker.py
from typing import List, Dict

def my_custom_chunks(text: str, chunk_size: int, overlap: int) -> List[Dict]:
    chunks = []
    # Tu lógica aquí – por ejemplo, dividir por encabezados markdown específicos
    return chunks

# Registrar en las estrategias globales
STRATEGIES = {
    "custom": my_custom_chunks,
    ...
}
Ejecuta a través de la CLI:
rag‑chunk analyze docs/ --strategy custom --chunk-size 180


Casos de uso reales

  1. Prototipado de modelos RAG – Mide rápidamente qué tan bien tus embeddings capturan contenido significativo.
  2. Ajuste de índice en producción – Reduce el número de fragmentos para ahorrar almacenamiento sin sacrificar recuperación.
  3. Frontera de tokens específica del modelo – Para GPT‑4 con contexto de 32 k tokens, genera fragmentos de exactamente 512 tokens que encajen.
  4. Verificaciones CI automatizadas – Añade rag‑chunk como paso en tu pipeline CI para detectar regresiones en la calidad de los fragmentos.

Obtener ayuda y contribuir

  • Código Fuente – https://github.com/messkan/rag‑chunk
  • Documentación – Lee el README completo en el repositorio o usa rag‑chunk --help.
  • Issues/PRs – El repositorio está abierto a pull requests; siéntete libre de proponer nuevas estrategias o mejorar la documentación.
  • Comunidad – Comunícate en la página de issues si encuentras un error o tienes una solicitud de función.

TL;DR

  • rag‑chunk es una CLI en Python de licencia MIT que te permite evaluar estrategias de fragmentación RAG.
  • Instálalo con pip install rag‑chunk[tiktoken].
  • Ejecuta pruebas rápidas con rag‑chunk analyze <folder> --strategy all --chunk-size 150.
  • Exporta resultados como tablas, JSON o CSV; ajusta la precisión de tokens con --use‑tiktoken.

¡Elimina la conjetura en la selección de fragmentos, obtén métricas accionables y acelera el desarrollo de tu pipeline RAG hoy mismo!

Artículo original: Ver original

Compartir este artículo