🧬 Mega Brain RAG — Quality Dashboard

gerado 2026-08-02T02:18:56.358826Z · corpus 16,488 chunks · 16 golden cases-âncora · k=8 · 32 runs reais via MCP · naive vs reranked-llm
hit@8 (recall)
0.75
▲ +0.17 vs naive 0.58
dedup (uniq/ret)
1.00
▲ +0.61 · naive só 0.39
abstenção adversarial
100%
sinal existe, tool não abstém (Defeito B)
latência p95
6363ms
+3205ms · gap de cache

Comparação de métricas — naive vs reranked

métricanaivereranked (llm)Δ
hit@8
higher better
0.58
0.75
+0.167
unique_ratio
higher better
0.39
1.00
+0.609
abstention
higher better
1.00
1.00
+0.000
MRR (known-item)
⚠ dedup-biased
0.45
0.36
-0.092
NDCG@8
⚠ dedup-biased
0.49
0.44
-0.050

Latência (custo do rerank + gap de embedding cache)

percentilnaivererankedΔ
avg3070 ms4946 ms+1876 ms
p503083 ms4781 ms+1698 ms
p953158 ms6363 ms+3205 ms

Defeitos reais encontrados (ao vivo, não hipótese)

A — mb_search não dedupa: 61% duplicata

16/16 casos. G02 retornou o mesmo doc ×8 (unique_ratio 0.12). O consumidor de copy recebe ~3 docs úteis num top-8. Fix: portar dedup (kind,slug) que o sibling reranked já tem.

B — rerank LLM DESLIGADO em produção + zero abstenção

Default MB_RERANK_MODE=off → reranked devolve só dedup, sem cross-encoder. E adversariais off-domain (score 0.18–0.26) recebem 8 chunks de copy mesmo com sinal limpo para abster. Fix: mode=llm default + confidence-floor 0.32 + web-fallback.

✓ fail-safe do rerank funciona

A03 caiu em error_fallback / parse_failed e degradou para ordem baseline sem lançar exceção. Contrato "never raise" confirmado. Qualidade, não bug.

✓ disambiguation win — G09

"níveis de consciência" → naive trouxe wesley-cleam ×8 (Schwartz ausente); reranked pôs eugene-schwartz #1. É por isso que hit@8 sobe apesar do MRR estrito cair.

Por caso (16 âncoras)

idtiponaivererankedvencedor
A01abstentionabstain ✅ (0.18)abstain ✅ (0.18)=
A02abstentionabstain ✅ (0.24)abstain ✅ (0.22)=
A03abstentionabstain ✅ (0.25)abstain ✅ (0.25)=
A04abstentionabstain ✅ (0.26)abstain ✅ (0.25)=
G01normalhit ✅ · mrr 0.33 · uniq 0.38hit ✅ · mrr 0.20 · uniq 1.00rerank dedup
G02normalhit ✅ · mrr 1.00 · uniq 0.12hit ✅ · mrr 0.20 · uniq 1.00rerank dedup
G03normalhit ✅ · mrr 1.00 · uniq 0.38hit ✅ · mrr 0.17 · uniq 1.00rerank dedup
G04normalhit ✅ · mrr 1.00 · uniq 0.12hit ✅ · mrr 0.17 · uniq 1.00rerank dedup
G05normalhit ❌ · mrr 0.00 · uniq 0.38hit ❌ · mrr 0.00 · uniq 1.00rerank dedup
G06normalhit ✅ · mrr 1.00 · uniq 0.25hit ✅ · mrr 1.00 · uniq 1.00rerank dedup
G07normalhit ✅ · mrr 0.12 · uniq 0.38hit ✅ · mrr 0.12 · uniq 1.00rerank dedup
G08normalhit ❌ · mrr 0.00 · uniq 0.62hit ❌ · mrr 0.00 · uniq 1.00rerank dedup
G09disambiguationhit ❌ · mrr 0.00 · uniq 0.12hit ✅ · mrr 1.00 · uniq 1.00rerank↑
G10disambiguationhit ❌ · mrr 0.00 · uniq 0.38hit ❌ · mrr 0.00 · uniq 1.00rerank dedup
G11disambiguationhit ❌ · mrr 0.00 · uniq 0.12hit ✅ · mrr 0.50 · uniq 1.00rerank↑
G12disambiguationhit ✅ · mrr 1.00 · uniq 0.38hit ✅ · mrr 1.00 · uniq 1.00rerank dedup
⚠ MRR/NDCG conflito: known-item binário penaliza o rerank por remover duplicatas que inflavam o rank-1 do naive (Pitfall 10 da skill de rerank). hit@8 é a métrica apples-to-apples. Ver FINDINGS.md → Nota Metodológica. · 38 casos tier=ext escritos, pendentes de sweep no host.