Перетяжка, Премия ТПрогер, 13.11
Перетяжка, Премия ТПрогер, 13.11
Перетяжка, Премия ТПрогер, 13.11

Что такое RAG: почему о нём говорят все ML-инженеры, с чего начать и что простое можно сделать

RAG стал настоящим трендом среди ML-инженеров — и не зря. Он позволяет моделям не просто генерировать текст, а опираться на актуальные документы, инструкции и базы знаний. Это снижает количество «галлюцинаций» и делает ответы точными. Рассказываем, как он работает, чем отличается от обычной языковой модели, как собрать простой RAG-пайплайн и использовать его в своих проектах.

1К открытий4К показов
Что такое RAG: почему о нём говорят все ML-инженеры, с чего начать и что простое можно сделать

Зачем нужен RAG

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

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

RAG — это идеальная основа для персональной поисковой системы, чат-ботов с ответами на типовые вопросы, ИИ-консультантов на сайте и агентов, которым нужна не общая информация из интернета, а конкретные данные и внутренняя база знаний.

Как устроен RAG: пайплайн и компоненты

Что такое RAG: почему о нём говорят все ML-инженеры, с чего начать и что простое можно сделать 1
Схема RAG \ Источник: Amazon (перевод)
  1. Сначала готовим данные — всё то, чего нет в обучающих данных модели: документация, отчёты, письма, базы знаний, PDF и т.д. Чтобы RAG заработал, большие тексты нужно превратить в удобные для LLM-модели кусочки. На этапе индексации документы делятся на чанки — небольшие фрагменты: абзацы или предложения. Каждый чанк конвертируется в эмбеддинг — вектор, где зашит его смысл. Эти фрагменты собираются в специальное векторное хранилище — библиотеку знаний, которую может воспринять языковая модель.
  2. Следующий этап (retrieval) — поиск релевантных документов. Когда пользователь вводит запрос, система тоже превращает этот запрос в вектор и ищет в базе похожие по смыслу фрагменты.
  3. Далее модель подставляет найденную информацию к запросу пользователя (augmentation). Результат с дополнительным контекстом из базы подается на вход LLM, чтобы она отвечала с опорой на конкретные данные.
  4. Финальный этап — генерация (generation). LLM генерирует ответ, опираясь на информацию из найденных фрагментов и исходный запрос. Иногда к этому этапу добавляют проверку и проставление ссылок на источники — документы из базы, которые использовались для ответа.

Чем RAG отличается от обычной LLM

Что такое RAG: почему о нём говорят все ML-инженеры, с чего начать и что простое можно сделать 2
Источник: LinkedIn / Adir Ben-Yehuda

Доступ к актуальным данным. По умолчанию LLM общего характера знает только то, чему её успели научить, и не в курсе, что изменилось в мире после последнего апдейта. Она создана, чтобы решать широкий круг задач, но не имеет доступа к вашим документам, внутренней wiki или руководствам, которые не опубликованы в интернете.

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

Меньше галлюцинаций. Когда LLM не находит ответ в своих обучающих данных, она может «выдумывать» факты, чтобы выдать хоть какой-то ответ и угодить пользователю. С RAG это случается намного реже — модель опирается на реальные документы, а не на догадки.

Что такое RAG: почему о нём говорят все ML-инженеры, с чего начать и что простое можно сделать 3
Источник: DevCommunity / tanya rai

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

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

Быстрое обновление. Не нужно заново переобучать LLM при каждом изменении данных. Достаточно обновить документы и проиндексировать их в базе знаний, и модель сразу начнёт работать с актуальной информацией.

RAG vs файнтюн

Fine-tuning (тонкая настройка) — это процесс, при котором уже обученную языковую модель дополнительно обучают на новых примерах, чтобы она изменила своё поведение и лучше справлялась с конкретной задачей, стилем или областью знаний.

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

