Завдання
📝 **Питання:** **Напишіть функцію** \`retrieval_cost(strategy, total_docs)\`, яка повертає \`(cost_usd, latency_ms)\` для двох стратегій, враховуючи такі одиничні витрати:
- **BM25/векторне сканування** — \`$0,00001\` за оцінку за документ, \`1 мс\` за документ
- **Переранжування (перехресний кодувальник)** — \`$0,001\` на пару (запит, документ), \`50 мс\` на пару
Дві стратегії:
- \`"rerank-only"\` — переранжувати КОЖНИЙ документ у корпусі
- \`"двоетапний"\` — BM25 сканує всі документи, а потім змінює рейтинг **50** найпопулярніших кандидатів
Округліть вартість до 4 знаків після коми. Потім роздрукуйте книгу на 100, 10 тисяч і 1 млн документів:
\`\`\`
100 документів | лише зміна рейтингу $ 0,1000 5000 мс | двоступенева $ 0,0510 2600мс
10000 документів | лише зміна рейтингу $ 10,0000 500000 мс | двоступеневий $ 0,1500 12500мс
1000000 документів | лише зміна рейтингу $1000,0000 50000000ms | двоступеневий $10,0500 1002500мс
\`\`\`
За 1 мільйона документів лише переранжування коштуватиме **$1000** і займатиме **14 годин** на запит. Двоступеневий дає вам ~10 доларів США та 17 хвилин — і підвищення якості можна порівняти, оскільки BM25 уже попередньо відфільтрував очевидне сміття. Через цю прогалину кожна робоча пошукова система використовує воронку.
📋 Виберіть правильну відповідь.
💡 **Підказка:** Перечитайте наведену вище теорію, якщо не впевнені.