Proyecto para generar preguntas sobre documentos utilizando RAGs (Retrieval-Augmented Generation) con DeepEval y modelos locales.
Este proyecto facilita la generación automática de preguntas a partir de un conjunto de documentos, implementando un flujo de Recuperación (Retrieval) y Generación (Generation) basado en modelos de lenguaje local. Se integra con DeepEval para evaluar la calidad de las preguntas generadas y permite la configuración de servidores locales de modelos (VLLM y Ollama).
- Python 3.11 🐍
- pip 📦
- Git 🐧
- Hardware compatible con VLLM y Ollama 💻
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Primero, instala y configura el CLI de Hugging Face:
huggingface-cli login
Configuración del token de Hugging Face:
- Ve a https://huggingface.co/settings/tokens
- Crea un nuevo token con permisos de lectura 🔑
- Usa la configuración mostrada en la imagen 📸
- Introduce el token cuando se te solicite ✍️
pip install -U deepeval
deepeval login --confident-api-key [TU-API-KEY-DE-DEEPEVAL]
Obtener API key de DeepEval:
- Regístrate en https://deepeval.com/ 📝
- Sigue las instrucciones en: https://deepeval.com/docs/getting-started
- DeepEval es gratuito y con su api-key permite mantener todos los resultados de evaluación en la nube ☁️
Importante: Reemplaza los archivos modificados de la carpeta codigo_modificado/
en tu instalación local de la librería de DeepEval. 🔄
vllm serve meta-llama/Meta-Llama-3-8B-Instruct \
--port 8000 \
--dtype float16 \
--max-model-len 4096 \
--tool-call-parser llama3_json
Instalación de Ollama (Ubuntu/Debian):
# Actualizar sistema
sudo apt update
sudo apt install curl -y
# Herramientas para detección de hardware
sudo apt install pciutils lshw -y
# Instalar Ollama
curl -fsSL https://ollama.com/install.sh | sh
Ejecutar servidor Ollama:
ollama serve
# Modelo de razonamiento
ollama pull deepseek-r1:1.5b
# Modelo de embeddings en español
ollama pull jina/jina-embeddings-v2-base-es
# Configurar modelo principal
deepeval set-local-model \
--model-name="meta-llama/Meta-Llama-3-8B-Instruct" \
--base-url="http://localhost:8000/v1/" \
--api-key="not-needed"
# Configurar embeddings
deepeval set-ollama-embeddings deepseek-r1:1.5b \
--base-url="http://localhost:11434"
Edita main.py
para especificar:
- Ruta de documentos de entrada 📂
- Ruta de salida (por defecto:
output/
) 📤
python3 main.py
Puedes saltar pasos específicos usando flags:
python3 main.py --skip_step1 --skip_step2 --skip_step3
--skip_step1
: Saltar generación ⏭️--skip_step2
: Saltar reformulación ⏭️--skip_step3
: Saltar módulo RAG ⏭️
- Los resultados incrementales se guardan en la carpeta
output/
📁 - El dataset final incluye preguntas generadas y sus respuestas correspondientes 📚
Una vez generado el dataset, puedes evaluarlo ejecutando:
python3 mod_4_evaluar.py
Este script realizará la evaluación automática del dataset final.