RAG vs. LLM: технический разбор (определения, различия, сценарии использования)

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

Diagram comparing an LLM-only flow (input, LLM, output) with a RAG flow, where the input is exchanged with an external data source before reaching the LLM.

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

В реальности выбор стоит не между RAG и LLM. Он стоит между гибридным подходом и подходом, который использует только LLM.

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

RAG и LLM: в чём ключевые различия?

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

Что такое большая языковая модель (LLM)?

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

Чтобы лучше понять, как работает RAG (и чем он отличается от) LLM, полезно взглянуть на то, как генеративный ИИ работает на базовом уровне:

  1. Токенизация: Запрос пользователя разбивается на токены, которыми могут быть слова, части слов или отдельные символы.
  2. Эмбеддинг: Токены преобразуются в эмбеддинги — числовые представления (строки чисел), называемые векторами, которые может обрабатывать нейронная сеть, включающая декодер.
  3. Декодирование: Слои декодера (которые составляют значительную часть нейронной сети LLM) преобразуют эти векторы, используя процесс, называемый attention , чтобы улавливать смысл. Этот процесс определяет, насколько сильно каждый токен должен соотноситься с другими токенами в последовательности.
  4. Оценка: Модель присваивает каждому токену в своём уже существующем словаре вероятность совместимости и выбирает вероятный следующий токен для последовательности.

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

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

Что такое генерация с дополнением за счёт поиска (RAG)?

RAG (retrieval-augmented generation) — это процесс, при котором информация из внешних систем включается в промпт LLM.

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

Вот обзор того, как работает RAG:

  1. Подготовка знаний: Подготавливается источник знаний. Это может быть набор документов, векторная база данных, граф знаний или живой индекс (например, для ИИ-поиска).
  2. Формирование промпта: Пользователь вводит промпт, например: «Стоит ли мне сегодня пойти на прогулку в Лондоне?»
  3. Поиск: Внешний источник информации запрашивается поисковым модулем инструмента ИИ. Он может преобразовать промпт в эмбеддинг, превратив его в вектор, а затем запросить векторную базу данных. Либо он может использовать альтернативный метод, такой как вызов API, сопоставление по ключевым словам или обход графа знаний.
  4. Добавление: Эта информация добавляется к исходному промпту пользователя. В примере с вопросом о прогулке в Лондоне это может включать информацию о погоде в Лондоне и текущей доступности популярных маршрутов для прогулок.
  5. Генерация ответов: LLM генерирует ответ обычным способом, используя расширенный промпт.

За кулисами извлечённый текст добавляется во входной контекст, токенизируется и преобразуется в эмбеддинги. Затем модель обрабатывает этот дополнительный контекст через свой декодер, что изменяет вероятности выходных токенов.

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

RAG и LLM: обзор сценариев использования

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

Сценарии использования RAG

  • Запросы к актуальной информации: Любые запросы к информации, которая быстро устаревает, будь то что-то столь простое, как прогноз погоды, или столь сложное, как подробный анализ развивающейся новостной истории, должны основываться на проверенных сторонних источниках.
  • Документация компании: Внутренние или внешние для клиентов ИИ-чат-боты, в которых пользователи задают вопросы, связанные с документацией компании или продукта, должны быть с поддержкой RAG, особенно если документация часто обновляется.
  • Поддержка клиентов: Чат-ботам для клиентов нужен доступ к актуальной, подробной документации поддержки, чтобы давать точные ответы.
  • Специализированные области (медицина, право, финансы и т. д.): LLM, которые не обучались на предметно-специфических корпусах (особенно основные модели), обычно испытывают трудности с нюансами специализированных запросов.

Сценарии использования LLM

  • Административные задачи: LLM могут выполнять базовые задачи с минимальной задержкой. RAG не нужен для базового написания текстов и административных задач, таких как проверка орфографии или краткое изложение, когда внешняя информация не требуется.
  • Творческие задачи: Некоторые творческие задачи, например создание короткого рассказа или изображения, требуют только информации, указанной в исходном промпте.
  • Задачи на рассуждение и работу с данными: Если вы работаете с большим набором данных, LLM не требуется доступ к внешней информации, чтобы применять функции рассуждения и анализа.
  • Общее программирование: Хотя рабочий процесс программирования может требовать доступа к частной кодовой базе или документации, LLM очень хорошо справляются с выполнением общих задач по программированию, таких как исправление ошибок и создание функций, без обращения к внешним источникам.

RAG и LLM с длинным контекстом, агентный ИИ и grounding

Существует три связанных понятия, важные для различия между RAG и LLM. Это LLM с длинным контекстом, агентный ИИ и grounding.

LLM с длинным контекстом иногда можно использовать вместо систем с поддержкой RAG, тогда как агентный ИИ и grounding являются синонимами или работают вместе с ними.

