Opdracht
📝 **Vraag:** **Schrijf de functie** \`retrieval_cost(strategie, total_docs)\` die \`(cost_usd, latency_ms)\` retourneert voor twee strategieën, gegeven deze eenheidskosten:
- **BM25/vectorscan** — \`$0,00001\` per gescoord document, \`1ms\` per document
- **Herschikken (cross-encoder)** — \`$0.001\` per (query, doc) paar, \`50ms\` per paar
Twee strategieën:
- \`"alleen herrangschikken"\` — herrangschik ELK document in het corpus
- \`"tweetraps'\` — BM25 scant alle documenten en herschikt vervolgens de top **50** kandidaten
Rond de kosten af op 4 decimalen. Druk vervolgens het grootboek af op 100-, 10k- en 1M-documenten:
\`\`\`
100 documenten | alleen opnieuw rangschikken $ 0,1000 5000 ms | tweetraps $ 0,0510 2600 ms
10000 documenten | alleen opnieuw rangschikken $ 10.0000 500.000 ms | tweetraps $ 0,1500 12500 ms
1000000 documenten | alleen opnieuw rangschikken $1000.0000 50000000ms | tweetraps $ 10,0500 1002500 ms
\`\`\`
Bij 1 miljoen documenten zou alleen opnieuw rangschikken **$1000** kosten en **14 uur** per zoekopdracht duren. In twee fasen kom je op ~$10 en 17 minuten – en de kwaliteitsverbetering is vergelijkbaar omdat BM25 de voor de hand liggende rommel al voorgefilterd heeft. Deze kloof is de reden waarom elke productiezoekmachine de trechter gebruikt.
📋 Kies het juiste antwoord.
💡 **Hint:** Herlees de bovenstaande theorie als je het niet zeker weet.