120 выдуманных ссылок против 8: что агентный поиск делает с галлюцинациями LLM на строительных нормах. llm.. llm. rag.. llm. rag. базы данных.. llm. rag. базы данных. верификация.. llm. rag. базы данных. верификация. гост.. llm. rag. базы данных. верификация. гост. искусственный интеллект.. llm. rag. базы данных. верификация. гост. искусственный интеллект. Машинное обучение.. llm. rag. базы данных. верификация. гост. искусственный интеллект. Машинное обучение. нейросети.. llm. rag. базы данных. верификация. гост. искусственный интеллект. Машинное обучение. нейросети. нормативные документы.. llm. rag. базы данных. верификация. гост. искусственный интеллект. Машинное обучение. нейросети. нормативные документы. СП СНИП.. llm. rag. базы данных. верификация. гост. искусственный интеллект. Машинное обучение. нейросети. нормативные документы. СП СНИП. строительство.

Один контрольный эксперимент — и один красивый ложный вывод, который мы чуть не опубликовали

TL;DR

  • Шесть систем × 100 вопросов по строительным нормам, отобранных из ~6 000 реальных запросов пользователей; 3000 оценок от пяти LLM-судей — вслепую, по единой рубрике, с проверкой ссылок по корпусу нормативов.

  • Контрольный эксперимент: один и тот же генератор (DeepSeek V4-Pro) с агентным поисковым контуром и без. С контуром — достоверность ссылок 4,25 из 5 и 8 пометок «выдуманная ссылка»; соло — 2,60 и 120 пометок.

  • Лучший генералист (GPT-5.5) обходит систему только по полноте ответа. Обе «доказательные» оси проигрывает.

  • Внутри — как устроен агентный поиск (планировщик → поисковый агент → курация контекста → генерация) и почему наивные средние показывали ложный вывод о судьях — и какой тест его вскрыл.

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

«А если взять GPT или другую топовую модель — неужели она действительно не сможет ответить на вопросы по СП и ГОСТ?»

А недавно тот же аргумент прозвучал в куда более жёсткой форме — на очной защите нашего проекта перед экспертами одной государственной грантовой программы по ИИ. Тезис звучал так: сервис для работы с нормативкой от маленькой команды обречён, потому что крупнейшие компании вкладывают в свои модели несопоставимо больше, — и поддерживать нишевую разработку на этом фоне нет смысла.

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

Только не ждите вывода «наша система лучше всех LLM вообще» — его не будет. Мы показываем другое: там, где ответ обязан быть проверяемым по нормативному корпусу, агентный контур резко снижает число неподтверждённых ссылок — на одном и том же генераторе.

Заодно расскажем, как мы сами едва не попались — на методике, а не на моделях.

Постановка эксперимента

Сами вопросы мы не придумывали и не генерировали. Пользователи сервиса — их сейчас почти тысяча — задают ему живые вопросы; на момент формирования набора в логах накопилось около 6 000 запросов. Из них мы отобрали 100: сначала дедупликация и чистка мусора, затем стратификация по дисциплине, типу задачи (найти норму / интерпретировать / посчитать), сложности и типу рассуждения — от точечного поиска пункта до сведения нескольких документов и численного расчёта. Обязательное условие отбора: однозначная формулировка и принципиальная возможность верифицируемого эталона — конкретный пункт документа или детерминированный расчёт по норме. Поэтому распределение по дисциплинам ниже — не наша фантазия, а слепок реального спроса:

Дисциплина

Вопросов

Пожарная безопасность

34

Вентиляция

23

Строительные нормы и правила

15

Водоснабжение и канализация

13

Электроснабжение

9

Градостроительство

6

По сложности: 23 простых, 47 средних, 30 сложных. Часть вопросов закрывается одним пунктом одного документа; часть требует собрать цепочку из нескольких норм.

Отвечали шесть систем:

  • SP-AI — наша система: агентный поисковый контур по корпусу нормативов, финальный ответ пишет DeepSeek V4-Pro (о том, что там внутри, — следующий раздел);

  • DeepSeek-V4-Pro соло — тот же генератор, но без всего контура: отвечает по собственной памяти;

  • GPT-5.5;

  • Claude Opus 4.8;

  • Claude Sonnet 5;

  • Gemini 3.1 Pro.

Пара «SP-AI vs V4-Pro соло» — это контрольный эксперимент. Генератор один и тот же; всё различие — агентный контур поиска и сборки контекста. Дальше эта пара сыграет главную роль.

