Recall@5 на уровне 0.14. Именно с этой позорной метрикой наша система поиска по корпоративной базе знаний врезалась в реальность на одном крупном машиностроительном заводе. В Morana Labs мы специализируемся на индустриальном ИИ: пишем нейросети под edge-вычисления, поднимаем инференс строго на железе клиента без выноса данных в облако, вытягиваем суровый high-load на производстве. Казалось, пайплайн извлечения текста был вылизан до блеска. Движки распознавания, сегментация через специализированные модели, эвристики склейки абзацев по пространственным координатам. Но реальность ударила под дых.
Примерно восемьдесят процентов корпоративных PDF на заводе или в проектном институте вообще не содержат текста в классическом понимании. Это спецификации с многоуровневыми шапками. Это ГОСТ-таблицы на пять разворотов, где столбцы сливаются из-за смещения при сканировании. Это старые архивные чертежи с рукописными пометками, штампами и сложным пространственным макетом. У инженерной документации нет привычного паттерна чтения слева направо и сверху вниз. Классический пайплайн превращает всё это в нечитаемый информационный фарш.
Мы смотрели на логи и физически ощущали, как деградируют данные. Рассыпаются колонки. Связь между выноской на схеме и её текстовым описанием в углу листа уничтожается при сериализации в одномерную строку. Модель анализа макета радостно склеивает маркировку детали из левого верхнего угла с датой утверждения из правого нижнего, просто потому что их координаты случайно оказались на одной горизонтали. Векторная база получает на вход семантическую кашу. Эмбеддинги отражают этот хаос. Точность retrieval падает на дно, и большая языковая модель в роли ассистента начинает уверенно врать инженерам, подсовывая характеристики от чужого узла. Доверие к системе сгорает за пару дней.
Использовать готовые облачные vision-API мы не имели права. Это тяжелая промышленность. Существует 152-ФЗ, коммерческая тайна, строгий изолированный контур, паранойя службы безопасности и реальные риски санкционных блокировок API в любой момент. Абсолютно всё обязано крутиться на локальных серверах компании. Мультимодальный RAG без OCR на ColPali: поиск по чертежам, ГОСТ-таблицам и сканам как по картинке (on-prem) стал для нас не академическим бенчмарком из свежей статьи, а единственным инструментом вытаскивания проекта из болота.
Сначала мы честно пытались чинить распознавание. Тюнили параметры, собирали датасеты и дообучали кастомные детекторы объектов для сложных табличных структур. Написывали километры эвристик на Python. Дохлый номер. Как только вы пытаетесь втиснуть сложный двумерный визуальный контекст в линейную строку, вы неизбежно теряете смысл. Ошибка каскадируется на каждом этапе. Одна неверно распознанная цифра в таблице допусков на вал — и весь извлеченный документ становится токсичным мусором. Мы поняли главное. Читать инженерные документы — фатальная ошибка. На них нужно смотреть.
В этот момент мы радикально перешли на концепцию page-as-image. Мы хирургически вырезали весь этап предварительного распознавания из критического пути. Страница просто рендерится как растровое изображение и отправляется напрямую в визуальную модель. Технология late interaction на базе архитектур вроде ColPali ломает привычный текстовый флоу. Модель кодирует страницу не одним усреднённым плотным вектором, где смысл мелких деталей растворяется в общем шуме, а сохраняет пространственную сетку из сотен патчей.
Механика процесса проста алгоритмически, но безжалостна к ресурсам. Текстовый запрос пользователя разбивается на токены. Каждый токен сопоставляется с каждым визуальным патчем документа через операцию MaxSim. Мы начали делать поиск по PDF с таблицами без OCR напрямую, матча текстовые векторы запроса с визуальными зонами. RAG по чертежам и сканам внезапно ожил. Пользовательский запрос о параметрах конкретной шестерни находил нужный старый скан просто потому, что модель видела контекст таблицы в штампе визуально, а не пыталась безуспешно распарсить её ячейки.
Но за эту визуальную магию пришлось платить. Как только мы выкатили этот пайплайн в тестовый контур, нас накрыло физикой железа. Мультивекторный индекс — невероятно прожорливая тварь. В классическом подходе страница сжимается в один вектор на тысячу размерностей. В архитектуре позднего взаимодействия одна страница генерирует тысячу векторов. Размер хранилища раздувается в геометрической прогрессии. Оперативная память серверов закончилась мгновенно.
Мы поймали классический взрыв индекса. Сто тысяч сложных многостраничных документов превратились в тяжелейшие терабайты сырых эмбеддингов. Хуже того, операция MaxSim требует доступа к самим векторам, а не только к графу приблизительного поиска. Векторный движок начал захлебываться при попытке посчитать сходство токенов запроса с десятками миллионов патчей в реальном времени. Latency на единичный запрос пробил потолок в двенадцать секунд. Инференс встал. Для интерактивного ИИ-ассистента это смерть. Ни один инженер не будет ждать двенадцать секунд на каждый вопрос.
Пришлось жестко перекраивать архитектуру поиска и строить гибридную систему. Мы внедрили строгую маршрутизацию документов на этапе индексации. Текстовые регламенты, приказы и юридические договоры без сложной верстки пошли по старой дешевой ветке: легкое распознавание, инвертированный индекс, стандартный плотный эмбеддинг. А вот сканы, чертежи и спецификации детектировались легковесным классификатором и отправлялись в тяжелый мультимодальный контур. Эта матрица типов документов позволила остановить безумный рост базы, не теряя качества там, где оно критически важно.
Чтобы погасить дикое latency на визуальных запросах, мы выстроили двухступенчатый пайплайн извлечения. Сначала быстрый отбор сотен кандидатов по метаданным и усредненным глобальным векторам страниц. Никакого MaxSim на этом этапе. Затем в дело вступает жесткий visual-реранкер, который берет топ-20 документов и прогоняет их через полные мультивекторные матрицы для вычисления точного скора. Тюнинг параметра top-k стал нашей ежедневной рутиной на несколько недель. Берешь слишком малую выборку — теряешь полноту поиска. Берешь слишком много — графические процессоры уходят в глубокий своп, и система повисает.
Развертывание мультимодальных систем в закрытом контуре требует предельно конкретных вычислительных мощностей. Геймерскими картами или слабыми серверами тут не обойтись. Шина PCIe быстро становится узким горлышком при перекачке гигабайтов тензоров между памятью и GPU. Идеальные стенды мы собирали на базе ускорителей архитектуры Ampere с огромным объемом локальной видеопамяти. Когда их было невозможно достать из-за паралича логистики поставок, мы переписывали инференс под кластеры из видеокарт поколения Ada Lovelace. Сейчас мы активно портируем узкие места векторных операций под китайские тензорные ускорители. Нативные библиотеки там работают со своими особенностями распределения памяти, но реальность такова: западное серверное железо доставать всё больнее, а заводы непрерывно требуют внедрений.
Цифры после стабилизации этой архитектуры говорят сами за себя. Полнота поиска на нашей валидационной выборке сложной проектной документации подскочила с 0.14 до уверенных 0.89. Система научилась вытаскивать точные параметры деталей прямо из рукописных ячеек, отрендеренных в PDF с разрешением в двести точек на дюйм. Инженеры конструкторского бюро перестали материться на галлюцинации и начали экономить реальные часы на поиске актуальной версии листа согласований.
Наш опыт выковал жесткую спецификацию on-premise стенда для мультимодального RAG по документам. Для комфортного поиска по визуальным архивам с пропускной способностью около десяти тяжелых запросов в секунду вам потребуется сервер минимум с четырьмя производительными картами уровня L40S, не менее полутерабайта оперативной памяти под агрессивное кэширование векторного движка и максимально быстрые корпоративные NVMe-накопители для шардинга раздутого индекса.
Если ваша корпоративная база данных наполовину состоит из графиков, схем и чертежей, хватит насиловать системы извлечения текста. Остановите бессмысленное сжигание ресурсов. Запускайте пилот RAG по визуальной документации (llm-rag-onprem) и работайте со страницами как с изображениями, пока остальной рынок продолжает тщетно парсить растровые таблицы в кривой текст.