Как измерить «полезность» ответа LLM? Пусть это сделает другая LLM
Меня всегда бесила одна проблема при работе с LLM. Как оценить то, что нельзя измерить простой строкой кода?
Например, у нас есть RAG-система. Как понять, что её ответ не просто технически сгенерирован, а полезен для пользователя? Или что тон ответа — дружелюбный, а не роботизированный?
Раньше было два пути, и оба плохие:
1. Писать костыли. Пытаться ловить качество по ключевым словам, регуляркам и прочей ерунде. Хрупко, ненадёжно, долго.
2. Нанимать людей. Собирать фокус-группы, размечать данные. Дорого, медленно, не масштабируемо.
А потом я наткнулся на решение зарубежных коллег, причем достаточно простое. Концепция называется LLM-as-Judge.
Вся суть в том, чтобы для оценки ответов нашей рабочей модели (например, какой-нибудь Qwen 3b) использовать модель мощнее и умнее (GPT-4o или Claude Sonnet). Мы просто просим её выступить в роли беспристрастного судьи.
Это позволяет автоматизировать оценку качественных, субъективных метрик.
Механика выглядит так. Мы пишем специальный промпт для "судьи", который получает на вход запрос, контекст и ответ нашей модели.
Пример такого промпта:
И всё. На выходе мы получаем цифру. Не расплывчатый текст, а чёткую метрику, которую можно трекать, сравнивать и использовать для регрессионного тестирования. Стало 2.7, а после правок 4.2? Отлично, выкатываем.
Мы делегируем самую сложную когнитивную работу другой машине. А также превращаем субъективное "вроде стало лучше" в объективные цифры.
А вы уже пробовали LLM-as-Judge? С какими подводными камнями столкнулись? Расскажите в комментах.
Кратко пишу про нейросети, автоматизацию и то, как адаптироваться ко всему этому ¯\_(ツ)_/¯