Ответ без ссылки на пункт бесполезен
Инженерный ассистент проваливает задачу не тогда, когда ошибается, а тогда, когда звучит уверенно и не дает проверить себя. Специалист, который получил формулировку без указания документа, раздела и пункта, все равно пойдет искать первоисточник — и потратит то же время, что и без ассистента.
Поэтому 94,2% — это доля ответов, где ссылка на источник ведет на фрагмент, реально содержащий утверждение. Проверялось вручную по эталонному набору вопросов.
Право сказать «не знаю»
Языковая модель по умолчанию склонна отвечать всегда. В инженерном контуре это опаснее молчания: правдоподобный ответ про допуск или регламент, которого нет в базе, доходит до реальной работы.
Мы выстроили три заслона. Первый — порог по релевантности найденных фрагментов: если ничего похожего в базе нет, генерация не запускается вообще. Второй — жесткое требование к формату: каждое утверждение в ответе сопровождается ссылкой, ответ без ссылок бракуется автоматически. Третий — проверка ответа на опору в найденных фрагментах: то, чего в них нет, до пользователя не доходит.
«В базе знаний этого нет, ближайшее по смыслу — раздел такой-то» — это правильный ответ системы, и его пришлось отдельно защищать перед заказчиком, который ждал разговорчивого помощника.
Как режется техническая документация
Стандартная нарезка текста на куски фиксированной длины уничтожает инженерный документ. Таблица разрывается посередине, требование отделяется от условий применения, а пункт 4.3.2 теряет связь с пунктом 4,3, который задает контекст.
Что пришлось сделать:
- резать по структуре документа, а не по количеству символов: раздел, пункт, подпункт;
- таскать за каждым фрагментом его иерархию заголовков — так модель понимает, о чем вообще речь;
- держать таблицы целиком, даже когда они длинные;
- хранить исходную нумерацию пунктов, чтобы ссылка была человекочитаемой.
Эта часть работы неблагодарная и дает больше всего процентов качества.
Права доступа фильтруют до поиска
В инженерной базе есть документы, доступные не всем: проектная документация по конкретному заказчику, внутренние регламенты, коммерческие условия. Ассистент, который цитирует их всем подряд, — это утечка, оформленная как удобный сервис.
Права применяются на этапе поиска, до передачи фрагментов в модель. Так исключен сам сценарий, при котором закрытый текст попадает в контекст генерации и просачивается в ответ пересказом. Каждый запрос выполняется от имени конкретного пользователя.
Полтора-два секунды и почему это потолок
Медианные 1,8 секунды на локальном GPU складываются из поиска по индексу, переупорядочивания найденного и собственно генерации. Основную часть занимает генерация, и она упирается в размер модели, которая помещается в имеющееся железо.
Здесь честный размен, о котором стоит говорить до старта: модель побольше отвечает точнее и заметно медленнее, модель поменьше — наоборот. На инженерной базе выигрывает не размер модели, а качество поиска: правильно найденный фрагмент вытягивает ответ даже у скромной модели.
Как это вообще измерялось
Без набора эталонных вопросов проект RAG превращается в спор о вкусе. Мы собрали с инженеров заказчика список реальных вопросов, которые они задают базе, — включая неудобные, с опечатками, жаргоном и внутренними сокращениями.
По этому набору идет регулярный прогон: доля ответов с корректной ссылкой, доля отказов, доля выдумок. Набор живет вместе с базой и пополняется. Это же дает возможность обновлять модель или менять индекс без страха: любое изменение прогоняется по эталону.
Почему все внутри периметра
Инженерная база — это интеллектуальная собственность и договорные обязательства перед заказчиками. Отправка ее фрагментов во внешний сервис в качестве контекста запроса означает передачу этих данных третьей стороне, что бы ни было написано в пользовательском соглашении.
Индекс, модель и весь инференс живут на серверах компании. Наружу не уходит ни запрос, ни фрагмент документа.
Границы
- Ассистент не заменяет расчет. Он находит методику и параметры, считает инженер.
- Плохо работает по чертежам, если они лежат картинками без текстового слоя, — тут нужна отдельная работа с графикой.
- Не решает проблему бардака в базе. Если один и тот же регламент лежит в трех версиях без дат, ассистент будет честно цитировать все три.
- Требует владельца базы со стороны заказчика. Технический контур без ответственного за содержание вырождается за полгода.
Направление целиком — локальный RAG, поисковый слой — векторный поиск, оценка бюджета — калькулятор.