Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧩 Sistema RAG Modular

Sistema de Retrieval-Augmented Generation (RAG) construido con una arquitectura modular y limpia. Combina búsqueda de documentos mediante BM25 con generación de respuestas usando LLMs a través de APIs externas (Groq, OpenAI) o locales (Ollama).

Python Streamlit License

📋 Descripción

El flujo del sistema sigue una pipeline clásica de RAG:

Consulta del usuario → Retriever (BM25) → Contexto relevante → LLM → Respuesta con citas
  1. Retrieval: Se buscan los documentos más relevantes del corpus usando el algoritmo BM25 (Okapi).
  2. Prompt Engineering: Se construye un prompt con el contexto recuperado, instruyendo al modelo a responder solo con la información disponible y citar fuentes.
  3. Generation: Se envía el prompt a un LLM (Groq, OpenAI u Ollama) que genera la respuesta final.

🏗️ Arquitectura

Módulo Descripción
corpus.py Define el corpus de documentos (50 documentos sobre NLP, IR, ML y temas generales)
retriever.py Implementa BM25Retriever usando rank_bm25 para búsqueda por relevancia
llm_service.py Gestiona la comunicación con APIs de LLMs (Groq, OpenAI, Ollama)
app.py Interfaz web con Streamlit que orquesta todo el flujo RAG

🚀 Instalación

1. Clonar el repositorio

git clone https://github.com/<tu-usuario>/rag-modular.git
cd rag-modular

2. Crear entorno virtual (recomendado)

python -m venv venv

# Windows
venv\Scripts\activate

# Linux/macOS
source venv/bin/activate

3. Instalar dependencias

pip install -r requirements.txt

▶️ Uso

Ejecutar la aplicación:

streamlit run app.py

Esto abrirá la interfaz web en http://localhost:8501.

Configuración desde la interfaz

En la barra lateral puedes configurar:

  • Proveedor LLM: Groq, OpenAI u Ollama (local)
  • Modelo: Selecciona entre los modelos disponibles del proveedor elegido
  • API Key: Requerida para Groq y OpenAI
  • Top K: Número de documentos a recuperar (1-10)

Proveedores soportados

Proveedor Modelos disponibles API Key
Groq llama-3.3-70b-versatile, llama-3.1-8b-instant, mixtral-8x7b-32768, gemma2-9b-it Sí (console.groq.com)
OpenAI gpt-4o-mini, gpt-4o, gpt-3.5-turbo Sí (platform.openai.com)
Ollama llama2, mistral, phi3 No (ejecución local)

💡 Groq ofrece un tier gratuito generoso, ideal para pruebas.

📁 Estructura del proyecto

RAG/
├── app.py              # Aplicación principal (Streamlit)
├── corpus.py           # Corpus de documentos
├── retriever.py        # Motor de búsqueda BM25
├── llm_service.py      # Servicio de conexión con LLMs
├── requirements.txt    # Dependencias del proyecto
└── README.md           # Este archivo

🛠️ Tecnologías

  • Python 3.8+
  • Streamlit — Interfaz web interactiva
  • rank_bm25 — Implementación del algoritmo BM25 Okapi
  • requests — Comunicación HTTP con APIs de LLMs

📄 Licencia

Este proyecto está bajo la licencia MIT.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages