Descarga desde: https://www.python.org/downloads/
Docker es necesario para ejecutar ChromaDB.
- Windows/Mac: Descarga Docker Desktop desde https://www.docker.com/products/docker-desktop/
- Linux:
sudo apt-get update sudo apt-get install docker.io docker-compose
Ollama es necesario para ejecutar los modelos LLM y embeddings localmente.
- Windows: Descarga el instalador desde https://ollama.com/download/windows
- Mac: Descarga desde https://ollama.com/download/mac
- Linux:
curl -fsSL https://ollama.com/install.sh | sh
Verifica que Ollama está instalado correctamente:
ollama --versionPara la instalación del proyecto se presentan como opciones un fichero requirements.txt y un fichero pyproject.toml.
Instalación con Pip:
pip install -r requirements.txtInstalación con Poetry:
poetry install --no-rootDescarga los modelos necesarios:
ollama pull llama3.2
ollama pull embeddinggemma
⚠️ IMPORTANTE: Este paso debe realizarse una sola vez antes del primer uso.
Este comando descargará la imagen de ChromaDB, creará y arrancará el contenedor automáticamente (escuchará en http://localhost:8000):
En Linux/Mac:
sudo docker compose up -dEn Windows (PowerShell como Administrador):
docker compose up -dNota: El archivo
docker-compose.ymlya está incluido en el proyecto, no necesitas crear nada. Docker lo lee automáticamente.
Este script extrae las recetas de los PDFs ubicados en la carpeta pdf/ usando el archivo offsets.json para determinar las páginas relevantes:
python ./pdf_processing/gisting.pyEste script analiza las recetas almacenadas y genera categorías temáticas usando BERTopic:
python ./topic_modelling/topic_modelling.pyUna vez preparada la base de datos, ejecuta el chatbot con su interfaz web:
streamlit run app.pyEl chatbot estará disponible en http://localhost:8501
Nota: Asegúrate de que Docker esté corriendo con ChromaDB activo antes de iniciar el chatbot.
Para evaluar el rendimiento del chatbot usando el dataset de preguntas (evaluation/questions.csv):
python ./evaluation/evaluation.pyLos resultados se guardarán automáticamente en ./evaluation/evaluation_report.csv con las siguientes métricas:
- Recall@K (K=1, 3, 5)
- MRR (Mean Reciprocal Rank)
- BERTScore (Precision, Recall, F1)
- FactScore
- Tiempos de respuesta
.
├── app.py # Interfaz web del chatbot (Streamlit)
├── rag_system.py # Sistema RAG principal
├── vector_store.py # Gestión de ChromaDB
├── docker-compose.yml # Configuración de Docker
├── offsets.json # Configuración de páginas de PDFs
├── requirements.txt # Dependencias Python
├── pdf/ # PDFs de recetas
├── pdf_processing/ # Scripts de procesamiento de PDFs
├── topic_modelling/ # Scripts de modelado de tópicos
└── evaluation/ # Scripts y datos de evaluación