Главная / Статьи

Объяснение метода Retrieval-Augmented Generation: устранение пробелов в знаниях больших языковых моделей

Почему большие языковые модели выдумывают информацию и теряют актуальность, и как генерация с усилением с помощью поиска решает эту проблему пошагово: разбиение на части, эмбеддинги, поиск информации и дополнение промпта.

Издатель: REACTAPP.TOP5 мин чтения1205 слов

Источники: What LLMs Often Get Wrong At, And How RAG Cures That

Где ЯИИ склонны путаться

Подумайте о заключительных устных экзаменах. Вы зубрите всё накануне вечером, заходите в аудиторию, уверенно разговариваете с экзаменатором и надеетесь, что всё пройдёт хорошо. Затем экзаменатор спрашивает: «Почему вы выбрали именно такой подход в своём проекте?» Вдруг в комнате наступает тишина.

ЯИИ сталкиваются с той же проблемой.

Они созданы для того, чтобы выдавать убедительные ответы. Это означает, что они часто не знают, как признаться в том, что «я не знаю».

Есть ещё проблема устаревших знаний.

Представьте, что тот же экзаменатор спрашивает:

«Почему вы выбрали именно этот метод, когда сейчас существует лучший?»

Вы окажетесь в тупике.

ЯИИ сталкиваются именно с этой проблемой, когда факты, на основе которых они обучались, больше не отражают реальность.

Поэтому настоящий вопрос звучит так: Как предоставить ЯИИ правильные факты именно тогда, когда они им нужны?

Введение в генерацию с усилением за счёт поиска

Не позволяйте названию напугать вас. На самом деле это простой рабочий процесс: находите соответствующую информацию, передаёте её модели и позволяете модели превратить её в ответ.

В этом и заключается вся суть.

Давайте разберём, что на самом деле происходит за этим описанием.

Формулировка задачи

Предположим, вы создаёте внутреннего ИИ-ассистента для компании.

У этой компании есть множество документов: руководство для сотрудников, внутренние часто задаваемые вопросы, правила безопасности и так далее.

Как только ассистент будет в работе, люди естественно начнут с ним общаться. Кто-то вводит:

"Сколько дней отпуска по уходу за ребёнком я имею право?"

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

Как на самом деле работает RAG

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

Большая языковая модель использует эти предоставленные данные для формирования своего ответа.

Другими словами, модели не нужно запоминать всё. Ей достаточно правильной информации, предоставленной в правильный момент.

Это поднимает следующий вопрос: как вообще определить, что считается релевантным?

Извлечение информации

Отправка каждого документа в ЯЗЫК-модель для решения каждого вопроса была бы неэффективной и медленной. Поэтому сначала необходимо найти способ изолировать соответствующие фрагменты, поскольку сканирование всего каждый раз сопряжено с высокими затратами и низкой производительностью.

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

Поиск подходящего блока

Пользователь может сформулировать свой вопрос так: "Сколько времени я могу взять отпуска после рождения ребенка?"

В то же время в самом документе может быть указано: ">Сотрудники имеют право на 26 недель отпуска по уходу за ребенком."

Формулировки отличаются, но смысл идентичен. Чтобы преодолеть эту разницу, системы RAG опираются на эмбеддинги.

Что делают эмбеддинги

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

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

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

Повышение качества

После того как идентифицируются релевантные фрагменты, следующим шагом является их объединение.

Они вставляются в окно контекста ЯИИ вместе с исходным вопросом:

Context:
Employees are entitled to 26 weeks of parental leave.

Question:
How long can I stay away from work after having a baby?

На этом этапе у ЯИИ есть всё необходимое для точного ответа.

Генерация

Теперь наступает та часть, в которой ЯИИ демонстрирует высокие способности: создание самого ответа.

Он считывает как вопрос пользователя, так и полученный контекст, затем генерирует ответ:

«Вы имеете право на 26 недель отпуска по уходу за ребенком».

И тем самым завершается цикл: Получение → Дополнение → Генерация.

Проблема

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

Рассмотрим следующую ситуацию:

Вопрос: «Как долго длится отпуск по уходу за ребенком?»

Полученный фрагмент: «Уведомите своего руководителя за 30 дней до начала отпуска по уходу за ребенком».

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

Улучшение качества поиска

Как же обеспечить, чтобы на этапе поиска находился правильный материал?

Здесь важны несколько факторов:

Стратегия разбиения на фрагменты: способ разделения документов влияет на то, останется ли связанный контекст целым внутри одного фрагмента.

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

Техника поиска: Сочетание поиска на основе семантического сходства с традиционным поиском по ключевым словам помогает учитывать как смысл, так и точную формулировку.

Переупорядочивание: Сначала собирается первая группа кандидатских фрагментов, затем применяется второй этап упорядочивания для выделения наиболее полезных из них.

Основная цель остается простой: предоставить LLM правильный контекст.

Заключение

RAG — это не какой-то волшебный трюк.

Найдите нужную информацию, передайте её LLM и позвольте модели сгенерировать ответ.

В этом вся суть механизма.

От LLM никогда не требовалось знать всё заранее.

Ему нужен лишь правильный контекст, предоставленный в правильное время.

И это основной принцип RAG: «мусор входит — мусор выходит», а качественный ввод приводит к качественному выводу.

Теперь, когда бы кто-нибудь ни упомянул «RAG это, RAG то», вы будете точно понимать, о чём речь.