Перейти к основному содержимому
🔒 Режим превью. Первые 15 уроков Foundations — бесплатные; этот — Pro. Запусти 7-дневный trial чтобы открыть редактор, AI-подсказки и остальной курс. Нужна карта, отмена в Dashboard в любой момент.Начать 7-дневный trial →
← КурсыAI Engineering with PythonМодуль 3 · RAG (генерация с расширенным поиском)Гибридный поиск: БМ25 + векторwrite37 / 105
+100 XP
Задание
📝 **Вопрос:** **Напишите функцию** \`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: документы высоко оцениваются ЛЮБОЙ поверхностью ретривера. 📋Выберите правильный ответ. 💡 **Подсказка:** Если вы не уверены, перечитайте приведенную выше теорию.
✏️ Пиши код здесь
🐍
Загрузка Python...
Одноразовая загрузка (~1 МБ). Далее — мгновенно.
📊 Результат
Нажмите «Запустить», чтобы увидеть результат...

💬 Обсуждение

Будьте первым — задайте вопрос или поделитесь подсказкой.
Войдите чтобы участвовать в обсуждении. Чтение бесплатно.
Загрузка обсуждения…