Без оценки нет прогресса
LLM-системы меняются от каждой правки промпта, модели или поиска. Без измерения команда спорит «стало лучше или хуже» по паре примеров, а регрессы в редких сценариях замечают пользователи. Оценка — такая же инфраструктура, как тесты в CI.
Набор примеров
Основа — набор реальных запросов с ожидаемым поведением: правильный ответ, нужные факты, требуемый инструмент или отказ. В набор включают частые и редкие сценарии, вопросы без ответа, опечатки и попытки выйти за рамки. У каждого примера — метка сценария, чтобы смотреть качество по сценариям, а не одну среднюю. Начать можно с 30–50 примеров; каждая найденная ошибка становится новым примером.
Проверки кодом
Многое проверяется без модели: валиден ли JSON и соответствует ли схеме, есть ли в ответе нужный факт или число, нет ли запрещённого (телефоны, обещания скидок), вызван ли нужный инструмент с правильными аргументами, ведут ли ссылки на переданные источники. Такие проверки дешёвые, быстрые и детерминированные — их ставят первыми.
LLM как судья
Для свободного текста, где точного ответа нет, сильная модель оценивает ответ по рубрике: верность фактам из контекста, полнота, формат. Бинарные критерии надёжнее шкалы 1–10. Судья ошибается и имеет перекосы — к позиции ответа в паре, к длине, к своему стилю, — поэтому его калибруют: размечают выборку людьми и меряют согласие.
Качество поиска
Для RAG отдельно мерят поиск: recall@k — доля вопросов, где нужный фрагмент попал в первые k (не нашли — модель не ответит), MRR — насколько высоко стоит первый правильный фрагмент. Каждое изменение разбиения, модели эмбеддингов или реранкера сравнивают по этим числам.
Итог
- Набор реальных примеров по сценариям, пополняемый ошибками.
- Сначала проверки кодом, судья — для смысла.
- Судью калибруют по разметке людей.
- Поиск оценивают отдельно: recall@k и MRR.