Инженерия ИИRAG · Поиск по документам · Инженерия LLM

RAG-система: что это, когда она нужна и где ломается

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

Что такое RAG простыми словами

RAG (retrieval-augmented generation, генерация с извлечением) связывает поиск и языковую модель. Прежде чем ответить, система находит в вашей базе фрагменты, которые относятся к вопросу, и кладёт их модели в контекст. Модель отвечает, опираясь на найденное.

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

Когда RAG нужен, а когда нет

RAG оправдан, когда знание живёт в документах и меняется: регламенты, договоры, техническая документация, база знаний поддержки, история проектов. Документ обновили, и система сразу отвечает по новой редакции, без переобучения.

RAG не нужен и только добавит сложности, если:

Как устроена RAG-система

Минимальный работающий контур состоит из шести частей, и отказать может каждая.

  1. Сбор документов: выгрузка из хранилищ, почты, вики, файловых шар. На этом же шаге решают, что делать со сканами и таблицами.
  2. Нарезка на фрагменты: документ режут на куски, которые модель получит целиком. Слишком мелкие теряют смысл, слишком крупные размывают поиск.
  3. Векторизация: каждый фрагмент превращается в набор чисел, который отражает смысл, и попадает в векторную базу.
  4. Поиск: вопрос превращается в такой же вектор, и база возвращает ближайшие фрагменты. Хорошие системы добавляют к этому обычный полнотекстовый поиск по терминам.
  5. Сборка контекста: отобранные фрагменты фильтруют, переупорядочивают и складывают в промпт вместе с инструкцией.
  6. Генерация с цитированием: модель отвечает и указывает, на каких фрагментах основан ответ.

Где RAG ломается на реальных документах

Нарезка

Самая частая причина плохих ответов. Если регламент разрезан посреди пункта, фрагмент теряет условие применения, и модель отвечает уверенно и неверно. Нарезка должна следовать структуре документа: разделам, пунктам, таблицам. Резать по фиксированному числу символов нельзя.

Таблицы, сканы и приложения

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

Версии и дубликаты

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

Смысл против терминов

Векторный поиск хорошо понимает переформулировки и плохо понимает точные обозначения: артикулы, номера ГОСТов, названия версий. Помогает гибридный поиск, где векторный и полнотекстовый работают вместе и их результаты объединяются.

Права доступа

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

Как понять, что система работает

Ощущение «вроде отвечает неплохо» приёмкой не считается. Нужен набор вопросов с заранее известными правильными ответами и ссылками на источник. Его собирают вместе с экспертами предметной области до запуска и по нему измеряют то, что действительно важно:

Поиск и генерацию меряют по отдельности, потому что лечатся они по-разному. Если ошибка в поиске, правка промпта ничего не даст, и наоборот. Без такого разделения улучшать систему приходится наугад.

RAG, дообучение или граф знаний

Три подхода решают разные задачи, и их часто путают.

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

С чего начать

  1. Возьмите один процесс, где вопросы повторяются и у ответа есть измеримая цена: поддержку, подбор по документации, проверку договоров.
  2. Соберите 30–50 реальных вопросов с эталонными ответами. Это самая ценная работа этапа, и целиком отдать её подрядчику нельзя.
  3. Соберите прототип на ограниченном наборе документов и проверьте его на своих вопросах.
  4. Расширяйте корпус только после этого. Плохую систему на большом корпусе отлаживать в разы дороже.

Частые вопросы

Чем RAG отличается от обычного поиска по документам?

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

Можно ли построить RAG-систему в закрытом контуре?

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

Сколько документов нужно, чтобы это имело смысл?

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

Почему система иногда отвечает уверенно и неправильно?

Языковая модель формулирует ответ из того, что ей передали. Если поиск принёс не тот фрагмент или фрагмент обрезан посреди условия, недостающее модель достроит сама. Помогают качественная нарезка и поиск, обязательная ссылка на источник и умение отказаться от ответа.

Чем мы помогаем по этой теме

Читать дальше

Разберём вашу задачу

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

Новые разборы в TelegramНаписать на hello@xteam.pro