DigitableCourses

Границы гарантии Digit

Границы гарантии проверяемого режима Digit: закрытый класс выдуманных фактов, остаточный класс «верная цитата не на тот вопрос», непроверяемая истинность посылок, зависимость нуля от выборки и цена гарантии в доле отказов.

Границы гарантии Digit

Эта страница написана без смягчений. Она нужна, чтобы утверждение «содержание берётся только из проверяемых источников» не превратилось при пересказе в «агент не ошибается».

Что система ловит

Выдуманный факт. У модели нет канала, по которому порождённый ею текст попадал бы в проверяемый ответ как факт. Прямые улики выдумки — строки, которых в правильном ответе быть не может, — на видимом наборе 0,0 %, на независимом 1,2 %.

Ложную посылку о внешней области. Вопрос «в UTF-8 каждый символ занимает два байта, сколько займёт строка» получает исправление посылки, а не вычисление по ней. На независимом наборе отбито 31 из 32 ложных посылок. Предположение, что система ловит только ложь про собственный каталог, не подтвердилось.

Запрос без данных. «Захэшируй пароль» без пароля, «посчитай подсеть» без блока сети. Отказ здесь наступает до вызова утилиты и называет, какого именно аргумента не хватает. Отбито 30 из 34 приманок.

Очевидно чужую тему. Вопросы, не относящиеся к материалам, закрываются отказом полностью.

Правдоподобно смежный вопрос — но уже не полностью: 81,5 %.

Некорректный вывод из посылок. Если цепочка правил не типизируется, если морфизм применён в обратную сторону, если домен не населён, если правила оставляют непокрытую ветку — сертификата не будет. восемь кодов детектора структурных ошибок, каждый — алгоритм, а не суждение.

Расхождение индекса и корпуса. Цитата обязана стоять дословно в текущей редакции файла, а не только в индексе. Устаревший индекс даёт отказ, а не уверенную цитату из соседнего абзаца.

Чего система не ловит

Верную цитату не на тот вопрос

Это главный остаточный класс, и он не побочный: на независимом наборе это 28 из 32 всех пробоев.

Система находит в корпусе настоящий фрагмент, приводит его дословно и указывает файл. Каждый символ ответа есть в материалах. И он отвечает на другой вопрос. На вопрос «как записать лемму в FTS» приходит фрагмент из статьи про теорию графов. На вопрос про цену одной редакции — абзац с ценой соседней. На вопрос про один реквизит организации — абзац с похожим реквизитом.

Гейт, проверяющий «есть ли этот текст в корпусе», такой ответ пропускает по построению. Четвёртый гейт проверяет уже другое — присутствует ли предмет вопроса во фрагменте, — и это снимает заметную часть класса. Но и он проверяет присутствие предмета, а не то, что фрагмент утверждает про этот предмет. Там, где предмет назван и присутствует, а ответ даёт соседний раздел того же документа, поверхностный признак бессилен.

Самый чистый пример найден на контрольной группе: вопрос «когда объект должен быть сущностью, а не значением» получает цитату из правильного файла, из соседнего раздела — про значение. Правильный файл, соседний раздел, противоположный ответ.

Истинность того, что записано

Формальный слой доказывает, что вывод корректен при данных посылках. Истинность самих посылок он не проверяет и не может проверить в принципе. Спецификация, утверждающая неверную доменную аксиому, проходит все проверки языка зелёной; в документации гейта это показано рабочим контрпримером, на котором детектор логических ошибок не находит ни одной из 67 позиций каталога.

Ошибку в этом контрпримере ловит не математика, а человеческое ревью, записанное в библиотеку морфизмов. Отсюда прямое следствие для эксплуатации: ревью морфизма должно быть таким же регламентированным процессом, как ревью изменений в проде. Ошибка ревьюера проходит гейт насквозь.

То же в другой форме: если в самих материалах курсов написана неточность, Digit процитирует её дословно и укажет источник. Проверяемость означает прослеживаемость до источника, а не истинность источника.

Логические ошибки вообще

Детектор покрывает 12 позиций каталога из 67. Остальные 55 — это риторика и содержательные ошибки, требующие данных, объявленных посылок и уровней агрегации, которых в формальной модели нет.

И отдельно: «ошибок не найдено» не означает «ошибок нет». Детектор работает на точность, а не на полноту — он предъявляет найденный дефект, но не предъявляет их отсутствия. Проверки намеренно сужены до случаев, где дефект решается алгоритмом, потому что ложное срабатывание отвергает работу, которая была в порядке.

Более того, детектор делает ложный вывод более гладким. Автор, исправивший круг в основаниях и закрывший непокрытую ветку, получит спецификацию, которая читается как безупречная и остаётся ложной. Чем чище формальная часть, тем сильнее соблазн принять содержание на веру.

Релевантность спецификации вопросу

