Evals — как оценивать качество LLM и агентных систем (метрики, бенчмарки, методики)

Evals — собирательное название практик и инструментов, с помощью которых измеряют качество больших языковых моделей (LLM) и агентных систем. В эту зону входят: офлайн-бенчмарки, автоматические метрики, «LLM-as-a-Judge» (модель-судья), A/B-тесты с людьми, а также доменные проверки (код, поиск фактов, безопасность, длинный контекст, RAG и др.). Корректные evals позволяют выбирать модель, настраивать промпты, контролировать регрессии после обновлений и доказывать прогресс.

Evals — как оценивать качество LLM и агентных систем (метрики, бенчмарки, методики)

Связанные страницы: AI: общий обзор, Контекстное окно, RAG: извлечение и дополнение, LoRA (дообучение), Guardrails (защита и политика), AI Security Hub.

Зачем нужны Evals (оценка моделей и агентов)

  • Сравнение моделей и настроек. Выбрать «лучший» промпт/temperature/top_p или базовую модель под задачу.
  • Детекция регрессий. После обновления модели/политик/датасетов.
  • Контроль качества в проде. Мониторинг метрик и алёрты по падению качества.
  • Доказательство соответствия. Для заказчиков, комплаенса, сертификаций и аудиторов.
  • Оптимизация затрат. Понять, когда «дешевле/быстрее» не разрушает качество.

Типы задач и подходящие метрики

Класс задачи Примеры Типичные метрики/оценки
Точное QA / извлечение фактов «Какой курс…», «Кто автор…» EM (Exact Match), F1 (token/char), строгое соответствие цитате, атрибуция источника
Открытое QA / генерация ответы эссе-стиля, объяснения LLM-as-a-Judge (pairwise win rate), человеческие A/B, рубрикаторы (Likert)
Математика/логика GSM8K, MATH, арифметика Доля правильных решений, шаг-за-шагом (chain-of-thought) валидатор
Код HumanEval/MBPP/интерн. задачи pass@1 / pass@k (юнит-тесты), компиляция, покрытие тестами
Перевод/суммаризация ru↔en, краткие выжимки BLEU/chrF/COMET (перевод), ROUGE/precision-recall (извлеч.), LLM-judge
Длинный контекст большие PDF, стенограммы «Needle in a haystack», Long-bench-стили, позиционные тесты, доля найденных иголок
RAG/поиск ассистент по базе статей Answerable-rate, faithfulness/groundedness, citation-precision/recall
Безопасность/политики jailbreak, токсичность Процент блокировок/ложных блоков, токс-скоры, jailbreak-проходимость
Агенты/оркестрация многошаговые задачи Task-success-rate, время/шаги, стоимость, доля ретраев, надёжность инструментов

Бенчмарки (ориентиры)

  • Общее знание/много-доменность: MMLU, BIG-bench/BBH.
  • Математика и логика: GSM8K (арифметика естественным языком), MATH, SAT-style/Logic.
  • Кодирование: HumanEval, MBPP, Codeforces-подборки, внутренние задачники с юнит-тестами.
  • Длинный контекст: наборы в стиле LongBench, «needle»-тесты с контролем позиции факта.
  • RAG: датасеты Q/A с обязательными цитатами; практично формировать собственные золотые по вашей базе знаний.
  • Безопасность и доверие: коллекции jailbreak-подсказок, токсичность/предвзятость, политические и медицинские сценарии (см. guardrails).
Важно: публичные бенчмарки полезны для ориентира, но реальные продукты почти всегда требуют собственных evals — из ваших документов, логов и кейсов.

LLM-as-a-Judge (модель как судья)

Когда нет «единственно правильного» ответа (эссе, резюме, абстракция), используют модель-судью. Практика:

  • Оценивают парами (A vs B) с гибким рубрикатором (стиль, факты, полнота, вред).
  • Считают win rate (сколько раз вариант B лучше A) и доверительные интервалы.
  • Для снижения смещений: фиксируют системный промпт судьи, порядок ответов, обнуляют подсказки брендов, добавляют self-consistency (несколько прогонов судьи).

Комбинация LLM-judge + выборочная проверка людьми даёт на практике хорошую скорость и точность.

Человеческая оценка (Human eval)

  • A/B-тесты и слепые сравнения. Респонденты видят только варианты и критерии; порядок ответов перемешивается.
  • Лайкерт-шкалы под рубрики: фактичность, полезность, лаконичность, ясность.
  • Калибровка асессоров и контроль межсоглашения (κ-коэффициент).
  • Семплирование задач из прод-логов (репрезентативность) и стратификация по темам/языкам.

RAG-evals: что важно мерить

В системах RAG модель отвечает только на основе найденных источников.

  • Retrieval Precision/Recall@k. Доля релевантных фрагментов среди вытянутых и доля найденных релевантных в целом.
  • Answerable Rate. Доля вопросов, где в контексте есть достаточный факт.
  • Faithfulness / Groundedness. Ответ опирается на контекст? Проверяют LLM-судьёй и/или строгими сопоставлениями с цитатой.
  • Citation Precision. Корректность ссылок (не «галлюцинированные»).
  • Latency и стоимость на запрос, стабильность индекса.

Хорошая практика — собирать golden-set (вопрос → кусок источника → ожидаемый ответ/цитата) из вашей базы.

Длинный контекст: отдельные evals

См. контекстное окно. Проверяют:

  • Позиционную устойчивость. Вставляют «иголку» в начало/середину/конец и проверяют узнавание.
  • Чувствительность к дубликатам/воде. Насколько шум «размывает» ответ.
  • Стабильность при усечении истории. Скользящее окно, суммаризация старых реплик.

