Задача
📝 **Въпрос:** **Напишете функцията** \`retrieval_cost(strategy, total_docs)\`, която връща \`(cost_usd, latency_ms)\` за две стратегии, предвид тези единични разходи:
- **BM25/векторно сканиране** — \`$0,00001\` за оценен документ, \`1ms\` за документ
- **Прекласиране (кръстосано кодиране)** — \`$0,001\` на двойка (заявка, документ), \`50ms\` на двойка
Две стратегии:
- \`"rerank-only"\` — прекласиране на ВСЕКИ документ в корпуса
- \`"двустепенен"\` — BM25 сканира всички документи, след което прекласира най-добрите **50** кандидати
Закръглете цената до 4 знака след десетичната запетая. След това отпечатайте счетоводната книга на 100, 10k и 1M документа:
\`\`\`
100 документа | само прекласиране $ 0,1000 5000ms | двустепенна $ 0.0510 2600ms
10 000 документа | само прекласиране $ 10.0000 500000ms | двустепенна $ 0.1500 12500ms
1000000 документа | само прекласиране $1000,0000 50000000ms | двустепенен $10,0500 1002500ms
\`\`\`
При 1 милион документи само прекласирането ще струва **$1000** и ще отнеме **14 часа** на заявка. Двустепенният ви отвежда до ~$10 и 17 минути — и повишаването на качеството е сравнимо, защото BM25 вече е филтрирал предварително очевидните боклуци. Тази празнина е причината всяка производствена търсачка да използва фунията.
📋 Изберете правилния отговор.
💡 **Съвет:** Прочетете отново теорията по-горе, ако не сте сигурни.