Гейт получает спецификацию и контекст. О чём спросил пользователь, он не знает. Безупречно сертифицированная спецификация про отгрузку заказа останется безупречной, даже если вопрос был про возврат средств.

Собственную полноту покрытия

Отказ означает «в этой области поиска ответа не нашлось», а не «ответа не существует». Разбор независимого набора нашёл в системе отдельный дефект покрытия: 22 задачи с побайтово выверенными цитатами из одного файла не получили ни одного верного ответа — похоже, этот файл просто не попадал в индекс. Валидность цитат без него — 37,0 % вместо 20,4 %. Часть отказов, которые выглядят как осторожность, на деле измеряет дыру в индексе.

Авторство

Дайджесты связывают документ, контекст и сертификат между собой, но не устанавливают, кто их создал. Для этого нужна цифровая подпись, которой в текущей версии нет.

Про «ноль ошибок»

Утверждение «ноль» всегда является утверждением о выборке.

На видимом наборе доля ложных ответов на red-team была 0,0 %. На независимом наборе, с тем же определением метрики и без единой правки в определении, — 13,3 %. Разница по набору в целом — в 7,7 раза. Ни одна группа независимого набора не подбиралась под известные дыры: его автор не открывал реализацию.

То же случилось на слое поиска, дважды. Сначала при замене отрицательного набора «кулинария и спорт» на «соседние IT-темы»: полнота при нуле ложных принятий упала с 0,975 до 0,327. Потом при замене «соседние технологии» на «двойников внутри темы»: откалиброванный порог, дававший 0 из 173 ложных принятий, на независимых отрицательных дал 29 из 99.

И даже когда ноль наблюдён, он имеет доверительную границу. Ноль событий из n не означает «никогда»: правило трёх даёт верхнюю границу 1,7 % при доверии 95 % на всём наборе и 2,8 % на трудном классе. На прошлой, меньшей выборке та же граница была 7,5 % — то есть само утверждение усилилось не потому, что система стала лучше, а потому, что набор стал больше.

Честная формулировка выглядит так: ноль ложных принятий наблюдался на конкретной популяции отрицательных примеров, и при смене этой популяции он не переносился ни разу.

Цена гарантии

Гарантия оплачивается отказами, и счёт большой.

Показатель Видимый набор Независимый набор
Доля отказов 60,5 % 75,6 %
Лишние отказы 36,8 % 47,7 %
Отказы у оракула 37,5 %

«Лишние отказы» — это случаи, когда ответ был доступен, а система отказала. Разница между 36,8 % и 37,5 % и есть цена, которую платит пользователь за то, что оставшимся ответам можно верить.

Цена видна и на нижнем слое. Обучение модели на приманках подняло осознанный отказ до 91,3 %, но снизило точность извлечения аргументов до 90,1 % и подняло лишние отказы до 13,0 %. Класс, который учит не доверять токену, похожему на значение, переносит часть осторожности на настоящие вторичные аргументы. Это обмен, а не чистое улучшение.

Отдельная статья цены — полнота поиска. Требование «ни одного ложного принятия» на калибровочном наборе стоит того, что при поставляемой конфигурации система находит нужный документ в 0,833 случаев. Без кросс-энкодера, на одном гибридном скоре, это 0,327 — и кросс-энкодер требует GPU: 232 мс на видеокарте против 11 205 мс на процессоре.

Что из этого не измерено

  • Базовая линия. Прогон модели без гейтов на тех же 400 задачах не сведён. Пока его нет, доля отказов читается как абсолютная величина, а не как цена относительно альтернативы.
  • Квантованная сборка. Сырые прогоны есть, отчёта нет; все числа модели относятся к несжатой сборке.
  • Набор отрицательных с двойниками. Тот самый набор, на котором порог впервые будет означать то, что от него ждут в эксплуатации, ещё не собран. Предыдущие две смены популяции отрицательных ухудшали результат; предполагать, что третья не ухудшит, оснований нет.
  • Итоговое измерение четвёртого гейта на основном наборе. В отчёте по гейту на месте обеих сводных таблиц стоят незаполненные плейсхолдеры.

Одной фразой

Digit не выдумывает фактов: содержание ответа берётся только из проверяемых источников, и у каждого элемента есть разрешимое происхождение. Ошибки, которые остаются, — это верная цитата не на тот вопрос; их доля измерена и равна 13,9 % на наборе, который разработчик не видел. Цена этой конструкции — 75,6 % отказов на том же наборе.

Как это устроено · Как измерялось

Нашли неточность? Выделите фрагмент текста — рядом появится жучок.

Нужен разбор именно вашей ситуации?

Статья описывает общий случай. Если у вас частный — можно разобрать его отдельно, платно. А если не хватает целого материала, предложите тему: её оплачивают вскладчину, и она выходит открытой для всех.

Доска запросов
Дальше