Model evaluation — как системно оценивать LLM, RAG и агентов

Model evaluation — это системный процесс измерения качества языковых моделей (LLM), пайплайнов с RAG, а также инструментальных агентов. Цель — сравнивать модели и конфигурации, ловить регрессии, соблюсти безопасность и SLO по латентности/стоимости.

Model evaluation — как системно оценивать LLM, RAG и агентов

Связанные страницы: Evals (база), Retriever, Vector index, Контекстное окно, KV cache, Prefill cache, Top-k, Top-p, Prompt injection, Prompt leakage, Model poisoning, Fine-tuning.

Model evaluation (Зачем нужна оценка моделей LLM/RAG/агентов)

  • Продуктовая уверенность. Перед релизом надо знать: стало ли лучше по ключевым сценариям.
  • Сравнимость. Общие наборы и единая методика → честное A/B.
  • Безопасность. Устойчивость к инъекциям/утечкам и отсутствию токс-контента так же важны, как «красивый текст».
  • Экономика. Качество ≠ единственный критерий; считаем p95, tokens/s, стоимость ответа.

Многоуровневый взгляд на пайплайн

Уровень Что проверяем Типовые метрики
Запрос → ретривер полнота извлечения кандидатов Recall@k, Precision@k, MRR/NDCG, Dup-rate
Ретривер → LLM (reader) опора на источники Faithfulness, Citation-precision/recall, Context-usage
Генерация (формат/стиль) соответствие схеме/интенту EM, F1, JSON-валидность, структурные проверки
Код/формальные задачи исполняемость/точность pass@k, unit-tests
Математика/логика корректность рассуждений EM, пошаговые чек-пойнты
Инструменты/агент корректность и безопасность действий Tool-success, constraint violations
Безопасность устойчивость к атакам/утечкам ASR (инъекции/jailbreak), PLR (утечки промпта)
Производительность скорость/стоимость/ресурсы p50/p95/p99, tokens/s, cost/answer, KV-footprint

Подробные определения см. на странице Evals.

Дизайн эксперимента

Принцип: меняем один фактор за раз (модель/температура/top-p/шаблон), фиксируем датасет и судей.

  1. Гипотеза и целевая метрика (например: «Faithfulness ≥ 0,9 при неизменном p95»).
  2. Контроль и вариант: baseline vs candidate, одинаковые ограничения по длине/форматам.
  3. Сид-стабилизация: несколько прогонов при стохастическом декоде.
  4. Размер эффекта и CI: бутстрэп/перестановочные тесты по примерам, отчёты mean±CI.

Наборы данных (golden и служебные)

Golden-set — вручную размеченные *вопрос → эталон* (+ источники/обоснования для RAG).

  • 200–1000 примеров на сценарий — стартовый объём; расширяем со временем.
  • Баланс доменов/языков/форматов; явные negative-cases («нет ответа», конфликт источников).
  • Версионирование: dataset_vN; история правок и «замороженное ядро» для регрессов.

Служебные наборы:

  • Red-team: prompt-инъекции (прямые/косвенные), jailbreak, RAG-инъекции.
  • Leakage: кейсы на раскрытие системного промпта/канареек.
  • Производительность: реальные длинные промпты для замера p95/tokens/s и KV-памяти.

Метрики по сценариям

Текстовые ответы: EM/F1 (факты), ROUGE/BLEU (ограниченно), семантическая близость. RAG-специфика: Faithfulness, Citation-precision/recall, Context-usage. Код: pass@1/5, запуск тестов/линтеров. Ретривер: Recall@k, Precision@k, MRR/NDCG, Dup-rate (эффект MMR). Безопасность: ASR (доля успешных атак), PLR (утечки), токсичность/предвзятость. Производительность/стоимость: p50/p95/p99, throughput, tokens/out, $/answer, размер KV-кэша.

Развернуто — на Evals.

LLM-as-judge (как использовать безопасно)

Когда нужен: большие объёмы, оценка faithfulness/стиля/обоснований.

Правила:

  • Чёткая роль судьи и критерии; судья видит инструкцию, вопрос, ответ, источники и возвращает структурный вердикт (JSON).
  • Blind-оценка: без указания, кто вариант A/B.
  • Анти-утечка: судье не передавать системные промпты продукта (снижаем PLR).
  • Калибровка на подмножестве, размеченном людьми; учёт разногласий (IAA).
  • Повторные прогоны (разные сиды/формулировки), усреднение.

Оценка RAG целиком

  • Ретривер: валидируйте чанкинг (400–1200 токенов, перекрытие 50–150), фильтры по метаданным, гибрид keyword+dense; меряйте Recall@k и MMR-gain (см. retriever, vector index).
  • Reader: заставляйте ссылаться на источники; штраф за ответы без цитат при наличии релевантов.
  • Faithfulness: LLM-судья по правилу «каждое утверждение должно подтверждаться контекстом».
  • Переранжирование: кросс-энкодер на топ-L кандидатов (L=50–200) → итоговые 5–10 чанков.
  • Хвосты производительности: p95 на длинных промптах; влияние prefill-кэша и политики KV.

