Архитектура и разработка систем Retrieval-Augmented Generation (RAG)

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

1. Концепция RAG: преодоление ограничений LLM через интеграцию внешних знаний

Концепция RAG: преодоление ограничений LLM через интеграцию внешних знаний

Представьте, что вы наняли гениального юриста, который помнит все законы мира на момент своего выпуска из университета в 2022 году, но совершенно не знает о поправках, принятых вчера, и не имеет доступа к вашим личным договорам. Именно в таком положении находятся современные большие языковые модели (LLM): они обладают колоссальной эрудицией, но ограничены «датой отсечки» обучающих данных и полным отсутствием доступа к вашей приватной информации.

Проблема «замкнутого мира» LLM

Популярные модели, такие как GPT-4 или Claude, обучаются на гигантских массивах текста. Однако после завершения обучения веса модели фиксируются. Это порождает три критические проблемы:

  • Галлюцинации: когда модель не знает ответа, она склонна генерировать правдоподобно звучащую, но ложную информацию.
  • Устаревание знаний: модель не знает о событиях, произошедших после её обучения (Knowledge Cutoff).
  • Отсутствие приватного контекста: модель не видит ваши корпоративные документы, код или личные заметки, если они не были частью публичного интернета.
  • Традиционный способ дообучения (Fine-tuning) для решения этих задач обходится дорого и не подходит для быстро меняющихся данных. Здесь на сцену выходит RAG (Retrieval-Augmented Generation) — архитектурный подход, который превращает LLM из «всезнайки-склеротика» в «аналитика с доступом к библиотеке».

    Анатомия RAG: связка поиска и генерации

    Идея RAG была впервые формализована исследователями Facebook AI Research (FAIR) в 2020 году. Суть метода заключается в разделении процесса подготовки ответа на два этапа: извлечение релевантных документов и последующая генерация текста на их основе.

    > Retrieval-Augmented Generation (RAG) — это архитектура, в которой модель генерирует ответ, опираясь не только на свои внутренние веса, но и на внешние фрагменты знаний, предоставленные ей в момент запроса. > > Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks

    Процесс работы системы можно описать следующей логической цепочкой:

  • Запрос (Query): Пользователь задает вопрос.
  • Поиск (Retrieval): Система ищет в базе данных (обычно векторной) фрагменты текста, наиболее близкие к вопросу по смыслу.
  • Обогащение (Augmentation): Найденные фрагменты добавляются в системный промпт для LLM вместе с исходным вопросом.
  • Генерация (Generation): Модель читает предоставленный контекст и формулирует ответ, используя его как первоисточник.
  • Сравнение подходов к обновлению знаний

    Чтобы понять место RAG в архитектуре систем, сравним его с классическим дообучением (Fine-tuning).

    | Параметр | Fine-tuning | RAG | | :--- | :--- | :--- | | Обновление данных | Требует переобучения модели (дорого/долго) | Мгновенно (обновление базы данных) | | Прозрачность | Модель — «черный ящик» | Ссылки на источники (Grounding) | | Стоимость | Высокая (GPU-ресурсы, специалисты) | Низкая (хранение и поиск векторов) | | Галлюцинации | Снижаются незначительно | Снижаются существенно за счет контекста |

    Математический взгляд на релевантность

    В основе RAG лежит способность системы находить «похожие» по смыслу тексты. Для этого слова и предложения переводятся в многомерные векторы (эмбеддинги). Степень близости запроса и документа чаще всего вычисляется через косинусное сходство (Cosine Similarity):

    Где:

  • и — векторы запроса и документа соответственно.
  • — скалярное произведение векторов.
  • — норма (длина) вектора.
  • Результат варьируется от до , где означает полную идентичность семантического смысла. Это позволяет системе находить ответ, даже если в вопросе и документе используются разные слова (например, «машина» и «автомобиль»).

    Сквозной пример: корпоративный ассистент

    Представим систему поддержки сотрудников компании «ТехноСтарт».

  • Данные: PDF-файлы с регламентами отпусков.
  • Вопрос пользователя: «Могу ли я взять отгул, если работаю меньше полугода?»
  • Действие RAG:
  • 1. Система переводит вопрос в вектор. 2. Находит в базе абзац из файла HR_policy_2024.pdf: «Сотрудники имеют право на оплачиваемый отпуск после 6 месяцев работы, однако административный отпуск возможен по согласованию с руководителем с первого дня». 3. Передает этот текст в LLM с инструкцией: «Ответь на вопрос, используя только этот текст».
  • Результат: Ответ будет точным, свежим и подтвержденным конкретным документом.
  • В следующей главе мы разберем первый практический этап создания такой системы: как правильно «нарезать» документы на части и превращать их в те самые векторы, которые позволяют компьютеру понимать смысл человеческой речи.