Spaces:
Running
Running
Update README.md
Browse files
README.md
CHANGED
@@ -8,4 +8,235 @@ pinned: false
|
|
8 |
license: mit
|
9 |
---
|
10 |
|
11 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
license: mit
|
9 |
---
|
10 |
|
11 |
+
# 📚 GEN\_EDU\_IA: Sistema RAG Educativo con LLM y FAISS
|
12 |
+
|
13 |
+
**GEN\_EDU\_IA** es una solución integral que combina un pipeline RAG (Retrieval-Augmented Generation) con modelos LLM, gestión de vectores mediante FAISS y un bot de Telegram interactivo. Este sistema permite generar automáticamente materiales pedagógicos a partir de texto o imágenes, entregando el resultado en formato DOCX listo para ser utilizado por docentes.
|
14 |
+
|
15 |
+
---
|
16 |
+
|
17 |
+
## 🚀 Características Principales
|
18 |
+
|
19 |
+
* ⚡ **Pipeline RAG**: Integración de recuperación de contexto con generación automática usando LLM.
|
20 |
+
* 🤖 **Bot de Telegram**: Interfaz conversacional para docentes, soporta texto e imágenes.
|
21 |
+
* 📄 **Conversión Automática**: Generación de documentos en formato DOCX desde Markdown.
|
22 |
+
* 🗂️ **Gestión de Vectorstore**: Indexación eficiente de documentos educativos con FAISS.
|
23 |
+
* 📝 **Soporte Multimodal**: Procesamiento tanto de texto como de imágenes.
|
24 |
+
|
25 |
+
---
|
26 |
+
|
27 |
+
## 📂 Estructura del Proyecto
|
28 |
+
|
29 |
+
```
|
30 |
+
GEN_EDU_IA/
|
31 |
+
├── config/ # Configuración (.env, prompts)
|
32 |
+
├── core/ # Lógica principal del sistema
|
33 |
+
│ ├── integrations/ # Integraciones (Bot, conversión DOCX)
|
34 |
+
│ ├── llm/ # Gestión del modelo LLM
|
35 |
+
│ ├── pipeline/ # Pipeline RAG
|
36 |
+
│ └── vectorstore/ # Gestión de FAISS
|
37 |
+
├── database/ # Almacenamiento del índice FAISS
|
38 |
+
│ └── edullm_store/ # Índice vectorial preconstruido
|
39 |
+
├── docs/ # Documentación y materiales educativos
|
40 |
+
├── logs/ # Registros del sistema
|
41 |
+
├── scripts/ # Scripts de ejecución
|
42 |
+
├── tests/ # Pruebas unitarias
|
43 |
+
├── Dockerfile # Configuración de Docker
|
44 |
+
├── requirements.txt # Dependencias de Python
|
45 |
+
├── main.py # Lanzador principal del sistema
|
46 |
+
└── README.md # Documentación del proyecto
|
47 |
+
```
|
48 |
+
|
49 |
+
---
|
50 |
+
|
51 |
+
## ⚙️ Requisitos Previos
|
52 |
+
|
53 |
+
### Opción 1: Instalación Local
|
54 |
+
* **Python 3.11+**
|
55 |
+
* **pip** instalado
|
56 |
+
* **Pandoc** instalado
|
57 |
+
* Instalación de `uv` para una gestión eficiente de dependencias:
|
58 |
+
```bash
|
59 |
+
pip install uv
|
60 |
+
```
|
61 |
+
|
62 |
+
### Opción 2: Usando Docker
|
63 |
+
* **Docker** instalado
|
64 |
+
* **Docker Compose** (opcional)
|
65 |
+
|
66 |
+
---
|
67 |
+
|
68 |
+
## 📦 Instalación
|
69 |
+
|
70 |
+
### Opción 1: Instalación Local
|
71 |
+
|
72 |
+
1. Clona el repositorio:
|
73 |
+
```bash
|
74 |
+
git clone https://github.com/tu-usuario/gen-edu-ia.git
|
75 |
+
cd gen-edu-ia
|
76 |
+
```
|
77 |
+
|
78 |
+
2. Instala las dependencias:
|
79 |
+
```bash
|
80 |
+
uv sync
|
81 |
+
```
|
82 |
+
|
83 |
+
### Opción 2: Usando Docker
|
84 |
+
|
85 |
+
1. Construye la imagen:
|
86 |
+
```bash
|
87 |
+
docker build -t gen-edu-ia .
|
88 |
+
```
|
89 |
+
|
90 |
+
2. Ejecuta el contenedor:
|
91 |
+
```bash
|
92 |
+
docker run -d \
|
93 |
+
--name gen-edu-ia \
|
94 |
+
-v $(pwd)/config:/app/config \
|
95 |
+
-v $(pwd)/database:/app/database \
|
96 |
+
-v $(pwd)/docs:/app/docs \
|
97 |
+
-v $(pwd)/logs:/app/logs \
|
98 |
+
gen-edu-ia
|
99 |
+
```
|
100 |
+
|
101 |
+
---
|
102 |
+
|
103 |
+
## 🚨 Configuración
|
104 |
+
|
105 |
+
1. Copia el archivo de ejemplo y configura las variables:
|
106 |
+
```bash
|
107 |
+
cp config/.env.example config/.env
|
108 |
+
```
|
109 |
+
|
110 |
+
2. Edita el archivo `config/.env` con tus credenciales:
|
111 |
+
|
112 |
+
```dotenv
|
113 |
+
# ==========================================
|
114 |
+
# 🔑 CONFIGURACIÓN DEL BOT DE TELEGRAM
|
115 |
+
# ==========================================
|
116 |
+
TELEGRAM_TOKEN=your_telegram_bot_token
|
117 |
+
|
118 |
+
# ==========================================
|
119 |
+
# 🤖 CONFIGURACIÓN DEL MODELO LLM
|
120 |
+
# ==========================================
|
121 |
+
LLM_MODEL_NAME=gpt-3.5-turbo
|
122 |
+
LLM_API_KEY=your_openai_api_key
|
123 |
+
LLM_BASE_URL=https://api.openai.com/v1
|
124 |
+
|
125 |
+
# ==========================================
|
126 |
+
# 📚 CONFIGURACIÓN DEL VECTORSTORE
|
127 |
+
# ==========================================
|
128 |
+
VECTORSTORE_PATH=docs/
|
129 |
+
VECTORSTORE_NAME=edullm_store
|
130 |
+
|
131 |
+
# ==========================================
|
132 |
+
# 📝 CONFIGURACIÓN DE PROMPTS
|
133 |
+
# ==========================================
|
134 |
+
PATH_SYSTEM_PROMPT=config/prompt_system.txt
|
135 |
+
|
136 |
+
# ==========================================
|
137 |
+
# 🔄 CONFIGURACIÓN DE EMBEDDINGS
|
138 |
+
# ==========================================
|
139 |
+
MODEL_EMBEDDINGS=sentence-transformers/distiluse-base-multilingual-cased
|
140 |
+
```
|
141 |
+
|
142 |
+
3. Asegúrate de tener:
|
143 |
+
- Un token válido de Bot de Telegram (obtenido de @BotFather)
|
144 |
+
- Una API key válida para el servicio LLM
|
145 |
+
- El archivo `prompt_system.txt` en la carpeta `config/`
|
146 |
+
- Documentos en la carpeta `docs/` o un índice preconstruido en `database/edullm_store/`
|
147 |
+
|
148 |
+
---
|
149 |
+
|
150 |
+
## 🚀 Ejecución del Proyecto
|
151 |
+
|
152 |
+
### Opción 1: Local
|
153 |
+
```bash
|
154 |
+
uv run main.py
|
155 |
+
```
|
156 |
+
|
157 |
+
### Opción 2: Docker
|
158 |
+
```bash
|
159 |
+
docker start gen-edu-ia
|
160 |
+
```
|
161 |
+
|
162 |
+
El sistema iniciará:
|
163 |
+
* 🤖 **Bot de Telegram listo para recibir mensajes**
|
164 |
+
|
165 |
+
---
|
166 |
+
|
167 |
+
## 🎯 Uso del Bot EduLLM
|
168 |
+
|
169 |
+
1. Abre Telegram y busca tu bot con el token configurado
|
170 |
+
2. Envía un texto descriptivo o una imagen (puede ser una foto de una pizarra)
|
171 |
+
3. El bot generará automáticamente un material educativo
|
172 |
+
4. Recibirás un botón para descargar el archivo en formato **DOCX**
|
173 |
+
|
174 |
+
### Comandos Disponibles
|
175 |
+
* `/start` - Inicia el bot y muestra el mensaje de bienvenida
|
176 |
+
* `/help` - Muestra la ayuda y los comandos disponibles
|
177 |
+
* `/about` - Muestra información sobre el sistema
|
178 |
+
|
179 |
+
---
|
180 |
+
|
181 |
+
## 🧪 Ejecución de Pruebas
|
182 |
+
|
183 |
+
```bash
|
184 |
+
uv run pytest
|
185 |
+
```
|
186 |
+
|
187 |
+
Esto mostrará un reporte detallado del estado de las pruebas y el porcentaje de cobertura.
|
188 |
+
|
189 |
+
---
|
190 |
+
|
191 |
+
## 📊 Tecnologías Utilizadas
|
192 |
+
|
193 |
+
* **Python 3.11**
|
194 |
+
* **Telegram Bot API**
|
195 |
+
* **LangChain & FAISS**
|
196 |
+
* **OpenAI / Groq API**
|
197 |
+
* **pypandoc** (Conversión Markdown → DOCX)
|
198 |
+
* **Loguru** (Logging avanzado)
|
199 |
+
* **Pytest** (Testing)
|
200 |
+
* **Docker** (Containerización)
|
201 |
+
|
202 |
+
---
|
203 |
+
|
204 |
+
## ✅ Estado del Proyecto
|
205 |
+
|
206 |
+
✔️ Versión estable funcional
|
207 |
+
✔️ Generación de materiales educativos validada
|
208 |
+
✔️ Integración completa entre RAG, LLM y el Bot de Telegram
|
209 |
+
✔️ Soporte para Docker
|
210 |
+
|
211 |
+
---
|
212 |
+
|
213 |
+
## 🚧 Próximas Mejoras
|
214 |
+
|
215 |
+
* Implementación de control de usuarios por roles
|
216 |
+
* Almacenamiento persistente de historial de materiales generados
|
217 |
+
* Dashboard web para administración
|
218 |
+
* Soporte para más formatos de exportación (PDF, HTML)
|
219 |
+
* Mejoras en la gestión de memoria y recursos
|
220 |
+
* Optimización del pipeline RAG
|
221 |
+
|
222 |
+
---
|
223 |
+
|
224 |
+
## 📝 Notas Adicionales
|
225 |
+
|
226 |
+
### Gestión de Memoria
|
227 |
+
El sistema está optimizado para funcionar con recursos limitados, pero se recomienda:
|
228 |
+
- Mínimo 2GB de RAM para el contenedor Docker
|
229 |
+
- 1GB de espacio en disco para la base de datos vectorial
|
230 |
+
- Conexión estable a Internet para las APIs
|
231 |
+
|
232 |
+
### Mantenimiento
|
233 |
+
* Los logs se almacenan en `logs/`
|
234 |
+
* La base de datos vectorial se mantiene en `database/edullm_store/`
|
235 |
+
* Los documentos procesados se almacenan en `docs/`
|
236 |
+
|
237 |
+
### Solución de Problemas
|
238 |
+
Si encuentras algún error:
|
239 |
+
1. Revisa los logs en `logs/`
|
240 |
+
2. Verifica las variables de entorno en `config/.env`
|
241 |
+
3. Asegúrate de que los servicios externos (Telegram, LLM API) estén disponibles
|
242 |
+
4. Comprueba que los volúmenes Docker estén correctamente montados
|