Код Middle LLM в проде обновлено

Поиск в семантическом кеше

Условие

Напишите cache_lookup(query_vec, user_id, entries, threshold). entries: список словарей {"vec": [...], "user_id": str или None, "answer": str}; user_id = None означает общий ответ, пригодный всем. Подходят записи, общие или с тем же user_id, у которых косинусное сходство с query_vec не меньше threshold. Верните ответ записи с максимальным сходством (при равенстве более раннюю), или None, если подходящих нет.

Примеры

cache_lookup([1, 0], "u1", [{"vec":[1,0],"user_id":null,"answer":"общий"}], 0.9) // "общий"
cache_lookup([1, 0], "u1", [{"vec":[0,1],"user_id":null,"answer":"мимо"}], 0.9) // null
cache_lookup([1, 0], "u1", [{"vec":[1,0],"user_id":"u2","answer":"чужой"}], 0.5) // null

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.