Skip to content

English · Español

Break 00 — Saltar el retrieval: pasar la consulta cruda directamente al reader

Saltamos el retriever.retrieve(...) y pasamos la consulta cruda al reader Mini-GPT, sin contexto. El modelo "responde" desde sus pesos, no desde la base de conocimientos. Comparamos contra el baseline con retrieval para medir cuánto cae la accuracy y la faithfulness en una pregunta de lookup de §A13.

Este ejercicio /break muestra el trade-off closed-book vs open-book de forma concreta. El bug: el paso del prompt aumentado se omite. El modo de fallo es dramático en una tarea de lookup §A13 porque los parámetros de Mini-GPT no contienen las tablas de verbos irregulares.

Anclajes: theory/00-motivation.md, theory/05-rag-from-scratch-spec.md, .claude/commands/break.md.


Hipótesis

El learner predice: "El chunk de la KB §A13 para write dice: 'past participle: written. past simple: wrote.' Si recupero e inyecto este chunk, Mini-GPT puede leer la respuesta. Si me salto el retrieval, Mini-GPT tiene que recordar la forma de los pocos miles de ejemplos de entrenamiento — y para los 8 verbos irregulares, confunde varios con conjugaciones regulares ('writed', 'eated'). La accuracy caerá de ~95% con retrieval a ~50% sin él."

El break

En src/minirag/pipeline.py:

 def rag_answer(query: str, store: FlatVectorStore, reader: MiniGPT, k: int = 3) -> str:
-    retriever = Retriever(store=store)
-    chunks = retriever.retrieve(query, k=k)
-    prompt = build_prompt(query, chunks)
+    # /break: skip retrieval; feed the bare query.
+    prompt = query
     return reader.generate(prompt, max_new_tokens=20)

Tres líneas borradas; una añadida. El pipeline ahora se salta el chunker, el embedder, el store, el retriever y el prompt augmenter — es una llamada closed-book.

Predice, luego ejecuta

El eval set §A13 tiene 30 preguntas tipo lookup:

  • "What is the past simple of eat?" → ate (irregular)
  • "What is the past participle of write?" → written (irregular)
  • "What is the third-person present of study?" → studies (regular pero -y → -ies)

Mini-GPT fue entrenado sobre el corpus §A13, que contiene estas conjugaciones — pero no de forma exhaustiva y no en formato "Q: ... A: ...". El modelo closed-book ha visto wrote y written en contexto, pero su capacidad para contestar una pregunta directa sobre ellos es más débil que su capacidad para completar una frase que los contiene.

Predicciones

  • Con retrieval (baseline): ~25/30 correctos (83%). Los 5 fallos suelen ser por formulación, no por hecho.
  • Sin retrieval (roto): ~10-15/30 correctos (33-50%). El modelo:
  • regulariza verbos irregulares ("writed" en lugar de "wrote") alrededor del 30% de las veces;
  • adivina el infinitivo cuando le preguntan por un tiempo que no recuerda;
  • a veces devuelve basura con confianza (3ª persona de be → "bees").
  • Métrica de faithfulness: cae de ~1.0 (cada afirmación anclada en un chunk recuperado) a ~0.0 (no se recuperaron chunks). Esta es la señal más limpia — incluso cuando la respuesta closed-book es correcta, no tiene nada que citar.

Escribe tus predicciones en learners/borja/phase-29/notes/breaks.md antes de ejecutar.

Observa

Ejecuta el eval end-to-end de la Fase 29, comparando modos:

just exp 29-rag --mode with-retrieval
just exp 29-rag --mode no-retrieval
diff experiments/<date>-29-rag-with-retrieval/answers.jsonl \
     experiments/<date>-29-rag-no-retrieval/answers.jsonl

Diagnósticos para graficar:

  1. Gráfico de barras: accuracy sobre el eval set §A13 de 30 preguntas, dos barras. Espera ~83% vs ~40%.
  2. Gráfico de confusión: para los 8 verbos irregulares, fracción de respuestas "regularizadas" (sufijo -ed incorrecto en irregulares). Con retrieval ≈ 0.05; sin retrieval ≈ 0.30.
  3. Comparativa lado a lado de respuestas en tres preguntas: "past simple of eat", "past participle of write", "3rd-person present of be". Las respuestas closed-book son diagnósticas.

Síntoma que verá Borja

  • La accuracy cae ≥ 30 puntos porcentuales.
  • Verbos irregulares concretos se regularizan sistemáticamente.
  • Sin logs relacionados con retrieval — porque el retrieval se omitió por completo.
  • La métrica de faithfulness se colapsa (sin chunks → sin citas ancladas).

Causa oculta (en una frase)

La función rag_answer fue modificada para saltarse el retriever y el prompt augmenter, mandando la consulta cruda a Mini-GPT, que no tiene en sus pesos una tabla de conjugaciones §A13 desde la que responder con fiabilidad.

Cascada de pistas

  1. Busca en los logs "retrieved chunks". ¿Se imprime alguno? Si no, ¿dónde se fue el retrieval?
  2. Imprime el prompt real que se manda a reader.generate(...). ¿Contiene chunks de contexto?
  3. Compara el prompt con la plantilla de theory/05-rag-from-scratch-spec.md §"Default template". ¿Qué falta?

Diff de arreglo

 def rag_answer(query: str, store: FlatVectorStore, reader: MiniGPT, k: int = 3) -> str:
+    retriever = Retriever(store=store)
+    chunks = retriever.retrieve(query, k=k)
+    prompt = build_prompt(query, chunks)
-    prompt = query
     return reader.generate(prompt, max_new_tokens=20)

Por qué esto enseña el concepto

La afirmación central de RAG es: "tu modelo no necesita saber la respuesta — necesita leer la respuesta." Este break hace que esa afirmación cargue peso. Con retrieval, Mini-GPT (que tiene 103 680 params, muchísimo menos de lo que haría falta para memorizar una tabla verbal) responde con facilidad preguntas de lookup. Sin retrieval, el mismo modelo falla — porque el conocimiento no está en los pesos. Es la dicotomía closed-book vs open-book de theory/00-motivation.md, hecha empíricamente real.

La lección generaliza: los LLMs grandes parecen memorizar hechos porque fueron entrenados con una muestra suficiente de ellos, pero los modos de fallo (alucinación, falta de frescura) son exactamente los que una capa de retrieval habría atajado. Los sistemas de producción con millones de hechos (historias clínicas, documentos legales, KBs corporativas) no pueden permitirse depender de la memoria paramétrica — RAG es la respuesta arquitectónica.

Referencias

  • Lewis et al., paper de RAG (arXiv:2005.11401), Tabla 4 — muestra el delta de accuracy en TriviaQA cuando se ablata el retrieval.
  • theory/00-motivation.md §"When closed-book is enough" — las condiciones bajo las cuales el camino closed-book es realmente viable (conocimiento pequeño, estable, denso — lo opuesto a las tablas de verbos irregulares).

Siguiente: restaura rag_answer y ejecuta el lab/03-end-to-end-rag.md completo para trazar la frontera retrieval-on/off.