К содержимому
MoranaLabs
Enterprise / Инжиниринг — 02 июн. 2026 г.

Приватный RAG-ассистент по инженерной базе on-prem 

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

1,8 с
медианная латентность ответа на локальном GPU
0
утечек данных наружу: инференс и индекс в периметре
−68 %
времени на поиск фрагмента против ручного
стенд · запускается здесь

Стенд: нашлось и сослался — разные события

Хвост поиска тут теряется на фоне генерации, и оптимизировать надо не его. А между «фрагмент в топе» и «ссылка в ответе верна» есть разрыв, и он посчитан.

НИЖНЯЯ ГРАНИЦА ВЫДАЧИ 93 %обход 32обход 384100 %75 %
recall@10 p99 поиска: от 1,0 до 8,4 мс
4 803 байт на вектор: 1024 измерений по 4 Б плюс 192 Б ссылок графа плюс накладные структуры
представление вектора

как обучено, без потерь

94,6 %
recall@10: доля верных соседей в выдаче
55 ГБ
памяти под индекс · 2 шардов по 48 ГБ
1,78 с
полный ответ: поиск плюс генерация
94,2 %
ответов с корректной ссылкой на источник
Хвост поиска сейчас 2,66 мс из 1 783 мс полного ответа — это 0,1 %. Ускорять индекс тут бессмысленно: время живет в генерации. И между «нужный фрагмент нашелся» (94,6 %) и «в ответе стоит верная ссылка» (94,2 %) есть зазор — модель иногда берет не тот из найденных.

Объем документации и время генерации синтетические, порядок — инженерный архив предприятия на своем железе. Разрыв между попаданием и ссылкой — настоящий эффект.

Ответ без ссылки на пункт бесполезен

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

Поэтому 94,2% — это доля ответов, где ссылка на источник ведет на фрагмент, реально содержащий утверждение. Проверялось вручную по эталонному набору вопросов.

Право сказать «не знаю»

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

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

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

Как режется техническая документация

Стандартная нарезка текста на куски фиксированной длины уничтожает инженерный документ. Таблица разрывается посередине, требование отделяется от условий применения, а пункт 4.3.2 теряет связь с пунктом 4,3, который задает контекст.

Что пришлось сделать:

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

Эта часть работы неблагодарная и дает больше всего процентов качества.

Права доступа фильтруют до поиска

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

Права применяются на этапе поиска, до передачи фрагментов в модель. Так исключен сам сценарий, при котором закрытый текст попадает в контекст генерации и просачивается в ответ пересказом. Каждый запрос выполняется от имени конкретного пользователя.

Полтора-два секунды и почему это потолок

Медианные 1,8 секунды на локальном GPU складываются из поиска по индексу, переупорядочивания найденного и собственно генерации. Основную часть занимает генерация, и она упирается в размер модели, которая помещается в имеющееся железо.

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

Как это вообще измерялось

Без набора эталонных вопросов проект RAG превращается в спор о вкусе. Мы собрали с инженеров заказчика список реальных вопросов, которые они задают базе, — включая неудобные, с опечатками, жаргоном и внутренними сокращениями.

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

Почему все внутри периметра

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

Индекс, модель и весь инференс живут на серверах компании. Наружу не уходит ни запрос, ни фрагмент документа.

Границы

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

Направление целиком — локальный RAG, поисковый слой — векторный поиск, оценка бюджета — калькулятор.

94,2 %
ответов с корректной ссылкой на источник
  • LLM
  • RAG
  • on-prem
  • inference opt
  • grounding
заказчик

Enterprise / Инжиниринг · детали под NDA

СтендПроверить расчет руками ↑

Те же цифры, но с ручками: порог, нагрузка, объем.

НаправлениеLLM и RAG-ассистенты on-prem

Что мы делаем в этом направлении и сколько это стоит.

Комментарий инженера

Самый неприятный разговор на проекте был про отказы. Заказчик хотел, чтобы ассистент всегда что-то отвечал: молчание выглядело как поломка. Мы принесли пять примеров, где модель без ограничений выдумала правдоподобный пункт регламента, которого в базе нет, и один из них касался допусков. После этого право системы сказать «этого тут нет» перестало обсуждаться и стало пунктом приемки.
инженер LLM-контуров · MoranaLabs
Другие кейсы
— заявка

Опишите задачу  ответим как инженеры. 

Оставьте имя и Telegram — остальное обсудим. Без брифов на 40 слайдов и звонков по три раза.

Отвечаем за пару часовотвечает инженер, а не отдел продажNDA до передачи данных

Любой один канал — куда удобнее, туда и ответим

Или сразу написать в Telegram

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