Rúbrica PR5073/01: Assistent RAG amb LangChain i Docker
Pràctica: PR5073/01 — Assistent RAG amb LangChain i Docker Mòdul: 5073 — Programació d'Intel·ligència Artificial Curs: IABD — Institut Sa Palomera, Blanes Pes sobre la nota del mòdul: 15%
Criteris d'avaluació
| Criteri | Pes | Excel·lent (9-10) | Notable (7-8) | Aprovat (5-6) | Insuficient (<5) |
|---|---|---|---|---|---|
| Configuració entorn Docker | 10% | Ollama + Python funcionant amb docker-compose, tots els serveis saludables, logs nets | Docker configurat correctament, els serveis arranquen sense errors | Docker bàsic funcional, algun avís als logs | Errors de configuració, els serveis no arranquen |
| Qualitat del sistema RAG | 30% | Chunking òptim (mida i superposició justificades), MMR retrieval, prompt en català, cita fonts, gestió d'excepcions | RAG funcional, bona qualitat de respostes, fonts referenciades | RAG funcional amb limitacions (respostes genèriques, sense fonts) | RAG no funcional o respostes inventades |
| Interfície Gradio | 15% | Interfície polida amb pestanyes, historial de conversa, mostra les fonts, permet afegir documents | Interfície funcional i clara, historial present | Interfície mínima funcional (chat simple) | Sense interfície o no funcional |
| Qualitat de les respostes en català | 20% | Respostes precises, fluides, en bon català, cita les fonts exactes, avisa quan no te informació | Respostes correctes en català, cita fonts parcialment | Respostes parcialment correctes, català amb errors, rarament cita fonts | Respostes incorrectes o no en català |
| Personalització | 5% | Nom de l'alumne al títol de l'app, al missatge de benvinguda, al nom del contenidor Docker, al directori Chroma i al prompt del sistema | Nom visible a l'app i al contenidor | Nom parcialment present (1-2 llocs) | Absent o usat el nom per defecte "Joan Garcia" |
| Documentació i memòria | 15% | Arquitectura documentada amb diagrama, decisions justificades (mida chunk, k, MMR), proves amb captura, preguntes de reflexió completes | Documentació correcta, decisions explicades | Documentació bàsica sense justificació | Absent o copiat d'un company |
| Defensa oral | 5% | Domina el funcionament del sistema complet, explica decisions tècniques (MMR, chunking, temperatura), respon preguntes imprevistes | Respon bé les preguntes bàsiques, explica el flux general | Respostes bàsiques, necessita consultar el codi | No pot explicar el funcionament o no compareix |
Detall per criteri
Configuració entorn Docker (10%)
Excel·lent (9-10):
- docker-compose.yml amb els serveis ollama i rag-[alumne] correctament configurats
- healthcheck definit per a Ollama
- Model nomic-embed-text i llama3.1:8b (o equivalent) descarregats i verificats
- El servei arranca amb docker compose up -d sense cap intervenció manual
- Variables d'entorn gestionades via .env
Notable (7-8):
- Docker configurat correctament però sense healthcheck
- Els serveis arranquen, però requereix algun pas manual addicional
Aprovat (5-6):
- Docker bàsic funcional però amb configuració mínima
- Sense docker-compose.yml però amb instruccions docker run funcionals
Insuficient (<5): - Errors de configuració Docker que impedeixen l'execució - Servei no és reproductible (funciona "a casa de l'alumne" però no en una màquina neta)
Qualitat del sistema RAG (30%)
Excel·lent (9-10):
- chunk_size i chunk_overlap triats amb criteri i documentats
- Retriever amb MMR (search_type="mmr", fetch_k > k)
- Prompt del sistema en català que demana citar fonts i gestionar la manca d'informació
- Documents variats carregats (almenys PDF o web + texts propis)
- El sistema respon "No tinc aquesta informació" davant preguntes fora de context
- Metadades de fonts als chunks
Notable (7-8): - RAG funcional amb bona qualitat, chunking adequat - MMR o similitud simple amb paràmetres raonables - Fonts referenciades a les respostes
Aprovat (5-6): - RAG funcional però respostes genèriques - Chunking amb valors per defecte sense justificació - Sense gestió de preguntes fora de context
Insuficient (<5): - RAG no funcional (no retorna context rellevant) - Respostes inventades (alucinacions sense context) - Sistema no indexa documents reals
Interfície Gradio (15%)
Excel·lent (9-10): - Almenys dues pestanyes: "Assistent" i "Afegir documents" (o similar) - Historial de conversa visible i persistent durant la sessió - Les fonts usades es mostren sota cada resposta - Preguntes d'exemple predefinides - Títol inclou el nom de l'alumne - Responsive i sense errors visuals
Notable (7-8): - Interfície funcional i clara - Historial de conversa present - Nom de l'alumne visible
Aprovat (5-6): - Interfície mínima funcional: camp de text + botó + resposta - Sense historial ni mostrar fonts
Insuficient (<5): - Sense interfície Gradio (només CLI) - Interfície present però no funcional
Qualitat de les respostes en català (20%)
Evidència a avaluar: conversa documentada a la memòria amb almenys 5 preguntes i les respostes obtingudes.
Excel·lent (9-10): - Totes les respostes en català correcte (ortografia, gramàtica, vocabulari tècnic adequat) - Respostes precises i basades en el context real dels documents - Cita la font específica ("Segons el document X, pàgina Y...") - Quan no te informació, ho indica clarament i proposa alternatives
Notable (7-8): - Respostes en català correcte - Basades en el context, cita fonts parcialment - Ocasionalment respon sense context clar
Aprovat (5-6): - Respostes en català amb alguns errors - Parcialment correctes, sovint massa generals
Insuficient (<5): - Respostes en castellà o anglès - Alucinacions evidents (informació no present als documents) - No diferencia entre informació del context i coneixement propi del model
Personalització (5%)
El nom real de l'alumne ha d'aparèixer als llocs següents:
| Element | Exemple |
|---|---|
| Nom del contenidor Docker | --name rag-maria-puig |
| Directori Chroma | ./chroma_maria_puig/ |
| Títol de l'aplicació Gradio | "Assistent RAG - Maria Puig" |
| Prompt del sistema | "Ets l'Assistent_Maria_Puig..." |
Variable ALUMNE al codi |
ALUMNE = "Maria Puig" |
Atenció
Els alumnes que lliurin la pràctica amb el nom "Joan Garcia" (del template) en lloc del seu nom real rebran puntuació 0 en aquest criteri.
Documentació i memòria (15%)
Estructura esperada de la memòria (PDF, 3-5 pàgines):
- Portada: nom de l'alumne, curs, data, PR5073/01
- Arquitectura: diagrama del sistema (Mermaid exportat o draw.io), explicació de cada component
- Documents carregats: quins documents, per quin motiu, quantitat de chunks resultants
- Decisions tècniques: justificació del chunk_size triat, de k i fetch_k, de la temperatura del LLM
- Resultats: captures de la interfície, conversa d'exemple, mètriques de temps de resposta
- Preguntes de reflexió: les 5 preguntes de la pràctica respondudes
- Conclusions: dificultats trobades, millores proposades
Defensa oral (5%)
La defensa dura entre 5 i 10 minuts. El professor farà entre 3 i 5 preguntes escollides aleatòriament:
Preguntes tipus: - "Explica'm pas a pas qué passa des que l'usuari escriu una pregunta fins que rep la resposta" - "Per quin motiu has triat una mida de chunk de X? Qué passa si la fas més gran? I més petita?" - "Qué es MMR i en qué millora respecte a la similitud cosinus simple?" - "Com modificaries el sistema per a actualitzar els documents automàticament cada nit?" - "Quin es el cost de fer funcionar aquest sistema per a 100 usuaris al dia? I per a 10.000?" - "Com gestionaria el sistema una pregunta en castellà quan els documents son en català?"
Fulla de puntuació
Alumne: _____ Grup: _ Data: _______
| Criteri | Pes | Puntuació (0-10) | Puntuació ponderada |
|---|---|---|---|
| Configuració entorn Docker | 10% | ||
| Qualitat del sistema RAG | 30% | ||
| Interfície Gradio | 15% | ||
| Qualitat respostes en català | 20% | ||
| Personalització | 5% | ||
| Documentació i memòria | 15% | ||
| Defensa oral | 5% | ||
| TOTAL | 100% |
Nota final: _ / 10
Observacions del professor:
Signatura del professor: _____ Data: _______