Все метрики из курса: формула, смысл, пример с числами, когда врёт, ссылка на доки. Печатай и держи под рукой.
Фундамент: любая бинарная оценка (включая LLM-judge) — это классификатор с четырьмя клетками.
| Термин | Формула | Что значит | Пример (судья на 100 ответов, реально 5 фейлов) |
|---|---|---|---|
| TP (true positive) | — | Фейл был, поймали | Судья зарубил 4 ответа, и все 4 реально фейлы → TP=4 |
| FP (false positive) | — | Фейла нет, зарубили зря | Судья зарубил ещё 6 хороших → FP=6 |
| TN (true negative) | — | Ок, пропустили как ок | 89 хороших ответов пропущены → TN=89 |
| FN (false negative) | — | Фейл был, пропустили | 1 реальный фейл не замечен → FN=1 |
| Precision | TP/(TP+FP) | Из названных фейлами — сколько реально фейлы | 4/(4+6)=0.4 — судья много ложно рубит |
| Recall = TPR | TP/(TP+FN) | Из реальных фейлов — сколько поймали | 4/(4+1)=0.8 — поймал 4 из 5 |
| TNR | TN/(TN+FP) | Из хороших — сколько не зарубили | 89/(89+6)=0.94 |
| F1 | 2·P·R/(P+R) | Гармоническое среднее | 2·0.4·0.8/1.2=0.53 |
| Accuracy | (TP+TN)/всего | Врёт при дисбалансе | (4+89)/100=0.93 — выглядит отлично, а Precision=0.4 |
Главный урок: accuracy 93% при Precision 0.4 — судья ложно рубит хорошие ответы. Всегда смотри confusion matrix целиком, не одну цифру.
Источник: Eugene Yan — Evaluating LLM-Evaluators.
Оценивается только относительно gold — размеченного набора «вопрос → правильный chunk_id / reference». Без gold retrieval-метрик не существует.
| Метрика | Формула | Вопрос | Пример |
|---|---|---|---|
| Recall@k | |relevant ∩ top-k| / |relevant| | Сколько из ВСЕГО нужного нашли? | Gold: 3 куска. В top-5 попал 1 → 1/3=0.33 |
| Precision@k | |relevant ∩ top-k| / k | Сколько мусора в top-k? | В top-5 из 5 выданных 2 релевантных → 2/5=0.4 |
| Hit rate (= Pass@k) | 1 если |relevant ∩ top-k| ≥ 1 | Хотя бы один нужный нашёлся? | Попал 1 из 3 → Pass@5=1, хотя recall=0.33 |
| MRR | 1/rank первого relevant | Как высоко первый нужный? | Первый нужный на позиции 2 → 1/2=0.5 |
| nDCG@k | DCG/ideal DCG; DCG=Σ rel_i/log2(i+1) | Весь порядок хорош? | rel=[1,0,1]: DCG=1/1+0+1/1.585=1.63; ideal=[1,1,0]: 2.26 → nDCG=0.72 |
| ID-recall | |gold_ids ∩ retrieved_ids| / |gold_ids| | Золотые doc_id найдены? | Gold: [d1,d2], найдены [d1] → 1/2=0.5. Лучший дешёвый тест |
| Context Recall (Ragas) | выводимые claims reference / все claims reference | Эталон выводится из контекста? | Reference «Башня в Париже», контекст «Париж — столица» → 0/1=0[37] |
| Context Precision (Ragas) | Σ(precision@k · v_k) / число relevant в top-K[86] | Релевантные куски выше мусора? | Мусор на позиции 1 снижает; на позиции 2 — нет[86] |
| Context Entities Recall | совпавшие сущности / сущности reference | Ключевые сущности (имена, суммы) найдены? | В эталоне 3 сущности, в контексте 2 → 0.67 |
Pass@k vs recall@k: Pass@k бинарный («хотя бы один»), recall@k — доля («сколько из всех»). Расходятся при ≥2 правильных кусках; совпадают, если правильный кусок один. Подробно — урок 0002.
Источники: Evidently, Ragas Context Precision, Ragas Context Recall, Ragas Context Entities Recall.
| Метрика | Суть | Пример с числами | Когда врёт |
|---|---|---|---|
| Faithfulness | supported_claims / all_claims ответа относительно контекста[36] | Контекст: «Эйнштейн родился 14 марта 1879 в Германии». Ответ: «…в Германии 20 марта 1879». Claims: 1 supported + 1 нет → 1/2=0.5 | Мусорный контекст — высокий при бесполезности |
| Answer relevancy | Из ответа генерируются N вопросов → средний cosine к исходному[38] | Вопрос про столицу Франции, ответ «Франция в западной Европе» → вопросы из ответа далеки от исходного → низкий балл | Ловит лексику, не правду: «Париж — столица России» релевантно |
| Citation accuracy | Ссылка ведёт на чанк, из которого взят факт | Ответ «2% [1]», а в chunk [1] «1.5%» → citation fail, хоть формат ок | «Показали» ≠ «процитировали» — нужен лог shown vs cited |
| Task success | SQL exec / поле извлечено / тикет создан | SQL выполнился и вернул эталон → 1 | Бизнес-метрика, не RAGAS |
| Noise Sensitivity | incorrect claims / все claims ответа (чем ниже, тем лучше)[88] | Ответ из 3 claims, 1 неверный → 0.33[88] | Считает именно «ответил по мусорному контексту» |
| Factual Correctness | TP+TN по фактам ответа vs reference (TP/FP/FN/TN по утверждениям) | Из 4 фактов ответа 3 верны, 1 лишний → F1≈0.86 | Нужен качественный reference |
Источники: Ragas Faithfulness, Ragas Relevancy, Ragas Noise Sensitivity, Ragas Factual Correctness.
Важное различие: «тул полезен системе» (ablation) vs «агент осмысленно его использует» (ACI).
| Метрика | Суть | Пример |
|---|---|---|
| Tool selection accuracy | Правильный тул выбран (нужен gold) | На вопрос про лимит выбран cards_get_balance, а не faq_search → 1 |
| Tool-call F1 | P/R по множеству вызовов vs ожидаемых[89] | Ожидали [get_balance, block], агент вызвал [get_balance, get_balance] → P=1/2, R=1/2, F1=0.5 |
| Tool call accuracy (Ragas) | Точное совпадение последовательности и аргументов[89] | Ожидали [block_card(reason=lost)], вызвал [block_card(reason=stolen)] → 0 |
| Argument validity | Схема + enum + бизнес-инвариант (сумма > 0). Кодом, без LLM | reason=«xyz» не в enum [lost, stolen, fraud] → fail |
| Unnecessary calls | Вызов без изменения состояния | Дважды вызван get_balance за 10 секунд → 1 лишний |
| Outcome after tools | Бронь в БД, не «я забронировал» | Агент сказал «заблокировано», а статус карты в БД active → 0 |
| Agent goal accuracy | Цель юзера достигнута (бинарно)[89] | «Забронируй стол» → бронь есть → 1, независимо от пути тулов |
| Topic adherence | Не ушёл за разрешённые темы[89] | Каре банка ответил про крипто-инвестиции → fail |
| pass@k (генерация) | 1 − (1−p)^k — хотя бы 1 из k попыток успешна | p=0.5, k=3 → 1−0.125=0.875 |
| pass^k | p^k — все k попыток успешны | p=0.5, k=3 → 0.125. Для банка критично |
Источник: Ragas Agentic metrics, τ-bench.
| Метрика | Суть | Пример |
|---|---|---|
| Resolution rate | Решил без эскалации | 70 из 100 диалогов закрыты без человека → 0.7 |
| Containment | Закрыл диалог — не равно решил | Бот «закрыл» 80%, но 30% вернулись → containment врёт |
| Recontact 24–72 ч | Вернулся с той же проблемой | Из 100 решённых 15 вернулись → recontact 0.15 |
| Escalation quality | Вовремя, с контекстом, без выдуманного лимита | Эскалация на «простой FAQ» → fail |
| Cost / диалог, p95 | Экономика и UX | $0.03/диалог, p95=1.8s |
| Guard trip rate | Доля срабатываний гарда | 3% запросов отсечены PII-гардом — растёт = атаки или перекос |
| PII leak rate | Доля ответов с чужими данными | 0.0% — обязательный ноль для банка |
| Метрика | Суть | Интерпретация |
|---|---|---|
| Cohen's κ | Согласие райтеров с поправкой на случайность | 0.41–0.60 = moderate; консервативная |
| Kendall's τ | Согласие ранжирований, робастен к выбросам | Выше κ (не учитывает шанс-согласие) |
| Spearman's ρ | Согласие ранжирований, чувствителен к величине разницы | Обычно выше κ |
Eugene Yan советует бинарные выходы судьи и classification-метрики вместо корреляций: понятнее «сколько реальных фейлов пропустим».
Источник: Eugene Yan.
| Метрика | Суть | Когда врёт |
|---|---|---|
| BLEU | n-gram precision к референсу | Открытый ответ ≠ перевод: перефраз даёт 0 |
| ROUGE | n-gram recall к референсу | То же: не понимает смысл |
| CHRF | chrF — F1 по символьным n-граммам | Чуть лучше для морфологии, но та же проблема |
| Exact Match | 1 если output == gold | Ок для полей/JSON, бесполезен для прозы |
| Semantic Similarity | Cosine эмбеддингов ответа и reference[91] | Ловит лексику, не факты |
| String Presence | Есть ли строка в ответе | Дёшево, но примитивно |
Источник: Ragas Traditional metrics, Ragas Semantic Similarity.
| Тип | Суть | Когда |
|---|---|---|
| Aspect critic | Один аспект: тон, полнота, безопасность | Быстрая проверка одного измерения[92] |
| Simple criteria | Свой критерий + PASS/FAIL | «Отказ на чужой баланс» |
| Rubrics | Несколько уровней с описаниями | Когда binary слишком груб, но шкала описана явно |
| Instance-specific rubrics | Рубрика под конкретный пример | Сложные задачи с индивидуальными критериями[92] |
Источник: Ragas General Purpose.
| Метрика | Суть |
|---|---|
| Exact match / schema | Поля, JSON-ключи, статусы |
| Execution accuracy | SQL/код исполнился и совпал с эталоном (Kontur-кейс) |
| Tool error rate | 4xx/5xx / все вызовы |
| Latency p50/p95, tokens, $ | Перцентили, экономика |
| WER (для STT) | Word Error Rate на своих звонках, не LibriSpeech |
| Field-level F1 (для OCR) | F1 по полям: сумма, дата, имя; exact match на деньгах |