Итого 600 ответов. Каждый независимо оценили пять LLM-судей: GPT-5.5, Claude Sonnet 5, Claude Opus 4.8, Gemini 3.1 Pro и DeepSeek-V4-Pro. Три тысячи оценок. Оценка здесь — один проход судьи по одному ответу: шесть чисел по осям рубрики плюс флаги галлюцинации и отказа.

Что здесь называется «RAG» — и почему это уже не тот RAG

Сразу договоримся о словах, иначе весь эксперимент читается неправильно.

Классический RAG образца 2023 года — retrieve-then-generate: нарезать документы на чанки, сложить в векторную базу, на запрос достать top-k похожих кусков, приклеить к промпту, сгенерировать. На нормативных документах эта схема ломается быстро: минимальная единица хранения не совпадает с минимальной единицей смысла, обязательные связи между пунктами теряются, таблицы и термины живут своей жизнью. Про это была прошлая статья.

Поэтому то, что в таблицах ниже для краткости названо «SP-AI», — не «модель с поиском». Это конвейер из нескольких моделей и поискового агента:

  • Планировщик — лёгкая быстрая модель (DeepSeek V4-Flash) — разбирает запрос на задачи: тут упомянут конкретный пункт, тут таблица, тут термин, тут свободная формулировка. Решает, куда идти: smalltalk, поиск или сразу ответ — и при необходимости запускает поисковые задачи повторно по результатам прошлого круга.

  • Поисковый агент — ReAct-агент на той же быстрой голове: под задачу сам выбирает инструменты — точечный поиск по номеру пункта, гибридный поиск (BM25 + векторный + терминологический слой), работу с таблицами, навигацию по оглавлению и чтение раздела. Несколько поисковых задач в одном ходе могут идти параллельно; найденные фрагменты складываются в общий пул.

  • Курация контекста. Найти похожий фрагмент — полдела. Система дотягивает связанные узлы: примечания, ссылки на другие нормы, соседний материал по графу документа. Агент явно закрепляет опоры ответа (pins) — они гарантированно попадают в контекст генератора. Если найденного мало или узкий scope от планировщика не дал результата, поиск расширяется (scope escape / повтор без scope) — часто ещё до нового круга планировщика. Если контекста всё равно не хватает, планировщик может отправить агента на следующий раунд.

  • Генератор — тяжёлая DeepSeek V4-Pro — пишет ответ строго по собранному контексту, с принудительным цитированием вида «СП 1.13130.2020 п. 7.13.2». Закреплённые выдержки — основа ответа: каждую нужно процитировать или явно отвести.

Разные звенья — разные модели: планирование и поиск крутятся на дешёвой быстрой голове, финальный текст пишет тяжёлая. Поэтому фраза «одна модель с поиском» — упрощение до предела. Точнее так: это агентный поисковый контур, в котором LLM-генератор — последнее звено, а не центр системы.

Для эксперимента это важно вот чем: эта пара изолирует вклад всего контура — планирования, многоканального поиска, курации контекста — при одном и том же генераторе. Чего она не разделяет, так это вклад отдельных звеньев: что дало больше — планировщик, поисковый агент или курация, — по этим данным не скажешь, нужны ablation-прогоны.

Как оценивали

Проблема сравнения таких систем не в моделях, а в оценке. Ответ, который блестяще объясняет инженерную логику, но ссылается на несуществующий пункт СП, — это хороший ответ или плохой? Смотря для чего. Для проекта, который пойдёт в экспертизу, — плохой.

Поэтому вместо «общего впечатления» — единая рубрика. Шесть критериев, каждый по пятибалльной шкале:

  • FA — фактическая корректность;

  • Comp — полнота ответа;

  • RG — корректность применения нормативной базы;

  • NRA — достоверность нормативных ссылок: каждое существенное утверждение должно подтверждаться корпусом;

  • PA — практическая применимость;

  • Safety — безопасность инженерных рекомендаций.

Итоговый балл:

WSigma=2cdot FA + 2cdot Comp + 1cdot RG + 2cdot NRA + 2cdot PA + 1cdot Safety quad (text{максимум }50)

У RG — критерия, который звучит как главный для нормативных задач, — вес вдвое меньше, чем у большинства осей: в максимуме 5 баллов из 50. Основную «доказательную» нагрузку несёт NRA с двойным весом. Это пригодится при чтении таблиц.