LLM с длинным контекстом

Это модели с большими окнами контекста, причём некоторые широко доступные коммерческие модели работают с объёмом до одного миллиона токенов.

Если релевантный материал помещается в окно контекста модели и доступен в текстовом формате, использование подхода только на базе LLM даёт некоторые преимущества. Это может снизить вероятность ошибок поиска, предоставить более полный контекст и устранить необходимость в масштабной настройке архитектуры RAG.

Агентный ИИ

Агент — это система, которая использует несколько инструментов, включая возможности RAG, для выполнения сложных задач. RAG — один из компонентов агентного ИИ, и агент часто использует разные типы методов поиска (например, веб-поиск или векторный поиск) в зависимости от содержания промпта.

Приземление

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

RAG и LLM: реальные примеры

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

RAG и LLM с простым промптом

Вот результат (ограниченный двумя предложениями), когда Perplexity получает запрос «Стоит ли мне сегодня пойти на прогулку в Лондоне?» с отключённым веб-поиском ИИ (формой RAG):

Да — если погода достаточно сухая и у вас есть время, прогулка по Лондону сегодня может стать освежающей сменой обстановки. Выберите маршрут вдоль South Bank, Regent’s Canal или через Hyde Park и на всякий случай возьмите лёгкую непромокаемую одежду.

Сравните это с промптом, когда LLM может проверять внешние источники:

Да, это хороший день для прогулки в Лондоне: прогноз обещает умеренную температуру около 19–21 °C, солнечные промежутки и очень низкую вероятность дождя. При переменной облачности и лёгком ветерке условия комфортны для прогулок по паркам или вдоль реки, например по South Bank.

Между этими двумя примерами есть сходство, поскольку LLM использует тот же базовый процесс оценки токенов. Однако второй пример включает подробную информацию о погоде, что делает его гораздо более полезным.

RAG и LLM с корпоративной векторной базой данных

Представьте, что пользователь задаёт чат-боту в банковском приложении такой вопрос: «Где я могу скачать свою самую последнюю выписку?»

Банк, который управляет приложением, создал базу данных, содержащую эмбеддинги своей актуальной продуктовой документации, и подключил её к RAG-конвейеру чат-бота. Документация состоит примерно из 1 000 исходных документов, которые разбиты на более мелкие фрагменты и преобразованы в векторы для поиска.

Запрос пользователя отправляется в модель эмбеддингов, а приложение передаёт этот вектор в базу данных, которая возвращает релевантные фрагменты.

Модель эмбеддингов получила бы такой запрос:

json
{ "input": "Where can I download my most recent statement?" }

Модель эмбеддингов возвращает следующий векторный эмбеддинг:

json
{ "embedding": [0.12, -0.44, 0.87, 0.31] }

Затем векторная база данных получает запрос, подобный следующему:

json
{ "vector": [0.12, -0.44, 0.87, 0.31], "top_k": 5 }

В этом (сильно упрощённом) примере база данных возвращает пять фрагментов, наиболее релевантных запросу пользователя; они отправляются в приложение и включаются в промпт LLM.

Когда выбирать RAG или LLM и когда их комбинировать

LLM и RAG — взаимодополняющие системы. Поэтому вопрос «Когда мне выбирать LLM, а когда RAG?» поставлен неверно. Скорее следует спрашивать: «Когда LLM будет достаточно, а когда RAG оптимален?»

Когда использовать LLM без включённого RAG

  • У выбранной вами модели ИИ большое окно контекста: Если в вашем промпте проще разместить всю информацию или данные, необходимые для точного ответа, например загрузив документ, это может снизить задержку и предотвратить проблемы, связанные с поиском.
  • Рабочие процессы, связанные с рассуждением и анализом данных: Рабочим процессам анализа и рассуждения, которые опираются только на данные, предоставленные в промпте, возможности RAG не нужны.
  • Генерация кода: RAG обычно не нужен для общей программной работы, хотя его обычно используют для задач, специфичных для проекта, таких как поиск предыдущих исправлений или документации и API вендора.

Когда использовать LLM с включённым RAG

  • Вам нужен доступ к актуальной информации: Если ИИ-приложению нужен доступ к внешним источникам актуальной информации, чтобы сгенерировать точный ответ, всегда убеждайтесь, что возможности RAG включены.
  • Вы работаете в специализированной области: Для таких сфер, как медицина, право, образование и так далее, где важны точность, детализация и проверка источников, одного LLM часто бывает недостаточно.
  • Нужно, чтобы ответы ссылались на внутренние файлы компании: Если вы используете ИИ, либо внутри компании, либо в клиентском приложении, для генерации контента на основе внутренних корпоративных документов, будь то данные, брендбук, документация или файлы, RAG предоставляет доступ к этой информации.

RAG и LLM — взаимодополняющие, развивающиеся технологии

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

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