Сегодня LLM могут входить в курс дела «на лету» — на основе переданного контекста и хорошо сформулированных инструкций. Если вы снабдите модель нужной информацией в промпте, она сможет разобраться в новой для себя области без дообучения. Для этого подходят модели с большим контекстом (например, от Google или Qwen) и тщательно продуманный промпт.

Для стартапов и пилотов, особенно когда данные постоянно меняются — берите RAG и подгружайте документы или их фрагменты в контекст модели. В отличие от файнтюна, RAG может настроить обычный инженер: понадобится лишь пара библиотек и несколько дней на разбор документации и примеров. Кроме того, есть готовые сервисы, которые берут на себя часть задач по обработке данных. Например, у Cloud.ru есть решение, где достаточно закинуть свои документы, чтобы получать релевантные фрагменты по запросу.
Даниил Соловьевразработчик X5 Tech

С чего начать новичку

Совет эксперта: Даниил Соловьев, разработчик X5 Tech, рекомендует новичкам начать с его бесплатного курса на Stepik со всеми основами и практическими примерами и обратить внимание на свежие книги и статьи по теме RAG:

📘 RAG-Driven Generative AI with LlamaIndex Amazon

Автор: Denis Rothman. Практическое руководство по созданию RAG-систем с использованием фреймворков LlamaIndex, Deep Lake и Pinecone.

📗 AI Engineering: Building Applications with Foundation Models Amazon

Автор: Chip Huyen. Хорошо структурированное руководство по основным аспектам создания систем генеративного ИИ.

📝 Retrieval-Augmented Generation for Large Language Models: A Survey ArXiv

Авторы: Yunfan Gao, Yun Xiong, Xinyu Gao, Kangxiang Jia, Jinliu Pan, Yuxi Bi, Yi Dai, Jiawei Sun, Meng Wang, Haofen Wang. Обзор эволюции RAG-подходов, компонентов и методов оценки.

И ещё несколько ресурсов от Tproger, чтобы закрепить знания и сразу попробовать реализовать идеи на практике:

Что учесть при внедрении RAG

1. Подготовка данных. Начните вычитывать и удалять противоречия и неточности в своей базе знаний. Золотое правило ML — «garbage in, garbage out»: если данные плохие, LLM не сможет хорошо отвечать. Если данных нет или они настолько запутанные, что в них потеряется даже человек — RAG не поможет.

Иногда оказывается, что вся документация умещается на пять страниц. Такой объём легко помещается в системный промпт модели, и качество ответов может быть даже лучше. Многие провайдеры LLM (OpenAI, Anthropic) позволяют кэшировать префикс промпта. За счёт этого при каждом запросе модель не проводит вычисления заново — ответ приходит быстрее и стоит дешевле. Но важно помнить: чем больше данных передаётся в промпт, тем дольше и дороже становится ответ. Поэтому RAG имеет смысл тогда, когда данных слишком много, чтобы передавать их в промпте.

2. Валидация ответов. Чтобы проверить, насколько хорошо работают разные подходы, обычно делают «золотой датасет» — набор примеров. Он состоит из пар: запрос пользователя и эталонный ответ, который заранее пишет эксперт на основе документов. На таком наборе можно сравнить разные варианты RAG и выбрать тот, что справляется лучше остальных.

Источников и документов может быть сколько угодно — главное, их качество. Методы поиска, такие как векторный поиск или поиск по ключевым словам, хорошо справляются даже с большими объёмами. Векторный поиск использует алгоритмы приближённого поиска (ANN), которые специально созданы, чтобы размер базы знаний почти не влиял на скорость.
Даниил Соловьевразработчик X5 Tech

Когда RAG не подойдёт

Он не нужен там, где дополнительные данные просто не приносят ценности. Обычно это простые prompt-based приложения, где достаточно статического системного промпта. Например, ранние GPT-приложения просто генерировали 10 идей или переписывали текст в заданном стиле. Дополнительные данные при этом не нужны, а хорошие примеры (few-shot) можно просто вставить в системный промпт.

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

Подборка полезных туториалов

Следите за новыми постами
Следите за новыми постами по любимым темам
1К открытий4К показов