Три технических решения, без которых этой оценке нельзя было бы верить:

  • Судьи работали вслепую. Они видели только «Ответ A»…«Ответ F» — без имён систем. В инструкции прямо стояло: авторство неизвестно, не пытайтесь определить автора или модель. Мы отдельно проверили: ни в текстах ответов, ни в вердиктах судей имя ни одной системы не всплыло ни разу.

  • Судьи проверяли ссылки по корпусу. У каждого судьи был доступ к тому же корпусу из ~200 нормативных документов (СП, ГОСТ, СанПиН, федеральные законы), и инструкция требовала: нашёл в ответе ссылку — открой документ, найди пункт, сравни с утверждением. Оценка NRA ставится по результату этой проверки, а не по правдоподобности.

  • Итоговый балл считал скрипт, а не судья. Судья выставляет только шесть осей; WΣ вычисляется программно. Пересчёт по всем 3000 строкам совпал с формулой без единого расхождения. В ранней версии эксперимента мы просили судью писать сумму самому — и модели стабильно «прикидывали» её на глаз с ошибками.

Насчёт воспроизводимости самой проверки ссылок. Корпус зафиксирован: одни и те же ~200 документов в одних и тех же редакциях — и у системы, и у всех судей. Судья обязан перечислить проверенные документы и привести короткие цитаты из найденных пунктов; эти поля сохранены в каждом вердикте, так что путь «ссылка → документ → пункт» прослеживается. Чего здесь нет — внешнего автоматического верификатора цитат: проверка идёт силами самого судьи с доступом к корпусу. Верификатор появится уже в научной статье. Вердикты судей и скрипты пересчёта планируем опубликовать вместе с ней; пользовательские логи не публикуем.

Судьи: диагональ, которая нас почти обманула

Теперь неудобное. Один из пяти судей — DeepSeek-V4-Pro. Та же базовая модель, что пишет финальные ответы в нашей системе и отвечает соло в слоте B. То есть она оценивала в том числе тексты, порождённые ею же. Мы это не прятали — наоборот, именно отсюда началась самая интересная часть анализа.

Средний балл каждой системы у каждого судьи:

Система

DeepSeek

GPT

Sonnet

Opus

Gemini

SP-AI

43,3

43,0

43,2

43,0

42,6

GPT-5.5

38,8

41,3

38,1

41,4

41,4

Opus 4.8

35,3

35,6

36,4

39,2

38,5

V4-Pro соло

34,4

30,5

33,0

36,8

34,9

Gemini 3.1

31,3

29,3

31,1

34,8

34,5

Sonnet 5

30,4

31,7

32,3

35,3

35,1

Глаз сразу цепляется за диагональ: GPT ставит GPT-5.5 максимум среди генералистов, Opus даёт Opus 4.8 самую высокую оценку из всех судей, Sonnet чуть выше прочих оценивает Sonnet. Напрашивается вывод: каждый судья тянет за своих. Красиво, тревожно, отлично разошлось бы на цитаты.

Мы уже почти написали именно это. Потом посчитали строго — и вывод развернулся.

Сравнивать средние — неправильно: в них перемешаны качество ответов, щедрость судьи и его вкусы. Правильный тест такой: берём конкретный ответ и смотрим, насколько балл «родного» судьи отличается от того, что этому же ответу поставили остальные четверо. Качество, длина и тема ответа одни на всех — они сокращаются. Остаётся чистая надбавка «за своих».

Судья → своя система

Надбавка

Значимо?

Opus → Opus 4.8

+2,7

да (p < 0,001)

Opus → Sonnet 5 (свой вендор)

+2,8

да (p < 0,001)

Gemini → Gemini 3.1

+3,7

да (p < 0,001)

GPT → GPT-5.5

+1,2

нет

DeepSeek → своим двум слотам

+0,3

нет

Sonnet → Sonnet 5

−0,9

нет

Как считали: единица наблюдения — конкретный ответ. Надбавка — балл «родного» судьи минус среднее четырёх остальных по тому же ответу, в баллах шкалы WΣ (максимум 50); в каждой строке таблицы — 100 парных разностей. Значимость — одновыборочный t-критерий против нуля; порог с поправкой Бонферрони на восемь проверенных пар (α = 0,00625) все три значимые строки проходят, нижние границы их 95%-ных интервалов — выше +1,7 балла. 18 «казней» судьи Gemini из основного расчёта исключены; на полных данных картина та же, а знаково-ранговый критерий Уилкоксона на том же пороге воспроизводит тот же набор значимых и незначимых надбавок. Полные таблицы — в научной статье.

Самопредпочтение есть — но только у Opus и Gemini. У GPT, DeepSeek и Sonnet его нет: надбавка статистически неотличима от нуля, у Sonnet даже слегка отрицательная. Высокий балл GPT-5.5 под судьёй GPT — не лояльность, а качество: Opus и Gemini ставят GPT-5.5 практически столько же. А «подозрительная» диагональ в таблице средних — артефакт метода.

