Вступить в клуб →
лёгкаяpythonNLP, эмбеддинги, LLM и RAG

Поиск k ближайших фрагментов по косинусной близости

Напишите top_k(query, docs, k).

  • query — вектор (список чисел), docs — словарь id → вектор той же размерности.
  • Косинусная близость: (a·b) / (|a|·|b|). Документы с нулевым вектором пропускайте.
  • Верните список до k пар (id, близость) по убыванию близости; при равенстве — по возрастанию id. Близость округлите до 4 знаков.
  • Если вектор запроса нулевой — верните пустой список.

заготовка решения

import math


def top_k(query, docs, k):
    # ваш код
    return None

🔒 Проверка ответа — для участников клуба

  • Автотесты прямо в браузере
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела