RAG (поиск с дополнением генерации)
Без RAG большая языковая модель ограничена своими знаниями на момент обучения и склонна выдумывать факты. С RAG она перестаёт пытаться запомнить мир и работает как «языковой процессор» для документов, которые ей подкладывают.
Как устроен RAG
- Документы заранее разбиваются на куски (chunks) и переводятся в эмбеддинги — векторные представления.
- Векторы хранятся в векторной базе данных с индексом для быстрого поиска по близости.
- На запрос пользователя строится его эмбеддинг.
- Из базы достаются N самых близких кусков.
- Эти куски вместе с вопросом отправляются в LLM в виде контекста.
- Модель отвечает, опираясь на переданные документы.
Где сложнее всего
- Качество разбивки документов на куски (chunking).
- Качество эмбеддингов и поискового индекса.
- Правильное оформление контекста в промпте: ссылки на источники, защита от противоречий.
- Отладка случаев, когда поиск не нашёл нужный документ и модель «выдумывает» ответ.
Когда применять и когда нет
Применять
- Нужен ассистент по вашим документам: продуктовая документация, регламенты, поддержка
- Информация меняется и её нельзя «зашить» в модель
- Важна возможность сослаться на источник ответа
Не применять
- Задача чисто стилистическая или генеративная и не требует фактических знаний
- База знаний помещается в обычное контекстное окно и можно подать её целиком
- Документы очень разнородные и плохо структурированы — сначала стоит навести порядок в источниках
Примеры применения
В банке внедряют RAG поверх внутренних регламентов и обучающих материалов. Сотрудник в чате спрашивает: «какой лимит на снятие наличных по карте премиум-уровня?». Система находит в базе пару нужных пунктов регламента, подаёт их модели, и она отвечает: «Согласно регламенту X (раздел 4.2), лимит составляет ... рублей в сутки; для лимита в месяц см. раздел 4.3». При этом в ответе видны конкретные ссылки на разделы — сотрудник может перепроверить.
Часто задаваемые вопросы
Факты в базе можно менять прямо сейчас, без переобучения модели. К тому же RAG позволяет показать пользователю источник ответа, что важно в задачах поддержки, юридических, медицинских. Тонкая настройка лучше подходит для стиля и поведения, а не для фактических знаний.
Можно, и иногда это лучшее решение: если задача сводится к «найди и покажи документ», LLM сверху может только добавить риск галлюцинаций. LLM осмыслен, когда нужно собрать ответ из нескольких документов, переформулировать или сделать вывод.