Две детали, которые нам особенно нравятся.

Первая: Sonnet — тоже Anthropic, но свою родню не завышает вообще. «Вендор предпочитает своих» — неверно; самопредпочтение оказалось свойством конкретной модели-судьи.

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

Мораль простая и неудобная: способ измерения меняет ответ. Наивные средние «показали» самопредпочтение там, где его нет, и спрятали там, где оно есть. Именно поэтому ни один вывод ниже не опирается на одного судью. А то, что наша система набирает ~43 балла у всех пяти судей — включая троих без самопредпочтения и всех чужих вендоров, — весит больше любой отдельной колонки.

Главный результат: контур против памяти

Все генералисты в эксперименте прилично понимают инженерную задачу: зачем нужна противодымная вентиляция, как определяется категория помещения. Ломаются они в момент, когда ответ должен стать доказуемым — со ссылками, которые открываются и подтверждаются.

Вот пара «тот же генератор ± контур» по всем шести осям (среднее по пяти судьям):

Критерий

SP-AI

V4-Pro соло

FA — фактическая корректность

4,35

3,21

Comp — полнота

4,17

4,09

RG — работа с нормативкой

4,32

2,95

NRA — достоверность ссылок

4,25

2,60

PA — практическая применимость

4,26

3,63

Safety — безопасность

4,65

3,94

Куда ушла прибавка — видно сразу. Полнота почти не сдвинулась: 4,09 → 4,17. Достоверность ссылок — с 2,60 до 4,25, работа с нормативкой — с 2,95 до 4,32, фактическая корректность — с 3,21 до 4,35.

И это не эффект длины: по медиане ответ V4-Pro соло (~2300 знаков) даже длиннее ответа системы с контуром (~2000). Проверили и жёстче: в 54 вопросах из 100, где ответ соло длиннее или равен по объёму, разрыв по достоверности ссылок никуда не девается — 4,09 против 2,60. Модель без контура пишет не меньше — она пишет недоказуемо.

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

Теперь против сильнейшего генералиста — GPT-5.5. Агрегат по всем пяти судьям:

Критерий

SP-AI

GPT-5.5

FA

4,35

4,01

Comp — полнота

4,17

4,14

RG

4,32

3,81

NRA

4,25

3,60

PA

4,26

4,19

Safety

4,65

4,51

В агрегате GPT-5.5 не берёт ни одной оси; ближе всего полнота — 4,14 против 4,17, фактически паритет. Разрыв же максимален на доказательных осях: NRA 3,60 против 4,25, RG 3,81 против 4,32. Единственный судья, у которого GPT-5.5 выигрывает полноту (4,48 против 4,23), — сам GPT; но даже он обе доказательные оси отдаёт системе с контуром.

Профиль ошибок: кто выдумывает, кто молчит

Сколько раз судьи помечали в ответах выдуманную ссылку (несуществующий документ или пункт) и отказ отвечать. Держим в голове: это пометки LLM-судей по единой инструкции; независимой ручной разметки пока нет. Ниже — данные четырёх судей без Gemini с его «казнями» (400 оценок на систему):

Система

Выдуманная ссылка

Отказ / нет ответа

V4-Pro соло

120

0

Gemini 3.1

108

0

Sonnet 5

64

3

GPT-5.5

19

2

Opus 4.8

16

1

SP-AI

8

7

Верхняя и нижняя строки — один и тот же генератор. Без контура — 120 пометок о выдуманных ссылках, с контуром — 8.

Но интереснее правая колонка. Система с контуром — единственная из шести, которая сколько-нибудь заметно отказывается отвечать: 7 раз против 0–3 у остальных. Когда система не находит нужный документ или пункт, она не сочиняет его содержание — а прямо говорит, что ответа нет, в худшем случае отвечает мимо вопроса. Правда, наблюдение сделано на выборке, где каждый вопрос покрыт корпусом, — стресс-тест на вопросах вне корпуса ещё впереди.

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

Чего контур не решает

Пределы видны в тех же данных.

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

Полнота — не наша сильная сторона: генералисты уровня GPT-5.5 пишут развёрнутее. Где-то это вкус, где-то реальный недобор контекста.

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

Поэтому главный для нас вопрос сместился с «какая LLM сегодня лучше» на «какая архитектура переживёт смену лучшей LLM». Генератор в контуре — заменяемое звено: выйдет модель сильнее — она встанет на его место, и контур станет лучше вместе с ней. У «голой» модели такого пути нет.

