Главная / Статьи / Зачем LLM внешняя память: RAG, эмбеддинги и дообучение

Зачем LLM внешняя память: RAG, эмбеддинги и дообучение

Как генерация с дополненным поиском даёт языковой модели «открытую книгу»: чанкинг, эмбеддинги, ответы с опорой на источники, где RAG выигрывает у дообучения и где всё ещё ошибается.

1392 слов

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

Стандартное решение — Retrieval-Augmented Generation, или RAG. Вместо того чтобы отвечать только по памяти, модель сначала ищет нужную информацию во внешней библиотеке, а потом пишет ответ на основе найденного.

Экзамен с закрытой и открытой книгой

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

Языковые модели ведут себя так же:

Closed-book approach:
Question
   |
   v
LLM's internal memory
   |
   v
Possible outdated or invented answer
Open-book RAG approach:Question
   |
   v
Search external documents
   |
   v
Retrieve relevant passages
   |
   v
LLM uses those passages to answer

Понимает и объясняет по-прежнему модель. Поисковая система лишь поставляет доказательства.

Параметрическая память и её пределы

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

  • Изменить один конкретный факт сложно.
  • Не всегда можно сказать, откуда взялся ответ.
  • Знания устаревают.
  • Правильные и неправильные закономерности могут смешиваться.
  • Закрытая информация компании автоматически недоступна.

RAG добавляет второй вид памяти, который обычно называют непараметрическим. Он находится вне модели — в документах, базах данных, поисковых индексах или векторных хранилищах. В исходном исследовании RAG это описано как связка предобученной модели с внешним плотным индексом документов.

Как работает базовая RAG-система

Большинство систем проходят четыре этапа.

1. Подготовка документов

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

2. Превращаем текст в то, что можно искать

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

3. Находим релевантное

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

User question
      |
      v
Search document index
      |
      v
Retrieve relevant passages
      |
      v
Add passages to the model prompt

4. Генерируем ответ с опорой на источники

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

RAG или дообучение

Когда компания хочет, чтобы модель пользовалась внутренними знаниями, первая мысль — часто дообучение (fine-tuning). Оно может помочь, но хранить так меняющиеся факты — плохая идея. Дообучение меняет поведение модели за счёт тренировки на дополнительных примерах, и пересматривать таким способом политику каждую неделю было бы медленно, дорого и трудно проверяемо.

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

Задача Дообучение RAG
Изменить стиль текста Отлично подходит Ограниченно
Научить конкретному формату ответа Отлично подходит Возможно, но менее напрямую
Добавить часто меняющиеся факты Плохо подходит Отлично подходит
Использовать закрытые документы Возможно, но дорого Отлично подходит
Показать исходный материал Сложно Естественно
Быстро обновить информацию Нужно переобучение Обновить индекс документов

Исследования, сравнивающие оба подхода, показывают, что RAG особенно хорошо добавляет редкие или недавно появившиеся факты. Одно сравнение внедрения знаний через обучение и через поиск опубликовано на arXiv, и последующий анализ приходит к похожему выводу.

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

RAG — не панацея

RAG снижает долю ошибок, но не гарантирует правильных ответов. Система всё равно может ошибиться, когда:

  • Нужный документ так и не добавили.
  • Документ устарел.
  • Поиск вернул не тот фрагмент.
  • Ключевая информация разбросана по неудачно нарезанным чанкам.
  • Модель неправильно поняла найденный текст.
  • Встречаются противоречащие друг другу документы без понятного приоритета.

Так что качество зависит не только от модели. Важны структура документов, качество поиска, метаданные, права доступа, ссылки на источники и оценка. Запомнить легко: RAG улучшает доступ модели к доказательствам, но сами доказательства должны быть хорошими.

Где это окупается в компаниях

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

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

Новое разделение труда

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

External documents
        |
        v
Search and retrieval system
        |
        v
Relevant context
        |
        v
Language model
        |
        v
Answer with explanation and sources

Модель интерпретирует, поисковая система работает библиотекарем, а документы — это справочная полка. Если разделить эти роли, системы проще обновлять и зачастую проще контролировать.

Чего поиск всё ещё не умеет

Доступ к информации — не то же самое, что способность действовать. Модель может знать, что командировку нужно согласовать, но согласовать её не может. Она может объяснить правила возврата денег, но не может оформить возврат, потому что у неё нет доступа к бизнес-системе. Чтобы закрыть этот разрыв, модели подключают к инструментам через вызов функций и API, и тогда они переходят от написания текста к полезной работе. Модель училась на мире, RAG позволяет ей заглядывать в справочники. Научить её действовать на основе своих знаний — следующая задача.

Статьи, которые стоит открыть

  • Исходная статья о RAG с NeurIPS 2020 связывает предобученный генератор с поисковым индексом.
  • Исследование языковых моделей с дополненным поиском в режиме few-shot показывает, как далеко может зайти поиск всего с несколькими примерами.