Перейти к содержимому
// Carbonfay
EN

исследования

Инженерия контекста: почему RAG ломается в проде

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

RAG почти всегда хорошо выглядит на демо. Берут десяток документов, задают вопросы, на которые в этих документах есть прямые ответы, получают точные цитаты. Решение принимают по этому демо. Через месяц в проде та же система отвечает уверенно и неправильно, и никто не может объяснить почему. Дело не в модели — дело в контексте, а контекст почти никогда не проектируют как инженерную систему.

«Векторная база с промптом» — это прототип

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

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

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

Контекст не ограничен. «Чтобы не терять качество» в промпт кладут всё найденное. Это бьёт одновременно по стоимости и по качеству: на длинном зашумлённом контексте модель хуже выделяет существенное, чем на коротком точном.

Из чего состоит работающий RAG

Событийная переиндексация. Индекс пересобирается по событию изменения источника, а не по расписанию. Источник изменился — соответствующая часть индекса обновилась. Это убирает целый класс «уверенно устаревших» ответов, который иначе невозможно отладить, потому что он невоспроизводим.

Гибридный поиск и переранжирование. Плотный (векторный) поиск находит кандидатов по смыслу, лексический отсекает «похоже, но не то», переранжирование расставляет по релевантности к конкретному запросу. В контекст идёт не топ-N по косинусной близости, а переранжированный минимум.

Бюджет контекста. Для шага задан потолок токенов. Это заставляет систему принимать решение «что из найденного действительно нужно», а не перекладывать его на модель, подсовывая ей всё.

Оценка качества. Без неё RAG деградирует незаметно: метрики релевантности и обоснованности (насколько ответ опирается на поданный контекст, а не на память модели), регрессионные наборы вопросов с известными ответами, трассировка — какой именно фрагмент повлиял на ответ. Если нельзя ответить на вопрос «почему система так ответила вчера», значит, отлаживать её нельзя в принципе.

Где обычно проходит граница

Несколько практических наблюдений:

  • Если на демо качество отличное, а в проде «иногда врёт» — почти всегда виноват не retrieval-алгоритм, а свежесть индекса и отсутствие переранжирования. Это первое, что нужно проверять, а не менять модель.
  • «Добавим больше контекста» чаще ухудшает, чем улучшает. Точность ответа сильнее зависит от того, насколько контекст релевантен, чем от того, насколько он полон.
  • Обоснованность важнее беглости. Ответ, который честно говорит «в источниках этого нет», полезнее уверенного домысла — но это поведение нужно специально проектировать и проверять, само оно не появится.

Вывод

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

Следующий шаг

Спроектируем слой автоматизации на ИИ под ваши процессы.

DBCV