Tarefa
📝 **Pergunta:** **Escreva a função** \`retrieval_cost(strategy, total_docs)\` que retorna \`(cost_usd, latency_ms)\` para duas estratégias, dados estes custos unitários:
- **BM25/varredura vetorial** — \`$0,00001\` por documento pontuado, \`1ms\` por documento
- **Reclassificar (codificador cruzado)** — \`$0,001\` por par (consulta, documento), \`50ms\` por par
Duas estratégias:
- \`"rerank-only"\` — reclassifica CADA documento no corpus
- \`"two-stage"\` — BM25 verifica todos os documentos e reclassifica os **50** principais candidatos
Arredonde o custo para 4 casas decimais. Em seguida, imprima o livro-razão em 100, 10k e 1 milhão de documentos:
\`\`\`
100 documentos | apenas reclassificação $ 0,1000 5000ms | dois estágios $ 0,0510 2600ms
10.000 documentos | apenas reclassificação $ 10.0000 500000ms | dois estágios $ 0,1500 12500ms
1.000.000 documentos | apenas reclassificação $ 1.000,0000 5.000.000 ms | dois estágios $ 10,0500 1002500 ms
\`\`\`
Em 1 milhão de documentos, apenas a reclassificação custaria **US$ 1.000** e levaria **14 horas** por consulta. Dois estágios levam você a aproximadamente US$ 10 e 17 minutos – e o aumento de qualidade é comparável porque o BM25 já pré-filtrou o lixo óbvio. Essa lacuna é a razão pela qual todo mecanismo de pesquisa de produção usa o funil.
📋 Escolha a resposta certa.
💡 **Dica:** Releia a teoria acima se não tiver certeza.