Как найти шаг, на котором появилась галлюцинация, с помощью происхождения в духе хадисов
Почему ошибки LLM рождаются на первом шаге и как цепочка в духе иснада, реестр передатчиков и матрица решений дают мультиагентным конвейерам ответственность на каждом шаге.
Кто сказал это модели?
Допустим, утверждение прошло через пять агентов, прежде чем дошло до вас, и оказалось неверным. Кто из пятерых его внёс? Кто переформулировал его во что-то чуть иное? Кто за это отвечает? В большинстве продакшен-конвейеров честный ответ: никто не знает.
LLM выдаёт вам ответ, и вопрос в том, откуда он взялся. Не из какого документа, а из какого преобразования. Каждый вывод модели — это утверждение без происхождения. Логи есть, но лог говорит, что произошло, а не то, заслуживает ли передача доверия. Мультиагентные цепочки делают всё хуже. Утверждение, пережившее пять передач, не становится надёжнее, оно просто лучше спрятано.
Где на самом деле начинаются ошибки
Принято считать, что галлюцинации накапливаются с глубиной: длиннее цепочка — больше дрейф. Лидерборд, построенный для проверки этой идеи (issue #71 в репозитории проекта, всё закоммичено), показал другое. На общеизвестных фактах доля галлюцинаций была 0%. На фактах после даты среза обучения модели она составила от 44% до 56%. И она не менялась с ростом глубины цепочки.
Значит, ошибка не растёт по дороге. Она рождается на шаге 1, в момент генерации из памяти, когда модель тянется к тому, чего у неё нет. Дальше эстафета добросовестно её копирует и ничего не добавляет. Это меняет то, куда ставить инструментирование. Детектор дрейфа вам не нужен. Нужно знать, на каком шаге возникло утверждение и имел ли этот передатчик вообще право его делать.
Метод, которому 1400 лет
Исламские учёные столкнулись с той же проблемой в отношении человеческих утверждений четырнадцать веков назад и построили вокруг неё целую дисциплину — критику хадисов. Она состоит из трёх контуров, которые намеренно держат раздельно:
- иснад — это цепочка: кто кому передал сообщение и в каком порядке.
- риджал — это передатчики: реестр, который оценивает надёжность каждого передатчика по роли, причём оценка со временем устаревает.
- матн — это содержание: противоречит ли утверждение тому, что уже установлено?
Разделение важно, потому что безупречная цепочка может нести ложное утверждение, а истинное может прийти по сломанной цепочке. Система не сводит это к одному числу, потому что это ответы на разные вопросы.
Библиотека ISNAD переносит каждый контур на инфраструктуру LLM:
- Цепочка (иснад): каждое преобразование по порядку, с хешами входа и выхода.
- Реестр (риджал): надёжность передатчика по ролям с поправкой на свежесть.
- Оценка: качество цепочки определяется самым слабым передатчиком.
- Критика содержания (матн): утверждение против доказательств, рассчитано на подключение к вашему существующему критику.
- Матрица решений: итог — выдать, выдать с оговоркой, отправить на проверку или поместить в карантин.
- Подтверждение: независимые свидетели (таватур) и обнаружение общих для них ошибок.
- Обоснование: в рамках цепочки, то есть то, что эта цепочка действительно извлекла.
- Content-madar: снимает отпечатки ошибок, общих для источников, которые выглядят независимыми.
Каждое утверждение проходит через таблицу 4×3, где качество цепочки скрещено с вердиктом по содержанию, и выходит ровно с одним действием: выдать, выдать с оговоркой, отправить на проверку или в карантин. Это действие, а не оценка, и действие можно встроить в конвейер.
Поставляется как библиотека, REST API и CLI. Работает рядом с LangChain, LlamaIndex, CrewAI, LangGraph и OpenTelemetry, а не вместо них, так что внедрение не требует переписывать стек.
Чего она не делает
Большинство инструментов надёжности пропускают эту часть, поэтому стоит сказать прямо.
- Она оценивает, кто, а не правда ли. Цепочка сахих говорит, что передача хорошо засвидетельствована. Она никогда не говорит, что утверждение истинно, и ISNAD не делает вид, будто это не так.
- Оценки порядковые: сахих выше хасан, затем даиф, затем мауду. Никаких "92,3% уверенности", потому что ни один честный метод такого числа не даёт. Два знака после запятой у значения доверия — просто украшение.
- Она сочетается с критиками. ISNAD — это уровень передачи и намеренно не судья содержания.
- Всё измерено, а не заявлено. Каждое утверждение в README ведёт к закоммиченному воспроизводимому результату, рядом напечатаны отрицательные контроли.
- Ограничения — в первую очередь. Холодный старт по каждой роли хуже, целостность держится только внутри домена, независимость можно дисконтировать, но нельзя доказать, а потолок покрытия задаёт критик. Всё это стоит в README на видном месте, а не спрятано в сноске.
Что показывают измерения
Снятие отпечатков через content-madar снизило долю ложных срабатываний с 0,750 до 0,375 при полноте по токенам 1,0 и обнаружении почти-совпадений 4 из 4. В оценке обоснования по цепочке разделение между обоснованными и необоснованными утверждениями сохранилось под NLI-критиком, а защита от вырождения не даёт критику обмануть метрику.
Самый неудобный результат: потолок задаёт критик. Более сильная кросс-модельная схема, где deepseek-v4-pro оценивал deepseek-flash, имея доказательства прямо в контексте, всё равно пропускала до 2 из 4–5 галлюцинаций. Критик не заменяет вынесения решения, и документация ISNAD говорит об этом открыто, а не надеется, что вы не проверите.
Кому стоит посмотреть
- Командам, которые выпускают мультиагентные конвейеры и хотят ответственности на каждом шаге, а не стектрейса.
- Медицине, праву и финансам — везде, где аудиторский след важнее лог-файла.
- Исследователям, которым нужен предрегистрированный воспроизводимый способ измерять галлюцинации и происхождение.
- Всем, кто устал от "поверьте, всё в порядке" и предпочёл бы прочитать "вот кто за это поручился и чего стоит его поручительство".
Установка:
pip install isnad # Python ≥ 3.11, Apache-2.0
npm i isnad # JS verifier — verifies audit records, grading stays in Python
Репозиторий находится на github.com/alizahidraja/isnad. В нём есть демо в одну команду, полный стенд бенчмарков и документ ARCHITECTURE, где изложены рассуждения, ограничения и всё ещё открытые проблемы. Главная из них — независимость цепочек.
ISNAD оценивает передачу, а не истину. Так надёжность работала ещё до появления машин, а теперь применяется к ним.