Asignatura: Deep Learning para Business Analytics —
Comillas (ICADE). Profesor: Eduardo C. Garrido-Merchán
· ecgarrido@comillas.edu. Curso:
2026–2027. Bloque: III — Sistemas sobre el agente (Tema
B, semanas 13–14). Modalidad: entrega en grupo, defensa junto al
pitch final.
Un asistente que responde preguntas de un empleado o de un cliente leyendo los documentos de vuestro sector, con la cita del fragmento del que sale cada cifra. El corpus lo montáis vosotros con documentos públicos y reales: normativa, memorias anuales, pliegos, manuales de producto, tarifas, condiciones generales. Este RAG es el que entra en el prototipo del proyecto final, así que montadlo sobre el sector que vais a defender en el pitch.
La práctica del Tema B era un RAG de juguete: convenio ficticio, TF-IDF y vectores que cabían en pantalla. Aquí el corpus es real, el recuperador es denso y el sistema tiene que sobrevivir a preguntas que nadie redactó pensando en él.
Tres exigencias. Toda respuesta cita el fragmento que la sostiene, con su documento y su fecha. El sistema sabe callarse: ante una pregunta cuya respuesta no está en el corpus, contesta que no está, y eso se mide. Y toda mejora que afirméis va con su número antes y después, sobre el mismo conjunto de evaluación. Nada de esto pide clave de API ni GPU.
Construir el conjunto de evaluación es la mitad del trabajo y la mitad de la nota: un RAG sin preguntas anotadas no se puede medir, y lo que no se mide no se vende.
| Pieza | Mínimo | Qué se comprueba |
|---|---|---|
| Corpus | 20 documentos, 150 fragmentos tras el troceado | manifiesto.csv con título,
URL, fecha de descarga y licencia de cada documento. Sin datos
personales reales. |
| Preguntas respondibles | 20 | Redactadas como las escribiría un usuario, no como las escribiría el documento. Cada una con su fragmento de oro anotado. |
| De esas, difíciles | 5 | Coloquiales, con sinónimo del término del documento, o que necesitan dos fragmentos. |
| Preguntas sin respuesta | 5 | Verosímiles y del mismo dominio, pero su respuesta no está en el corpus. El sistema debe rechazarlas. |
Cuatro números, los cuatro sobre el mismo conjunto y con la semilla escrita. Acierto@ para : con qué frecuencia el fragmento de oro está entre los recuperados. Fidelidad: de las respuestas en las que el fragmento de oro sí se recuperó, cuántas lo usan de verdad en lugar de inventar o de coger la cifra del fragmento de al lado. Tasa de abstención sobre las cinco preguntas sin respuesta. Y el coste, separado en lo que se paga una vez al indexar y lo que se paga en cada consulta.
Cada fallo se clasifica en uno de los cuatro sitios donde un RAG se rompe: no indexado (el troceado partió el dato), no recuperado (el encoder no lo ve), recuperado pero enterrado (estaba en el puesto siete y era tres) o recuperado y mal respondido (el generador lo tuvo delante y contestó otra cosa). Cada uno se arregla en un sitio distinto, y confundirlos es gastar dinero donde no está el problema.
demo_rapida/01_rag.ipynbEl cuaderno de clase, sobre la normativa inventada del Banco Iberia
(6 documentos, 16 fragmentos), tiene los cuatro números medidos y sirve
de listón. Con intfloat/multilingual-e5-small da acierto@1
del 83 % y acierto@3 del 100 %; cambiando a
paraphrase-multilingual-MiniLM-L12-v2, de igual tamaño de
vector y velocidad, el acierto@1 cae al 17 % y el @3 se queda en el 100 %: cambiar de
encoder es la optimización más barata de un RAG. Sin contexto,
el modelo se inventa una comisión de 0,50 € por sacar dinero en un
cajero ajeno; con los fragmentos delante lee los 1,95 € del catálogo. La
pregunta por los fondos indexados recupera bien el fragmento bueno y
contesta con los 350 € de la tasación de otro documento, que es el fallo
de fidelidad en estado puro. Y el umbral de similitud, la defensa que
todo el mundo propone primero contra las preguntas sin respuesta,
no separa: las respondibles puntúan entre 0,834 y 0,893
y una de las que no se puede contestar puntúa 0,880. Tendréis que
abstener con otra cosa y explicar con cuál.
Una carpeta comprimida grupoNN_caso_3.zip, por debajo de
20 MB, con exactamente esto. El corpus va dentro si cabe; si no cabe, va
el manifiesto y el script que lo descarga.
| # | Fichero | Qué es |
|---|---|---|
| 1 | rag/ |
El sistema entero reproducible: troceado,
índice, recuperación, generación con cita y la regla de abstención.
Semilla fijada y un README.md de arranque de cinco
líneas. |
| 2 | evaluacion/preguntas.json |
Las 25 preguntas del §2 con su fragmento de oro anotado y la marca de cuáles no tienen respuesta. |
| 3 | evaluacion/resultados.md |
Dos páginas: la tabla de acierto@, fidelidad, abstención y coste; la clasificación de cada fallo en uno de los cuatro sitios; y los dos arreglos que probasteis, con el antes y el después de cada uno y la comprobación de que no rompieron nada que ya iba bien. |
No hay memoria, ni informe, ni prompts que entregar. Lo que sí hay es un sistema que tiene que arrancar: en la defensa se os puede pedir que lo abráis y le hagáis una pregunta nueva.
| Componente | Peso | Qué se valora |
|---|---|---|
| Corpus y conjunto de evaluación | 25 % | Documentos reales con manifiesto completo; 20 preguntas con oro anotado; las 5 difíciles, difíciles de verdad; las 5 sin respuesta, verosímiles. |
| Medida | 25 % | Los cuatro números, bien calculados y sobre el conjunto de prueba. Barrido en con la tabla completa. |
| Diagnóstico | 20 % | Cada fallo en su casilla de las cuatro, justificado mirando lo que el sistema sí recuperó. |
| Arreglo medido | 20 % | Dos intervenciones con antes y después y comprobación de regresión. |
| Abstención y cita | 10 % | Toda respuesta citada; regla de abstención que funcione y que no sea un umbral de similitud a secas. |
Medir no es arreglar, y afirmar no es medir. Decir
que algo «mejora» sin número cuesta
por caso. Suspende el caso que una cifra de
resultados.md no se pueda reproducir con el código
entregado, que el sistema conteste sin citar, o que un arreglo se
reporte sin comprobar si rompió alguna de las preguntas que antes
acertaba.
Bonus, hasta punto, sólo si lo obligatorio está completo: comparar dos encoders sobre vuestro corpus con la tabla de los dos (); un reordenador y la medida de si mueve algo o no (); troceado por secciones del documento en vez de por ventana fija, con el acierto@1 de los dos ().
En la ronda de preguntas del pitch, ordenadores cerrados y sin asistente, con una página de notas de autoría propia. Cualquier miembro del grupo responde a: (i) enseñad una pregunta que falla y decid en cuál de los cuatro sitios falla y por qué; (ii) justificad el que elegisteis con vuestra propia tabla, y decid qué ganáis y qué pagáis al subirlo; (iii) explicad qué hace vuestro sistema cuando la respuesta no está en el corpus, y por qué un umbral de similitud no bastaba. Incapacidad de defenderlo sin IA = cero en el caso (regla C, Día 01).
Publicación en la semana 13 y entrega en Moodle en la semana 14,
antes del pitch; la defensa es la ronda de preguntas
del pitch, el mismo día; notas con las del proyecto final. Los grupos
son los del proyecto final, y el RAG que entreguéis aquí es el que se
espera ver en el prototipo del §2 de la memoria. La IA está permitida y
fomentada para construirlo y prohibida en la defensa del §7: la
responsabilidad de lo que el agente escriba es vuestra, y las cifras de
resultados.md las firmáis vosotros. Para dudas, el foro
primero y el profesor después. El andamiaje está entero en
demo_rapida/01_rag.ipynb, que trae el troceado, el encoder,
el índice y la abstención resueltos sobre el Banco Iberia, y en
nuevo_material/tema_B_sistemas/practica/, que trae el
barrido en
y la clasificación de los cuatro fallos. Copiadlos y cambiadles el
corpus.