Код и pass@k

В кодовых задачах качество считают юнит-тестами:

  • pass@1 — прошёл ли образец №1;
  • pass@k — прошёл ли хоть один из k сэмплов (важно фиксировать temperature/seed).
  • Дополнительно: компилируемость, покрытие тестами, время выполнения.

Метрики под рукой

Метрика Что значит Где уместна
EM (Exact Match) Строгое совпадение строки/ответа Короткие факты/идентификаторы
F1 (token/char) Гармоническая средняя precision/recall по токенам Извлекаемые ответы, неточные формулировки
BLEU/chrF/COMET Точность n-грамм/семантики Перевод
ROUGE Перекрытие n-грамм Суммаризация (извлеч.)
Win Rate (Pairwise) Доля побед варианта B над A Сложные генерации (эссе, объяснения)
Faithfulness/Groundedness Соответствие контексту/источникам RAG, долгая цитируемая генерация
Toxicity/Harms Токсичность/предвзятость Безопасность/политики
pass@k Доля успешных сэмплов среди k Код/инструменты
Latency/Cost Время/стоимость запроса Прод-мониторинг

Репрезентативные наборы (goldens)

Сердце evals — репрезентативные данные. Рекомендации:

  • Брать реальные запросы из логов (с обезличиванием).
  • Поддерживать стратификацию: темы, языки (ru/en), длина, чувствительность.
  • Вести версионирование (v1, v2…), хранить «замороженные» копии.
  • Сборка ответов-эталонов: источники, цитаты, рубрики оценки, негативные примеры.

Воспроизводимость и честность эксперимента

  • Фиксируйте параметры: модель/версию, системный промпт, temperature/top_p, длину ответа, seed, число сэмплов.
  • Изоляция теста: избегайте подгона промптов «под набор».
  • Анти-утечки: проверка контаминации (чтобы тесты не попали в обучение/дообучение).
  • Бой с «length bias»: нормализуйте длину или штрафуйте за пустые/слишком длинные ответы.
  • Статистика: доверительные интервалы, бутстрэп, значимость различий.

LLM-judge: приёмы и гигиена

  • Используйте чёткий рубрикатор (factuality, relevance, style, safety).
  • Скройте подсказки брендов и порядок ответов; оценивайте вслепую.
  • Прогоняйте несколько судей и усредняйте; добавляйте self-consistency.
  • Валидируйте на ручной подвыборке (sanity-check).

Как строить eval-контур в компании

  • Быстрый слой (PR-checks). Малый набор 50–200 задач, гоняется на каждый релиз промпта/правил.
  • Глубокий слой. 1–5 тыс. примеров по доменам, nightly/weekly.
  • Прод-мониторинг. Онлайновые сигналы: отказ-rate, жалобы, репорты «не нашёл/неправильно».
  • Регистры версий. Кто и когда менял промпт/модель/правила; связка с метриками.

Инструменты и фреймворки

Класс Примеры/идеи использования
Библиотеки бенчмарков lm-eval-harness-подобные наборы для запусков MMLU/ARC/HELLASWAG и др.
Оценка кодовых задач Изолированные раннеры тестов, песочницы, подсчёт pass@k
LLM-as-a-Judge Обвязка для pairwise-оценок, контроль подсказок/порядка
RAG-оценка Скрипты для precision/recall@k, faithfulness, цитируемость
Дашборды Аггрегация офлайн-метрик и онлайн-сигналов по релизам

Типичные ошибки и как их избегать

Ошибка Почему плохо Что делать
«Гоним только публичные бенчи» Не отражают ваши задачи Добавляйте собственные наборы из логов
Переподгон промпта под тест Псевдопрогресс, регресс в проде Держите замороженный golden, проверяйте переносимость
Оценка длиной/красотой Побеждает «словесный» ответ Рубрикатор, LLM-judge, факты/цитаты, penalize verbosity
Без контроля параметров Нельзя повторить Логи эксперимента, seed/temperature/top_p фиксировать
Нет мульти-языка Падает качество на ru Стратифицируйте наборы по языкам
Игнор RAG-контекста «Галлюцинации» и ложные цитаты Мерьте faithfulness и citation-precision

Мини-плейбук для продуктовой команды

  1. Сформируйте golden-набор (минимум 300–500 задач) и разметьте рубрики.
  2. Введите PR-evals на каждый релиз промпта/правил/модели.
  3. Еженедельно гоняйте «глубокий» слой; храните метрики в едином дашборде.
  4. Для RAG — контролируйте retrieval@k и faithfulness.
  5. Для кода — pass@k с воспроизводимыми тестами.
  6. Проверяйте мульти-язык и длинный контекст отдельно.
  7. Смешивайте LLM-judge и маленькую долю ручной проверки.

FAQ

Что выбрать: автоматические метрики или LLM-as-a-Judge?

Комбинируйте. Для коротких фактов и кода — EM/F1/pass@k. Для открытой генерации — pairwise win rate c LLM-judge и выборочной ручной проверкой.

Почему результаты на публичных бенчах «не переносятся» в мой продукт?

Потому что данные, язык, стиль и ограничения иные. Нужны доменные evals из ваших запросов/документов.

Как оценивать «правдивость» ответа при RAG?

Используйте связку: faithfulness (LLM-judge с жёсткими указаниями «ссылаться только на контекст») + citation-precision (проверка ссылок/цитат).

Как избежать утечек тестов в обучение?

Версионируйте наборы, храните «закрытые» золотые, проверяйте поставщиков дообучения, мониторьте подозрительно «идеальные» результаты.

См. также

Task Runner