Это, собственно, и есть наш ответ на аргумент с той защиты. Гигантские инвестиции вложены в генераторы — и каждый их новый виток делает систему с контуром лучше, потому что генератор в ней заменяем: эти вложения работают на нас, а не против. А вот корпус, граф обязательных связей и поисковый агент под российскую нормативную базу «из коробки» не появятся ни при каких инвестициях в базовую модель — это доменная инженерия. Её вклад и измерен выше: 120 выдуманных ссылок против 8 на одном и том же генераторе. Тут кончается эксперимент и начинается интерпретация: защищённость бизнеса он напрямую не доказывает. Доказывает более узкое, но ключевое для этой интерпретации утверждение: существенная часть качества возникает вне генератора.

Ограничения эксперимента

Статья про проверяемость обязана быть проверяемой сама.

  • Судьи — LLM, а не инженеры. Оценки пока не валидированы против людей, поэтому корректно говорить «судьи расходятся между собой и в зависимости от метода измерения», но не «расходятся с инженерной истиной». Этот разрыв мы уже закрываем: вместе с экспертами в предметных областях готовим эталонные ответы по жёсткому протоколу — на каждый вопрос минимум два независимых ГИПа из национального реестра специалистов, слепая проверка (эксперт не знает, чей ответ оценивает), спорные случаи уходят третьему арбитру, целевая согласованность экспертов κ ≥ 0,6. Следующий раунд эксперимента пройдёт против этих эталонов и заодно покажет, насколько LLM-судьи вообще совпадают с живыми инженерами.

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

  • Наша система в среднем отвечает длиннее. Средняя длина — около 3800 знаков против 1200–2400 у остальных: примерно втрое к самому короткому (Opus) и вдвое к среднему. Разрыв создаёт длинный «хвост»: по медиане (~2000 знаков) она не выделяется. Длинный ответ легче выигрывает полноту и может вмещать больше подтверждённых ссылок, так что часть преимущества по суммарному баллу может объясняться длиной и потолком шкалы. Поэтому мы и не говорим «наша система лучшая»; корректная формулировка — «устойчиво надёжнее по доказуемости у всех судей». Ключевой вывод от длины не зависит: в контрольной паре ответы сопоставимы по объёму, а разрыв остаётся.

  • Судьи согласны между собой умеренно. Поэтому мы опираемся не на «судьи договорились», а на устойчивость выводов к смене судьи и метода.

  • Профиль ошибок — пометки судей, а не независимая разметка. Числа зависят от строгости судьи; это порядок величины, а не точный подсчёт.

  • Выборка одна. Сто вопросов, один корпус, одна предметная область, один прогон. Вопросы отобраны из логов нашего же сервиса: распределение тем отражает нашу аудиторию, а не отрасль в целом. И по критериям отбора каждый вопрос в принципе покрывается нашим корпусом — вопросы «мимо корпуса» в набор не включались, так что способность систем говорить «не знаю» на непокрытых темах этот эксперимент не измеряет.

Для нас главный вывод из этого списка не меняется — а каждая оговорка превращается в задачу на следующий эксперимент.

Что в сухом остатке

Вернёмся к вопросу, с которого всё началось: сможет ли топовая LLM ответить на вопросы по СП и ГОСТ? Сможет — и нередко разумно. Но между «разумно» и «доказуемо» — пропасть: у лучшего генералиста проседают именно доказательные оси, а один и тот же генератор набирает 120 пометок о выдуманных ссылках без поискового контура и 8 — с ним. На практике это та разница, из-за которой ответ либо можно нести в проект, либо надо перепроверять целиком.

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

И третий, неожиданный для нас самих: способ измерения меняет ответ. Мы почти опубликовали красивую историю про судей, которые «тянут за своих», — строгий парный тест показал, что самопредпочтение есть лишь у двух судей из пяти, и не у тех, на кого указывали средние. Если оцениваете LLM через LLM-судей, сравнивайте оценки одного и того же ответа, а не средние по колонкам: средние умеют красиво врать.

P.S. Методологическое ядро эксперимента — парный тест самопредпочтения, смешанные модели, автоматическая верификация цитат по корпусу — мы подробно разбираем в отдельной научной статье, которая сейчас готовится к публикации. А у самого эксперимента будет продолжение: эталонные ответы от экспертов в предметных областях уже в работе — следующий раунд будет не «судьи против судей», а «все системы против инженерной истины». Если интересна кухня — спрашивайте в комментариях.

Автор: SP-AI

Источник