Если вы когда-нибудь грузили в LLM список и просили выбрать лучшее или отсортировать — вы, скорее всего, совершали ошибку. Я это проверил на 164 постах своего канала.
Хотел понять, можно ли предсказать, какие посты будут репостить. И заодно — не обманываю ли я себя насчёт «лучших» постов канала.
Разработчик Claude Code Thariq Shihipar написал статью про ранжирование через LLM. Его тезис: модели плохо дают абсолютные оценки, лучше относительные сравнения. Я был скептичен — но он оказался прав.
🎯 4 метода
🔸 Bulk — все элементы в один запрос. Дёшево, но LLM внимательнее читает начало списка (positional bias). Предсказания стягиваются к началу. Вывод: не сгружайте модели большие списки с просьбой отсортировать.
🔸 Score — оценка каждого элемента 1-100. O(n) вызовов, зато есть объяснение для каждого. Причём ризонинг до или после оценки заметно не влияет — по крайней мере на предикты. А вот для минус-фраз у нас «ризонинг до» показывает прям лучшую точность. Но там классификация, а не превращение в оценку.
🔸 TrueSkill batch — батчи по N элементов, результаты обновляют глобальный рейтинг. Масштабируется на тысячи. Конкретно в моем эксперименте и шеринг лучше предсказывает и посты интереснее группирует.
🔸 TrueSkill Pairwise (это частный случай третьего) — парные сравнения «A лучше B?». Теоретически чище, практически — накапливает шум.
🎮 Как работает TrueSkill
Алгоритм из Xbox Live для матчмейкинга. У каждого элемента два числа:
— μ (mu) — средний рейтинг
— σ (sigma) — неопределённость
Допустим, LLM получает батч из 3 постов и сортирует их: A > B > C.
После этого «матча»:
— Пост A: μ 25→28, σ 8→6 (победил, уверенность выросла)
— Пост C: μ 25→22, σ 8→6 (проиграл, но уверенность тоже выросла)
Через 10 матчей у поста A: μ=35, σ=2 — система уверена, что он в топе.
Финальная сортировка по μ − 3σ. Элемент с высоким рейтингом, но малым числом сравнений не попадёт в топ — нужна уверенность.
📐 Почему батчи эффективнее пар
Батчи по 10: один вызов API → информация о 10 элементах. Для 164 постов: ~80 вызовов.
Пары: один вызов → информация о 2 элементах. Для 164 постов: ~1230 вызовов.
Батчи дают в 5 раз больше информации на токен. Пары теоретически чище (нет positional bias), но тысяча решений накапливает случайный шум.
🔧 Как улучшить батчи
🔹 Rating-based grouping — сравнивать элементы с похожим μ, чтобы уточнить границы
🔹 High uncertainty first — приоритет элементам с высокой σ
🔹 Bridge comparisons — иногда смешивать топов и аутсайдеров для проверки
🧪 Эксперимент: предсказание репостов
Дал LLM посты без статистики, попросил предсказать виральность. Сравнил с реальными репостами. Результат на скриншоте 🖼️.
Для контекста: прогноз погоды коррелирует с реальностью ~0.9, рекомендации Netflix где-то ~0.3. LLM предсказывает виральность лучше Netflix, но хуже погоды.
⭐️ Понятно, что пример с предстказанием репостов можно назвать притянутым за уши, а результаты скоринга достаточно случайны. Но трускил реально хорошие подборки выдает, сможете посмотреть и сравнить на демосайте.
⚖️ Когда какой метод
TrueSkill batch — лучший выбор для большинства задач. От 100 элементов, особенно если данные добавляются постоянно.
Score — когда нужны объяснения для каждого элемента. Приоритизация фичей, где важно понять «почему».
Bulk — только быстрая разведка на маленьких данных. Для продакшена не годится.
Главное открытие: мои интуитивные фавориты оказались в середине рейтинга. LLM видит иначе — и, судя по корреляции с репостами, видит точнее.
🔗 Демо и код
Решил дать LLM отсортировать посты как по интересу для разработчиков, так и для продукт-менеджеров или владельцев бизнесов, как мне кажется TrueSkill действительно делает хорошие подборки.
🚀 Единственный алгоритм, который создал нормальный лидерборд постов для домохозяек — Trueskill. Посмотрите сами.
Дашборд для сравнения методов (модель gpt-4.1-mini): https://artwist-polyakov.github.io/sorting-demo/
Статья Thariq: https://www.thariq.io/blog/sorting/
----
Поляков считает — AI, код и кейсы


