Задача
📝 **Въпрос:** **Напишете функцията** \`rrf(rankings, k=60)\` — Обединяване на реципрочни рангове. Взема списък с класации (всяко класиране е подреден списък с идентификатори на документи от най-добрите към най-лошите, от един ретривър) и връща слятото най-високо K като списък с идентификатори на документи, сортирани по общия RRF резултат, най-високият първи.
Формула за един документ в едно класиране на нулева индексирана позиция \`ранг\`:
\`\`\`
резултат = 1 / (k + ранг)
\`\`\`
Сума на резултатите във всички класации за всеки документ; сортиране на документи по общ резултат в низходящ ред.
След това обединете вектор и ретривър BM25 за заявка "SKU-4471":
\`\`\`
вектор = ["doc-A", "doc-B", "doc-C", "doc-D"] # вектор смята, че A е най-доброто
bm25 = ["doc-D", "doc-A", "doc-E", "doc-F"] # bm25 поставя D първо (съвпада с SKU)
\`\`\`
Отпечатайте смесените топ-4 като списък на Python:
\`\`\`
['doc-A', 'doc-D', 'doc-B', 'doc-C']
\`\`\`
A се появява и в двата списъка на високи рангове → печели. D беше #1 в BM25 → побеждава B и C, въпреки че векторът не го предпочиташе. Това е RRF: документи, класирани високо от ВСЯКА повърхност за ретривър.
📋 Изберете правилния отговор.
💡 **Съвет:** Прочетете отново теорията по-горе, ако не сте сигурни.