Безопасность как часть evaluation

  • Prompt-инъекции: прямые/косвенные, RAG-инъекции — метрика ASR (см. prompt injection).
  • Утечки промптов: кейсы на самораскрытие, side-channel через инструменты/APM — PLR (см. prompt leakage).
  • Supply-chain: адаптеры/веса от третьих лиц → сканы и тесты на триггерные фразы (см. model poisoning).
  • Политики вывода: фильтры PII/токсичности, проверка форматов.

Производительность и стоимость

Измеряйте отдельно префилл и декод (см. model serving):

  • p50/p95/p99, стабильность при нагрузке; tokens/s на пользователя/GPU.
  • Память под KV и эффект beam-поиска; выгода от prefill-кэша.
  • Cost/answer: $/час × доля часу на ответ ÷ ответы.

Оптимизации: непрерывный батчинг, Paged KV, FlashAttention, квантование весов и KV; аккуратный спекулятивный декод.

Процесс и автоматизация

  • Pre-commit evals: быстрый сигнальный набор на каждую правку промпта/конфига.
  • Nightly/weekly: полный регресс-пакет (качество + безопасность + производительность).
  • Release-gate: пороги по ключевым KPI (например, Faithfulness ≥ 0,9; ASR ≤ 0,05; p95 ≤ 2,5 c; без роста $/answer).
  • Observability: онлайн-метрики (feedback-rate, отказы по guardrails), периодические оффлайн-перезапуски.
  • Артефакты: храните логи запусков, сиды, версии датасетов/моделей/шаблонов.

Практические рецепты

1) RAG-QA по документам

  1. Ретривер: Recall@50 ≥ 0,9, гибрид с keyword, MMR включён.
  2. Reader: обязательные цитаты, проверка faithfulness судьёй.
  3. Ошибки: дубли/«вода» в индексах, смешение эмбеддингов без переиндексации.

2) Суммаризация

  1. Ручная шкала 1–5 (адекватность/сжатие) + LLM-судья на консистентность фактов.
  2. Спец-тесты на сохранение чисел/дат/имён.

3) Код

  1. pass@1/5 на golden-наборе, sandbox для запуска.
  2. Для JSON/форматов — строгие схемы; понижаем «смелость» (top-k, top-p).

4) Диалоговый ассистент

  1. «Решён/частично/не решён», токсичность/предвзятость, стабильность форматов.
  2. Проверка «честного незнания» (negative-cases).

5) Безопасность

  1. Набор инъекций (прямые/косвенные/RAG), jailbreak → ASR.
  2. Prompt-leakage-сценарии → PLR.
  3. LoRA/дообучение — триггер-наборы после подключения адаптеров.

Частые ошибки и анти-паттерны

  • Переобучение на тесте: постоянные правки под конкретный набор → «бумажный» рост. Решение: ротация/расширение golden-сетов, слепые проверки.
  • Одна метрика на всё: например, только ROUGE. Решение: набор метрик по уровням пайплайна.
  • Игнор p95/p99: средняя латентность «хорошая», хвосты убивают UX. Разделяйте префилл/декод.
  • Смешение эмбеддингов без переиндексации: падение Recall@k.
  • Отсутствие negative-cases: модель «придумывает», где надо честно сказать «не знаю».
  • LLM-судья без калибровки: ложные победы/поражения; делайте human-audit поднабора.
  • Сырые промпты в логах: растёт PLR. Маскируйте.

Мини-чек-лист внедрения

  1. Зафиксировать цели/метрики по сценариям (качество, безопасность, p95, стоимость).
  2. Собрать и версионировать golden-наборы + red-team/ leakage/ perf-сценарии.
  3. Настроить LLM-as-judge (слепо, без системных промптов).
  4. Автоматизировать nightly и release-gate; хранить артефакты и сиды.
  5. Добавить safety-evals (инъекции/утечки) и мониторинг в проде.
  6. Регулярно «освежать» наборы, чтобы не «подгонять» продукт под тест.

FAQ

Почему EM/ROUGE недостаточно для RAG?

Они ловят поверхностные совпадения текста. Для RAG важнее faithfulness и цитирование источников.

Можно ли доверять LLM-судье?

Да, если он калиброван, работает слепо по чётким критериям и периодически сверяется с людьми.

Как выбрать k в Recall@k?

Отталкивайтесь от плотности фактов и окна контекста: часто k=20–50 на ретривере + переранжирование, выдача 5–10 финальных чанков.

Поможет ли снижение температуры/top-p против галлюцинаций?

Косвенно. Корень — слабый ретрив/контекст и отсутствие контроля faithfulness.

Как учитывать стоимость?

В отчётах всегда держите p95, tokens/s, $/answer и KV-память рядом с качественными метриками.

Мини-глоссарий

  • Golden-set — вручную размеченный эталонный набор.
  • Faithfulness — соответствие ответа источникам.
  • Citation-precision/recall — корректность и полнота ссылок на источники.
  • pass@k — доля задач, решённых за k попыток.
  • ASR/PLR — успешность атак и утечек.
  • p95/p99 — пиковые задержки.
  • LLM-as-judge — автоматизированный судья-модель по чётким правилам.

См. также

Task Runner