"FlashRAG: Una herramienta Python para una investigación eficiente de RAG"

FlashRAG: Una herramienta Python para una investigación eficiente de RAG

La Recuperación‑Aumentada de Generación (RAG) se ha convertido en un elemento básico del NLP moderno, combinando modelos de lenguaje grandes (LLMs) con fuentes externas de conocimiento para ofrecer respuestas más precisas y contextualizadas. Sin embargo, la comunidad investigadora sigue lidiando con un ecosistema fragmentado: cada artículo suele incluir su propio pipeline a medida, los conjuntos de datos están dispersos entre repositorios y reproducir resultados puede parecer una búsqueda del tesoro.

FlashRAG resuelve este dolor al empaquetar la pila completa de RAG en una única herramienta de Python bien estructurada y con licencia MIT, lanzada como parte de la pista de recursos de la Conferencia Web ACM 2025 (WWW). Con un enfoque en velocidad, versatilidad y reproducibilidad, FlashRAG se está convirtiendo rápidamente en la plataforma de facto para experimentos de RAG.

Rápida mirada: lo que ofrece FlashRAG

Función Descripción
Conjuntos de datos 36 conjuntos de datos de referencia preprocesados (HotpotQA, PubMedQA, WIKIQA, etc.) listos para descargar en HuggingFace.
Algoritmos 23 métodos RAG de última generación, desde pipelines secuenciales estándar hasta avanzados como Search‑R1 y CoRAG.
Componentes Recuperadores, re‑rankers, generadores y refinadores totalmente modular, que se pueden combinar libremente.
UI Interfaz web ligera para pruebas y evaluaciones de prototipos con rapidez.
Velocidad Construido sobre vLLM, FastChat, Faiss y BM25s para inferencia de baja latencia.
Extensibilidad Fácil de integrar modelos personalizados, embeddings o back‑ends de recuperación.

En marcha en minutos

Instalación

# Versiones pre‑lanzamiento disponibles vía pip
pip install flashrag-dev --pre
# o clonar el repositorio
git clone https://github.com/RUC-NLPIR/FlashRAG.git
cd FlashRAG
pip install -e .

Dependencias opcionales para mayor velocidad:

pip install flashrag-dev[full]   # Incluye vLLM, sentence‑transformers, pyserini

Pipeline rápido

El SequentialPipeline es el estándar, realizando recuperación → re‑ranking → generación. Aquí tienes un ejemplo mínimo:

from flashrag.config import Config
from flashrag.pipeline import SequentialPipeline
from flashrag.utils import get_dataset

# Cargar configuración y conjunto de datos
cfg = Config('flashrag_default.yaml')
train, val, test = get_dataset(cfg)

# Construir pipeline
pipeline = SequentialPipeline(cfg)
results = pipeline.run(test, do_eval=True)
print(results.to_pandas().head())

Ejecuta pipeline.run() en segundo plano y FlashRAG gestiona todo el flujo de trabajo, registrando salidas intermedias y métricas de evaluación.

Explora la UI

cd webui
python interface.py

Se abre una ventana del navegador con controles intuitivos: subir corpus, construir índices, ajustar hiperparámetros y ver instantáneamente el impacto en el rendimiento de preguntas y respuestas. La UI es especialmente útil para no programadores o cuando deseas demostrar pipelines RAG a interesados.

Profundizando: componentes y personalización

La tabla de componentes de FlashRAG ofrece una arquitectura plug‑and‑play:

  • Recuperadores: Densos (e5, dpr, bge), BM25 y híbridos con integración de búsqueda web.
  • Re‑rankers: Estrategias de bi‑encoder y cross‑encoder.
  • Refiners: Extractivos, abstractivos, LLMLingua, Selective‑Context y basados en Knowledge‑Graph.
  • Generadores: FF, FiD, vLLM, FastChat y modelos transformadores nativos.
  • Pipelines: Secuencial, Condicional, Ramificado, Bucle, Self‑Ask y basados en razonamiento.

Todos los componentes son basados en clases; puedes subclasificar BasicPipeline y sobreescribir run() para crear una lógica completamente nueva. Por ejemplo, un pipeline personalizado que primero realice una búsqueda semántica de índice, luego refine los documentos top‑k mediante un grafo de conocimiento antes de pasarlos a un LLM a gran escala, se puede ensamblar en menos de 10 líneas.

Multi‑hops y razonamiento: la nueva frontera

La versión 2025 de FlashRAG soporta de forma única siete métodos basados en razonamiento como Search‑R1, CoRAG y ReaRAG. Estos modelos entrelazan recuperación y razonamiento, logrando a menudo mejoras superiores al 10 % en benchmarks multihop como HotpotQA. Los investigadores pueden intercambiar rápidamente un generador estándar por un pipeline de razonamiento cambiando una sola bandera de configuración.

Conjuntos de datos y corpus de apoyo

  • Corpus de documentos: Formato JSONL compatible con Faiss o Pyserini. Descarga índices pre‑construidos (p. ej., wiki18_100w_e5_index.zip) del hub de datos de HuggingFace.
  • Benchmarks: 36 conjuntos de datos que cubren QA, cuestionario multihop, QA de forma larga, resumen e incluso tareas de elección múltiple no árabes.
  • Corpus personalizados: Scripts para procesar volcados de Wikipedia, MS MARCO o páginas web específicas de dominio.

Hoja de ruta y comunidad

FlashRAG es un proyecto vivo: planeamos soportar recuperación multimodal (Llava, Qwen, InternVL), ampliar a más back‑ends de LLM (Claude, Gemini), agregar recuperadores basados en API y proporcionar imágenes Docker para despliegues sin configuración. Las contribuciones son bienvenidas en el repositorio de GitHub y la comunidad discute activamente las mejores prácticas en el canal Slack flashrag.

Conclusión

FlashRAG unifica el panorama fragmentado de RAG en un solo paquete de Python listo para producción. Ya sea que escribas un artículo, despliegues un chatbot intensivo en conocimiento o seas un hobbyista curioso, el kit te ofrece todo lo necesario: cargadores de conjuntos de datos, una interface gráfica y modelos de razonamiento de vanguardia, todo bajo la licencia MIT. Instala FlashRAG hoy y convierte pipelines de recuperación aumentada complejos en experimentos reproducibles en minutos.

Artículo original: Ver original

Compartir este artículo