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