Зачем LLM внешняя память: RAG, эмбеддинги и дообучение
Как генерация с дополненным поиском даёт языковой модели «открытую книгу»: чанкинг, эмбеддинги, ответы с опорой на источники, где RAG выигрывает у дообучения и где всё ещё ошибается.
Попросите большую языковую модель объяснить сложное понятие, сжать отчёт или набросать убедительный ответ — и она обычно справится. Попросите её вести себя как база данных — и начнутся проблемы. Её знания живут в параметрах и отражают те данные, что были на момент обучения. Эти знания могут быть неполными, устаревшими или непроверяемыми, а если модель чего-то не знает, она всё равно может ответить уверенным тоном.
Стандартное решение — 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 показывает, как далеко может зайти поиск всего с несколькими примерами.