Compito
📝 **Domanda:** **Scrivi la funzione** \`retrieval_cost(strategy, total_docs)\` che restituisce \`(cost_usd, latency_ms)\` per due strategie, dati questi costi unitari:
- **Scansione BM25/vettoriale**: \`$0,00001\` per documento valutato, \`1ms\` per documento
- **Riclassifica (codificatore incrociato)**: \`$0,001\` per coppia (query, documento), \`50ms\` per coppia
Due strategie:
- \`"riclassifica solo"\`: riclassifica OGNI documento nel corpus
- \`"a due fasi"\`: BM25 esegue la scansione di tutti i documenti, quindi riclassifica i primi **50** candidati
Costo arrotondato a 4 decimali. Quindi stampa il registro con 100, 10k e 1 milione di documenti:
\`\`\`
100 documenti | solo riclassificazione $ 0,1000 5000ms | a due stadi $ 0,0510 2600ms
10000 documenti | solo riclassificazione $ 10.0000 500000ms | a due stadi $ 0,1500 12500ms
1000000 documenti | solo riclassificazione $1000.0000 50000000ms | a due stadi $ 10,0500 1002500 ms
\`\`\`
Con 1 milione di documenti, il solo riclassificazione costerebbe **$ 1.000** e richiederebbe **14 ore** per query. La modalità in due fasi ti porta a ~$10 e 17 minuti – e il miglioramento della qualità è paragonabile perché BM25 ha già pre-filtrato la spazzatura ovvia. Questa lacuna è il motivo per cui ogni motore di ricerca di produzione utilizza il funnel.
📋 Scegli la risposta giusta.
💡 **Suggerimento:** Rileggi la teoria sopra se non sei sicuro.