Model evaluation — это системный процесс измерения качества языковых моделей (LLM), пайплайнов с RAG, а также инструментальных агентов. Цель — сравнивать модели и конфигурации, ловить регрессии, соблюсти безопасность и SLO по латентности/стоимости.
Связанные страницы: 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/шаблон), фиксируем датасет и судей.
- Гипотеза и целевая метрика (например: «Faithfulness ≥ 0,9 при неизменном p95»).
- Контроль и вариант: baseline vs candidate, одинаковые ограничения по длине/форматам.
- Сид-стабилизация: несколько прогонов при стохастическом декоде.
- Размер эффекта и 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 по документам
- Ретривер: Recall@50 ≥ 0,9, гибрид с keyword, MMR включён.
- Reader: обязательные цитаты, проверка faithfulness судьёй.
- Ошибки: дубли/«вода» в индексах, смешение эмбеддингов без переиндексации.
2) Суммаризация
- Ручная шкала 1–5 (адекватность/сжатие) + LLM-судья на консистентность фактов.
- Спец-тесты на сохранение чисел/дат/имён.
3) Код
- pass@1/5 на golden-наборе, sandbox для запуска.
4) Диалоговый ассистент
- «Решён/частично/не решён», токсичность/предвзятость, стабильность форматов.
- Проверка «честного незнания» (negative-cases).
5) Безопасность
- Набор инъекций (прямые/косвенные/RAG), jailbreak → ASR.
- Prompt-leakage-сценарии → PLR.
- LoRA/дообучение — триггер-наборы после подключения адаптеров.
Частые ошибки и анти-паттерны
- Переобучение на тесте: постоянные правки под конкретный набор → «бумажный» рост. Решение: ротация/расширение golden-сетов, слепые проверки.
- Одна метрика на всё: например, только ROUGE. Решение: набор метрик по уровням пайплайна.
- Игнор p95/p99: средняя латентность «хорошая», хвосты убивают UX. Разделяйте префилл/декод.
- Смешение эмбеддингов без переиндексации: падение Recall@k.
- Отсутствие negative-cases: модель «придумывает», где надо честно сказать «не знаю».
- LLM-судья без калибровки: ложные победы/поражения; делайте human-audit поднабора.
- Сырые промпты в логах: растёт PLR. Маскируйте.
Мини-чек-лист внедрения
- Зафиксировать цели/метрики по сценариям (качество, безопасность, p95, стоимость).
- Собрать и версионировать golden-наборы + red-team/ leakage/ perf-сценарии.
- Настроить LLM-as-judge (слепо, без системных промптов).
- Автоматизировать nightly и release-gate; хранить артефакты и сиды.
- Добавить safety-evals (инъекции/утечки) и мониторинг в проде.
- Регулярно «освежать» наборы, чтобы не «подгонять» продукт под тест.
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 — автоматизированный судья-модель по чётким правилам.
