Невидимая строка бюджета

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

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

Документация Docling показывает отдельные переключатели для OCR, распознавания структуры таблиц и диапазона страниц. FAQ Qdrant прямо указывает: даже запись точки с тем же содержимым через upsert помечает прежнюю версию как удалённую и вставляет новую. Это не означает, что «Qdrant дорогой»; это означает, что приложение не должно без причины отправлять неизменные данные на повторную обработку.

Сначала классифицируйте документы

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

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

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

Модельный расчёт, не рыночная цена

Предположим, у компании 1 000 документов в среднем по 8 страниц: 8 000 страниц. За месяц меняются 10% файлов, и их средний размер такой же. Ночная полная переработка затронет 8 000 страниц, а обработка только изменённых файлов — 800 страниц за один цикл. При одинаковой структуре это в десять раз меньше страниц на этапе разбора; если на каждую страницу приходится примерно одинаковое число фрагментов, меньше и задач векторизации.

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

Для своего бюджета замерьте отдельно машино-часы разбора текстовых и сканированных страниц, время OCR, число созданных фрагментов, время эмбеддингов, запись в индекс и трудозатраты на исправление ошибок. Умножьте эти удельные величины на ожидаемый поток новых и изменённых файлов. Считайте не только рубли на страницу, но и стоимость одного проверенного, актуального ответа: дешёвый индекс с неверной версией документа не приносит выгоды.

Где экономия превращается в ошибку

Инкрементальное обновление нельзя свести к «добавить новые векторы». Изменённый документ может иметь другое число фрагментов. Если старые фрагменты не вывести из активного поиска, RAG будет одновременно цитировать старую и новую редакции. Нужны идентификатор документа и версии, связь каждого фрагмента с источником, обновление индекса как управляемая операция и проверка результата до открытия версии пользователям.

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

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

Архитектура для малого бизнеса

Практический конвейер выглядит так: источник → учёт файла и контрольной суммы → маршрутизация по типу документа → преобразование и OCR по необходимости → разбиение → эмбеддинги → индекс с версией и правами → тестовые вопросы → публикация новой версии. Ошибки разбора направляйте в очередь ручной проверки. Держите исходник и воспроизводимые настройки обработки, чтобы можно было исправить ошибку или пересоздать индекс.

Локальный запуск уместен, если документы нельзя передавать наружу или вычислительная нагрузка предсказуема. Он не отменяет цену CPU/GPU, диска, резервирования и сопровождения. При нерегулярной загрузке документов выделенный ускоритель может простаивать; сначала измерьте загрузку и задержку, затем решайте, нужен ли отдельный сервер. Для первого пилота может хватить пакетной обработки ночью, если бизнесу не требуется мгновенная публикация каждого обновления.

Что проверить за две недели

Возьмите одну папку или раздел знаний, заранее отметьте владельцев и частоту изменений. Запустите два прогона на копии данных: полный и только по изменённым файлам. Сравните время по стадиям, число ошибок OCR, размер индекса, актуальность ответов и качество на одинаковом наборе проверочных вопросов. Измените один документ и убедитесь, что ответ ссылается именно на новую версию; верните старую — проверьте откат.

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

Первоисточник по поведению обновления индекса: FAQ Qdrant. Возможности обработки PDF: документация Docling. Независимый контекст о качестве подготовки документов: исследование From PDF to RAG-Ready. Числовой пример выше — модель редакции, не результат конкретной компании.