Почему «точное совпадение» — плохая метрика (LLM-as-Judge)
🤔 Зачем это читать
Ты решил по-взрослому проверять своего AI-помощника. Завёл список из полусотни вопросов с «правильными» ответами-эталонами и настроил проверку: ответ агента совпал с эталоном дословно — зачёт, не совпал — брак. Логично же. Запускаешь — и видишь разгром: половина ответов помечена красным. Лезешь читать руками, а там… ответы-то верные. Просто агент написал «Столица Франции — Париж», а у тебя в эталоне «Париж — столица Франции». Смысл один. Машина увидела разные слова — и влепила ноль.
Знакомо? Или обиднее: на этот кривой результат смотрит начальство. Ты гордо показываешь «у нас 48% точности» — и проект режут как сырой. А на деле помощник отвечает правильно процентов на девяносто, просто твоя линейка меряет не то. Ты не доказал, что он плох. Ты доказал, что не умеешь его мерить — и это стоило проекту жизни.
Корень один: для текста «точное совпадение» (exact-match, дословная сверка с эталоном) — почти всегда плохая метрика. Язык гибкий: одну и ту же верную мысль можно сказать десятком способов, и все они правильные. Линейка, которая сверяет по буквам, этого не видит в принципе. Она годится для «да/нет» и чисел, но не для живого текста — а агенты как раз пишут живой текст.
После этой темы ты будешь сходу различать, где дословная сверка работает, а где она вреднее, чем её отсутствие — и будешь знать, чем её заменить, когда нужно честно оценить смысл, а не буквы. Это прямое продолжение темы 11.2 — Как понять, что агент работает: оценка vs тестирование: там мы договариваемся, что агента надо мерить; здесь разбираем, чем именно мерить, чтобы линейка не врала.
Задержись на 10 секунд. Вспомни, как ты сам проверял чью-то работу — ответ сотрудника клиенту, текст помощника, перевод. Ты ведь не сверял его слово в слово с «идеальным образцом» у себя в голове? Ты смотрел: по сути верно? вежливо? всё ли упомянул? Держи эту картинку. К концу страницы окажется, что машину для честной оценки текста надо учить смотреть ровно так же — по смыслу, а не по буквам.
📏 Дословная сверка ломается на первом же синониме
Начнём с того, почему вообще тянет к «точному совпадению». Оно честное и дешёвое: сравнил две строки символ в символ — совпало или нет, спорить не о чем, считается мгновенно и бесплатно. И для многих вещей это ровно то, что нужно. Агент вернул код страны «RU»? Сумму «58 000»? Ответ «да»/«нет»? Тут дословная сверка идеальна: правильный ответ ровно один, и любое отклонение — это реальная ошибка.
Беда начинается там, где правильных формулировок много. А у живого текста их всегда много. Посмотри на самый простой случай — оба ответа верны на сто процентов, но дословная сверка одному из них ставит ноль.
И это самый безобидный пример — всего лишь перестановка слов. В реальной работе агент перефразирует, добавляет вежливое вступление, пишет «18 тысяч рублей» вместо «18 000 ₽», отвечает развёрнуто там, где в эталоне сухо. Каждое такое расхождение дословная сверка считает ошибкой. В итоге метрика показывает не «насколько агент хорош», а «насколько дословно он попал в твою конкретную формулировку» — а это никому не нужное число. Хуже того: оно системно занижает качество, и ты принимаешь решения на заниженных цифрах.
👅 Дегустатор не сверяет блюдо с фоткой из меню
Вернёмся на кухню — здесь всё встаёт на места. Представь, ты владелец, и тебе надо оценить, хорошо ли повар приготовил блюдо. Как это делает нормальный дегустатор? Он пробует и оценивает по критериям: достаточно ли посолено, сочное ли мясо, аккуратная ли подача, та ли температура. Чек-лист качества в голове — и по нему вердикт.
А теперь представь дегустатора-формалиста, который оценивает иначе: достаёт фотографию блюда из меню и сверяет тарелку с фоткой пиксель в пиксель. Петрушка лежит не под тем углом? Соус капнул левее, чем на картинке? Брак, отправить на кухню. При этом блюдо может быть бесподобным на вкус — но он же не пробовал, он сверял картинку. Абсурд, правда? Так вот, дословная сверка ответа с эталоном — это и есть тот самый формалист с фоткой. Он меряет внешнее совпадение, а не качество.
Нормальный способ оценить текст — как нормальный дегустатор: по рубрике (rubric, чек-лист критериев качества). Не «совпало ли слово в слово с эталоном», а «верны ли факты? отвечает ли на вопрос? вежливо ли? нет ли отсебятины?». Это оценка по смыслу и по делу — ровно то, что сделал бы человек, только нам нужно как-то поручить это машине, потому что ответов — тысячи, и руками каждый не перечитаешь.
⚖️ LLM-судья: отдельный дегустатор с чек-листом
И вот решение, к которому пришла индустрия: раз оценку по смыслу хорошо делает человек, но людей не хватает на тысячи ответов — посадим другую языковую модель в роли дегустатора. Этот приём называется LLM-судья (LLM-as-Judge, «модель в роли судьи»): одна модель отвечает на вопросы, а вторая, отдельная, оценивает эти ответы по рубрике — как живой эксперт, но быстро и на любом объёме.
Ключевое слово — по рубрике. Судье не говорят «оцени, хорошо ли». Ему дают конкретный чек-лист, по которому ставить вердикт. Вот как это выглядит на пальцах — псевдокод, то есть логика на человеческом языке, не настоящий код.
РОЛЬ: ты строгий дегустатор. Оцени ОТВЕТ помощника по чек-листу ниже.
ВОПРОС: «Товар не подошёл, можно ли вернуть через 20 дней после покупки?»
ОТВЕТ: [сюда подставляется то, что выдал агент]
ЧЕК-ЛИСТ (рубрика):
1. Факт верен? (товар надлежащего качества «не подошёл» — возврат 14 дней, значит «нельзя»)
2. Прямо отвечает на вопрос клиента?
3. Тон вежливый, без грубости?
4. Нет выдуманных условий, которых не спрашивали?
ВЫДАЙ СТРОГО В ФОРМАТЕ: вердикт (зачёт / незачёт) + балл по каждому пункту + одна фраза почему
# судья оценивает СМЫСЛ по пунктам, а не сверяет буквы с эталоном
Заметь три правила, без которых судья превращается в лотерею — их стоит держать в голове, даже если настраивать будет подрядчик:
🚫 Нельзя одной модели и готовить, и судить
Теперь самое важное правило, и оно интуитивно понятно любому, кто хоть раз сдавал работу. Нельзя поручать одной и той же модели и писать ответ, и оценивать его. Это всё равно что попросить повара самому поставить себе оценку за блюдо — он почти всегда поставит «отлично». Не из злого умысла: он просто не видит собственных слепых пятен, он же так и задумал.
Поэтому писатель и судья — две разные роли, две отдельные модели (или хотя бы два независимых вызова с разными ролями). Одна готовит, другая дегустирует свежим взглядом. Это та же логика «свежего глаза», что и в приёме 5.4 Producer-Critic, где отдельный критик проверяет работу автора: смысл один — кто делал, тот плохой судья своему делу. Разделил роли — получил честную оценку. Слил в одну — получил самолюбование с красивыми цифрами.
И держи в голове трезвую оговорку, прежде чем влюбляться в LLM-судью: судья — тоже языковая модель, и он тоже ошибается. Он может быть мягче к длинным ответам, поддаться на уверенный тон, иногда промахнуться по факту. Поэтому его не ставят и забывают: рубрику время от времени сверяют с живой человеческой оценкой на небольшой выборке — совпадает ли судья с тем, как оценил бы эксперт. Судья масштабирует здравый смысл на тысячи ответов, но не заменяет его насовсем. Об этом — в AI-чутье ниже.
🎮 Какой линейкой мерить этот ответ
Четыре ситуации с оценкой ответов агента. Для каждой реши: хватит ли дешёвой дословной сверки (правильный ответ ровно один, любое отклонение — реальная ошибка) или нужен LLM-судья по рубрике (правильных формулировок много, важен смысл, а не буквы). Жми — и сразу увидишь разбор. Опора простая: дословная сверка годится только там, где ответ обязан быть ровно одной строкой.
📖 Ключевые понятия
- Точное совпадение (exact-match)
- Способ оценки, при котором ответ агента сверяется с эталоном дословно, символ в символ: совпало — зачёт, нет — брак. Дёшево, быстро и честно, но только там, где правильный ответ ровно один (код, число, метка из списка, «да»/«нет»). На живом тексте системно бракует правильные ответы из-за других слов — там это плохая метрика.
- Рубрика (rubric)
- Чек-лист критериев качества, по которому оценивают ответ: факт верен? на вопрос отвечает? тон вежливый? нет отсебятины? Аналог того, как дегустатор оценивает блюдо (посолено? сочно? подача?), а не сверяет с фоткой из меню. Делает оценку по смыслу повторяемой и объяснимой.
- LLM-судья (LLM-as-Judge)
- Приём оценки, где отдельная языковая модель ставит вердикт ответам по рубрике — как живой эксперт, но быстро и на любом объёме. Масштабирует человеческую оценку на тысячи ответов. Работает на трёх опорах: рубрика, структурный вывод, низкая температура. Сам тоже ошибается — рубрику периодически сверяют с человеческой оценкой.
- Разделение ролей (писатель ≠ судья)
- Правило: одну и ту же модель нельзя просить и писать ответ, и оценивать его — она поставит себе «отлично», не видя своих слепых пятен. Писатель и судья — две разные роли. Та же логика свежего взгляда, что в приёме Producer-Critic.
🛡️ Частые заблуждения
«Сравнить с эталоном дословно — самая честная и объективная проверка»
Для текста — нет. Дословная сверка честна только когда правильный ответ один-единственный. У живого текста верных формулировок десятки, и сверка по буквам бракует их все скопом — показывает не качество агента, а то, насколько дословно он угадал твою личную формулировку эталона. Это не «строгая объективность», это системно заниженная и бесполезная цифра.
«LLM-судья — это модель оценивает сама себя, цифры будут подтасованы»
Если делать правильно — судья это ДРУГАЯ модель в отдельной роли, а не та же самая. Самооценку мы как раз запрещаем (повар не ставит себе оценку). Подвох в другом: судья — тоже модель и тоже ошибается, поэтому его рубрику периодически сверяют с живой человеческой оценкой на выборке. Не «подтасовка», а «масштабируемый эксперт, которого надо изредка калибровать».
«Раз дословная сверка плохая — выкину её совсем и всё буду мерить судьёй»
Перегиб в другую сторону. Где правильный ответ ровно один — код, число, метка из списка — дословная сверка идеальна: дешевле, быстрее и точнее судьи, спорить не о чем. Гонять LLM-судью на «RUB» или «да/нет» — жечь деньги и время на ровном месте. Линейку выбирают под задачу: буквы — для единственного верного ответа, смысл — для живого текста.
🧠 AI-чутьё (AI Judgment)
Судья масштабируем, но слепо не доверять; писатель и судья — всегда разные роли
Главная рамка темы: правильную линейку выбирают под то, что меряют. Единственно верный ответ — дешёвая дословная сверка, и тут она непобедима. Живой текст с десятком верных формулировок — оценка по смыслу, рубрика, LLM-судья. Перепутал линейку — получил враньё в обе стороны: либо забраковал хорошего агента ложными нулями, либо проворонил реальные ошибки, спрятавшиеся за гладкими словами.
LLM-судья — мощная вещь: он растягивает человеческий здравый смысл на тысячи ответов, которые руками никто не перечитает. Но держи две оговорки, иначе он подведёт. Первая: судья — тоже модель и тоже ошибается. Не ставь его и не уходи: сверяй его вердикты с живой человеческой оценкой на небольшой выборке — попадает ли он туда же, куда эксперт. Если разъезжается — чини рубрику. Вторая, и она железная: никогда не давай одной модели и писать, и судить. Самооценка модели бесполезна ровно так же, как самооценка повара своему блюду — почти всегда «отлично». Писатель и судья — две роли, две отдельные головы. Это тот же принцип свежего взгляда, что в Producer-Critic.
Практический вывод владельца: когда тебе показывают «точность нашего AI — X%», не кивай на цифру — спроси, чем мерили. Дословной сверкой по тексту? Тогда реальное качество почти наверняка выше показанного, а цифре грош цена. Судьёй? Тогда уточни, отдельная ли это модель и сверяли ли её с людьми. Один правильный вопрос про линейку защищает и от заниженной паники, и от завышенного оптимизма — а оба стоят денег.
🎯 Практика
Одно задание на пять минут — оно превращает «теорию про линейки» в твою рабочую рубрику.
- Возьми задачу, где AI-помощник пишет живой текст со своей работы: ответ клиенту, краткое содержание письма, черновик коммерческого предложения. Запиши её в одну строку.
- Спроси себя честно: правильный ответ тут ровно один или формулировок много? Почти наверняка много — значит, дословная сверка тут врёт, нужна оценка по смыслу.
- Набросай рубрику из 3-5 пунктов — чек-лист, по которому ты сам оценил бы этот ответ. Например, для ответа на жалобу: факт верен? проблема признана? решение предложено? тон вежливый? нет выдуманных обещаний? Это и есть задание, которое получил бы LLM-судья.
- Бонус-проверка: для той же работы найди, есть ли в ней кусочек, где ответ обязан быть единственным (номер заказа, сумма, дата). Вот его — и только его — честно мерить дословной сверкой. Так ты на одной задаче увидишь, где какая линейка уместна.
Помнишь те «48% точности», от которых чуть не зарезали проект в начале страницы? Теперь у тебя есть рубрика — и ты можешь показать не липовое число от кривой линейки, а честную оценку по делу. Это разница между «нас зарубили на цифре» и «мы доказали ценность».