Языковая модель в изолированном контуре банка
Ответ по внутренним регламентам собирается поиском внутри контура: перелистывать письма регулятора уже незачем
Проверяется: расчёт железа и регламент эксплуатации
Финансовый секторРаботаем по NDA
У банка есть массив внутренних документов — регламенты, методики, договоры, письма регулятора, — по которому сотрудники ищут ответы вручную, и понятный соблазн отдать этот поиск внешнему ИИ-сервису. С марта 2026 обработка информации ограниченного доступа во внешних облачных ИИ-сервисах запрещена, поэтому задача превращается в инженерную: тот же сценарий нужно собрать на своём железе, с разграничением прав и журналом, который предъявляется проверяющему.
Что съедает срок и бюджет на самом деле
Почти никогда — не модель. Ниже места, из-за которых такие проекты встают, и что мы с каждым делаем.
Планирование железа считается не по размеру модели, а по памяти видеокарты
веса плюс KV-cache на каждого одновременного пользователя. Длинный документ в контексте и десяток параллельных запросов упираются в память раньше, чем в вычисления. Квантование снижает требования, но меняет ответы, поэтому варианты сравниваются на одном и том же наборе вопросов, а не на впечатлении.
Разграничение прав обязано применяться на этапе отбора фрагментов, до того как текст попал в контекст модели
Фильтрация уже готового ответа защитой не является: закрытый фрагмент к этому моменту прочитан и может быть пересказан своими словами без цитаты.
Журнал сам становится защищаемым ресурсом
В запрос и в контекст попадают куски документов и персональные данные, значит у журнала нужны собственное разграничение доступа, срок хранения и формат выгрузки — иначе средство контроля превращается в новый канал утечки.
Изолированный контур означает отсутствие доступа к репозиториям моделей и пакетов
Веса, образы и обновления переносятся через контролируемый шлюз по регламенту, а развёртывание должно воспроизводиться с нуля без интернета — иначе первое же обновление останавливает систему.
Ограничение, которое определяет решение
Информация ограниченного доступа не обрабатывается во внешних облачных ИИ-сервисах — запрет действует с марта 2026, и он определяет здесь всё остальное: инференс только на инфраструктуре банка, состав журналируемых событий и порядок разграничения берутся из требований 152-ФЗ, приказов ФСТЭК России № 17 и № 21, а для банковского контура — из требований ГОСТ Р 57580. Аттестация объекта информатизации и оценка соответствия — лицензируемые работы, их выполняет организация с лицензией ФСТЭК; сторона, которая разворачивает систему, готовит для неё документы, но её не подменяет.
Как проверить, что работа сделана
Приёмка идёт четырьмя проверками, и все они выполняются руками сотрудников банка. Первая — качество ответов на согласованном заранее наборе из 50–100 реальных вопросов с эталонными ответами и ссылками на документ и страницу.
Вторая — разграничение: те же вопросы задаются от лица учётных записей с разными правами по документам, к которым доступа нет; правильным результатом считается отсутствие ответа, а не пересказ закрытого фрагмента. Третья — журнал: по случайно выбранному обращению восстанавливается, кто и когда спросил, какой был запрос и какие фрагменты попали в контекст.
Четвёртая — изоляция: на стенде физически отключается внешний канал, после чего система должна продолжать работать, а установка — воспроизводиться из переданных скриптов.
О чём спросить любого подрядчика
- Спросите прямо, на каком шаге применяются права доступа.
- Ответ «модель отфильтрует лишнее» или «настроим фильтр на выходе» означает, что закрытый документ всё равно попадёт в контекст.
- Спросите, что именно пишется в журнал, кто имеет к нему доступ и сколько он хранится — если журнал не описан как отдельный защищаемый ресурс, к нему не готовились.
- Попросите объяснить, откуда в изолированном контуре берутся веса модели и пакеты и как выглядит развёртывание с нуля без интернета.
- Уточните, остаются ли после проекта закрытые модули, ключи или лицензии, без которых систему нельзя перезапустить, — это условие имеет смысл записать в договор.
- И отдельно: подрядчик без лицензии ФСТЭК не имеет права выполнять аттестацию, и он должен сказать это сам, а не растворять в формулировке «обеспечим соответствие требованиям».
Порядок работ по этапам
На каждом этапе назван результат, который остаётся у заказчика. На проверке — признак, по которому работу не приняли бы.
- Обследование контураОпределили состав базы — внутренние регламенты, распоряжения, письма регулятора — и с подразделением безопасности зафиксировали, что за пределы контура не уходит ничего. Собрали профиль обращений: какие подразделения спрашивают, какой длины документы и сколько запросов ожидается одновременно.
- Расчёт конфигурацииКонфигурацию считали от памяти видеокарт и числа одновременных запросов — отсюда размер модели, длина контекста и число параллельных сессий. Поиск и инференс развели по разным службам, а права применили на этапе отбора фрагментов, до того как текст попадёт в контекст модели, а не фильтрацией готового ответа.
- Развёртывание в контуреПодняли инференс на GPU-сервере заказчика, затем индекс с гибридным поиском по регламентам и письмам, затем слой прав и веб-интерфейс. На стенде смотрели поведение при одновременных обращениях и при выгрузке моделей из памяти.
- Проверка доступаПрогнали вопросы, составленные методологами, и отдельно проверку прав: под учётной записью без доступа к документу его фрагмент не должен появиться ни в ответе, ни в ссылках. Единственное такое попадание считалось провалом и возвращало систему на доработку; ответ без ссылки на пункт регламента тоже не приняли бы.
- Обучение администраторовПередали развёрнутую систему, расчёт железа и регламент эксплуатации и переноса моделей. Администраторы научились заводить новую модель, пересобирать индекс и разбирать журнал обращений сами.
Как это устроено внутри
Контур собран из трёх служб: шлюз на FastAPI, поисковый узел и инференс на vLLM, поднятый на GPU-сервере заказчика. Права применяет поисковый узел — фильтр по группам пользователя из LDAP уходит прямо в запрос к OpenSearch и pgvector, поэтому закрытый фрагмент не доходит до сборки контекста, а не вырезается из готового ответа. Запросы к картам выстроены в Redis Streams с ограничением числа одновременных генераций: прямая раздача на карту при всплеске упирается в память под KV-кеш, а очередь удерживает лишние запросы вместо отказа. Конфигурация памяти под модель и предельная длина контекста зафиксированы в compose-файле; при перезапуске узла очередь сохраняется, незавершённые запросы берутся заново, метаданные документов и журнал обращений лежат в PostgreSQL.
- Python
- FastAPI
- PostgreSQL
- OpenSearch
- Redis Streams
- Docker Compose
- vLLM
- pgvector
- LDAP
Похожая задача у вас?
Разберём её на созвоне за 40 минут: назовём объём работ, ограничения контура и по каким числам вы будете принимать результат. Если задача не наша — скажем прямо.