Download docs/eval_report_v2.md from CamiloS1111/ragsolver: direct link, hf CLI and curl.
- Browser
- Download file 9.5 kB
-
https://huggingface.co/CamiloS1111/ragsolver/resolve/main/docs/eval_report_v2.md
- Command line
-
hf download hf://CamiloS1111/ragsolver/docs/eval_report_v2.md
-
curl -L -o eval_report_v2.md https://huggingface.co/CamiloS1111/ragsolver/resolve/main/docs/eval_report_v2.md
Evaluación eval-v2 — sistema por goal (docs/PLAN_MEJORA_RAG.md), reporte parcial
2026-10-15. Estado final:
- Ronda 1 completa. Ronda 2 completa (opción B):
full2/15,no_rag2/15,baseline_auto2/15, a US$0.109.- Ronda 3 detenida a pedido (#111): 11/15 pares de
full(2 resueltos), sinno_rag.baseline_autocompleta en los 60.- Comparación
fullcontrano_ragen 30 problemas pareados: 8 frente a 9.- Siguiente paso: el rediseño con demostrador local (
docs/PLAN_REDISENO_PROVER.md, eval-v3). El guardia de costo detuvo la cadena tras la ronda 1: la proyección para las rondas 2-4 (US$0.343) superaba el saldo de la key (US$0.289). Falta tu decisión para seguir (sección 6).Datos:
data/eval/runs/eval-v2/(resultados y trazas);data/eval/results/eval_v2_round1_check.json(guardia);eval_v2_analysis.jsonyeval_v2_stats.json(cifras de este reporte; se regeneran condata/eval/results/eval_v2_analysis.py).
1. Resumen
| Configuración | Ronda 1 (15 problemas) | IC95 Wilson | Los 60 problemas |
|---|---|---|---|
full (sistema nuevo con RAG por goal) |
6/15 | 0.20-0.64 | — |
no_rag (sistema nuevo sin premisas recuperadas) |
7/15 | 0.25-0.70 | — |
baseline_auto (sólo tácticas de Lean, 0 LLM) |
5/15 | 0.15-0.58 | 11/60 (0.11-0.30) |
eval-v1 full (sistema viejo) |
3/15 | 0.07-0.45 | 9/60 |
eval-v1 no_rag |
4/15 | 0.11-0.52 | 9/60 |
| eval-v1 línea base A (LLM escribe la prueba) | — | — | 5/60 |
Lo que dicen los datos, de más a menos firme:
- El cambio de arquitectura es lo que más mueve el resultado. Las tácticas de Lean solas, sin una sola llamada al LLM y a US$0, resuelven 11/60, más que el sistema viejo completo (9/60). En la ronda 1, el sistema nuevo resuelve el doble que el viejo en los mismos problemas: 6-7/15 frente a 3-4/15. Esa comparación no es significativa (McNemar p = 0.375; 4 problemas sólo en v2, 1 sólo en v1) y está confundida por el cambio de proveedor del LLM y de índice.
- Las premisas recuperadas (el RAG nuevo) no muestran efecto medible.
full6 frente ano_rag7: un único problema distinto, a favor deno_rag. El kernel usó 1 premisa recuperada en 1 problema de los 6 resueltos. La batería cerró más pasos con premisas (26 frente a 18), pero las premisas no aparecen en los términos de prueba:grindcerró esos pasos con lo que ya sabe. - Los agentes aportan poco sobre la automatización en esta ronda.
fullresuelve 1 problema más quebaseline_auto(algebra_sqineq_2unitcircatblt1) yno_rag, 2. - El flujo nuevo no es más barato en problemas difíciles. US$0.0036 por par en
fully US$0.0032 enno_rag, con 23 600 y 16 700 tokens de entrada: lo mismo que eval-v1. La estimación de US$0.0016 que di antes salía de pares fáciles.
Con 15 problemas pareados ninguna diferencia es significativa. Completar las 4 rondas daría n = 60 para full contra no_rag.
2. Configuración
- Problemas: eval-v1 (60), en 4 rondas intercaladas (
eval_v1_round{k}.jsonl= problemas k, k+4, …). Cada ronda tiene 6 de álgebra, 6 de teoría de números y 3 de combinatoria. - Configuraciones:
full,no_rag,baseline_auto(DECISIONS #96).rag_nlquedó aislada a pedido del usuario (#106). - Modelo: DeepSeek V4 Flash vía OpenRouter, con 4 hilos. El tope de precio se subió a {0.13, 0.30} durante la ronda 1 (8 proveedores, #107), porque con el anterior sólo calificaba DeepInfra, saturado.
- Código:
prompt_version: "3"; índicemathlib_full; canal denso apagado; prior de competición de 778 lemas. - Cambios de infraestructura durante la ronda 1 (no afectan a los resultados):
- los 429 pasaron a reintentarse hasta 10 veces, porque no se cobran (#104);
- hubo dos reinicios de la cadena: el cambio de reintentos y la salida de
rag_nl; - los pares interrumpidos se repitieron completos.
3. Ronda 1 por problema
| Problema | Área | Dif. | full |
no_rag |
baseline_auto |
v1 full |
v1 no_rag |
|---|---|---|---|---|---|---|---|
| mathd_algebra_209 | álgebra | 1 | ✔ | ✔ | ✔ | – | – |
| algebra_sqineq_2unitcircatblt1 | álgebra | 1 | ✔ | ✔ | – | ✔ | ✔ |
| mathd_algebra_77 | álgebra | 1 | ✔ | ✔ | ✔ | – | – |
| amc12b_2020_p13 | álgebra | 2 | – | – | – | – | – |
| amc12a_2010_p11 | álgebra | 2 | – | – | – | – | – |
| imo_1965_p1 | álgebra | 3 | – | – | – | – | – |
| mathd_numbertheory_728 | t. números | 1 | ✔ | ✔ | ✔ | ✔ | ✔ |
| mathd_numbertheory_403 | t. números | 1 | ✔ | ✔ | ✔ | – | – |
| numbertheory_aneqprodakp4_anmsqrtanp1eq2 | t. números | 1 | – | – | – | – | – |
| amc12a_2020_p10 | t. números | 2 | – | – | – | – | – |
| amc12a_2016_p3 | t. números | 2 | – | – | – | ✔ | ✔ |
| imo_1977_p5 | t. números | 3 | – | – | – | – | – |
| mathd_algebra_170 | combinatoria | 1 | – | – | – | – | – |
| mathd_algebra_104 | combinatoria | 1 | ✔ | ✔ | ✔ | – | ✔ |
| amc12a_2002_p6 | combinatoria | 2 | – | ✔ | – | – | – |
Comparaciones pareadas (McNemar exacto, ronda 1):
| A | B | sólo A | sólo B | p |
|---|---|---|---|---|
v2 full |
v2 no_rag |
0 | 1 | 1.00 |
v2 full |
baseline_auto |
1 | 0 | 1.00 |
v2 full |
v1 full |
4 | 1 | 0.375 |
v2 no_rag |
v1 no_rag |
4 | 1 | 0.375 |
En los 60: baseline_auto contra v1 full, 7 sólo auto frente a 5 sólo v1 (p = 0.77); contra la línea base A de v1, 7 frente a 1 (p = 0.07).
4. Qué cerró cada paso y qué usó el kernel
Pasos cerrados por la batería CLOSE (sin LLM; los cerrados por el bloque del propio modelo no se cuentan aquí):
Config grind(con premisas enfull)try?nlinarithabiertos tras CLOSE (van a FILL) full23 3 — 113 no_rag14 3 1 128 Premisas recuperadas que usa el término aceptado (
Verdict.used_constants, #101): 1 enfull, en un problema. El texto de las pruebas nombra 16 por cadagrind +lax [...], pero el kernel no las usa. Los 9 pasos de diferencia en la batería se explican porque cada configuración recibe esqueletos distintos (muestras distintas del LLM), no por las premisas.Llamadas FILL: 19 en
fully 21 enno_rag, en 15 problemas.Por qué fallan los problemas difíciles: sobre todo pruebas del modelo que Lean rechaza (
unsolved goals,type mismatch) en pasos que ni la batería ni FILL logran cerrar. Ejemplo,amc12a_2002_p6enfull: el modelo usaSet.infinite_univpara{m | 0 < m}, y en FILL escribe un bloque en una sola línea con viñetas·encadenadas por;. No se encontró ningún error de ensamblado: el archivo final contiene exactamente lo que se verificó paso a paso.
5. Costo
| Concepto | US$ |
|---|---|
| Smoke (2 corridas, 8 problemas) | 0.0145 |
| Ronda 1 (gasto de la key, incluidos ~US$0.008 de pares interrumpidos por los reinicios) | 0.1143 |
baseline_auto, 60 problemas |
0.0000 |
| Saldo de la key | 0.2892 |
Por par: full US$0.0036 (23 600 tokens de entrada / 9 300 de salida); no_rag US$0.0032 (16 700 / 9 800). full lleva un 42 % más de tokens de entrada por las listas de premisas con firma que van a FILL. Ningún par superó el presupuesto de 20 llamadas (máximo 15) y no hubo pares en error.
Proyección para las rondas 2-4: 90 pares pagados × ~US$0.0034 ≈ US$0.31-0.34, frente a US$0.289 de saldo. Por eso el guardia cortó, como estaba previsto.
6. Opciones para seguir (decisión del usuario)
| Opción | Qué se obtiene | Costo | Tiempo |
|---|---|---|---|
| A. Subir el límite de la key en OpenRouter (≥ US$0.10 más) y correr las rondas 2-4 | full contra no_rag en los 60 problemas: la única medición con potencia mínima para el aporte del RAG |
~US$0.33 | 2-4 h |
| B. Correr sólo las rondas 2 y 3 con el saldo actual | 45 problemas pareados | ~US$0.21 | 1.5-3 h |
| C. Volver al tope barato (sólo DeepInfra) y correr las rondas 2-4 | 60 problemas; |
~US$0.28 | 13-16 h (429) |
| D. Parar aquí | Ronda 1 + baseline_auto en los 60 |
0 | — |
Recomendación: A, y si no es posible, B. Con la ronda 1 sola no se puede afirmar nada del aporte del RAG: se necesitan los pares de las otras rondas.
7. Qué significa para el objetivo del RAG
- El RAG nuevo recupera mucho mejor (recall@16 por goal 0.327 frente a <0.01, Fase 3), pero todavía no convierte eso en problemas resueltos:
- la automatización (
grind) ya conoce los lemas genéricos que trae el prior (sq_nonneg,mul_pos…), así que dárselos no le añade nada; - FILL los recibe, pero el término final casi nunca los usa.
- la automatización (
- Donde el RAG podría aportar es en lemas específicos (
Nat.Prime.eq_one_or_self_of_dvd,Real.log_rpow) que ni la automatización ni el modelo conocen bien. El canal que los buscaba (el índice denso) fue el que no funcionó (recall 0.028). - Siguiente mejora candidata, a medir antes de gastar: recuperar para los goals que quedan abiertos tras la batería, en lugar de para todos. Con el dato de qué falló (el error de Lean) se buscarían lemas específicos, y se pasarían a FILL con prioridad sobre los genéricos.