Что такое генерация с использованием данных из внешних источников (RAG)?
Генерация с использованием данных из внешних источников (RAG) представляет собой архитектуру искусственного интеллекта, которая при обработке запроса извлекает релевантные внешние документы и обучает на их основе крупную языковую модель (LLM) с целью формирования ответов, основанных на актуальной и поддающейся проверке информации. В отличие от «чистой» LLM, которая опирается исключительно на свои обучающие веса, система RAG разделяет то, что модель знает судя по тому, что поднимает взгляд, что делает его удобным для выполнения задач, в которых важны как точность, так и актуальность данных.
Как работает RAG
RAG объединяет два компонента: механизм поиска, который находит релевантные фрагменты текста, и генератор (LLM), который анализирует эти фрагменты и формирует ответ. Патрик Льюис и соавторы представили эту архитектуру на конференции NeurIPS 2020, объединив предварительно обученную модель seq2seq (параметрическая память) с плотным векторным индексом Википедии, доступ к которому осуществляется через нейронный ретривер (непараметрическая память). В своей статье они сообщили, что RAG генерирует «более конкретные, разнообразные и основанные на фактах» результаты по сравнению с базовым вариантом, использующим исключительно параметрическую память (Льюис и др., «Генерация с использованием данных поиска для задач обработки естественного языка, требующих обширных знаний» (NeurIPS 2020), arXiv 2005.11401, 2020 г.).
Во время выполнения конвейер работает в три этапа. Во-первых, запрос пользователя кодируется в вектор и сравнивается с предварительно проиндексированным хранилищем документов с целью выявления наиболее релевантных фрагментов. Во-вторых, эти фрагменты добавляются в контекстное окно модели в качестве дополнительного входного сигнала. В-третьих, LLM генерирует ответ, в котором сочетаются его параметрические знания и найденные доказательства.
Хранилище документов, как правило, представляет собой векторную базу данных: систему, в которой хранятся высокоразмерные вложения фрагментов текста и которая поддерживает быстрый поиск по принципу «ближайшего соседа». Объем векторных баз данных, лежащих в основе приложений RAG, вырос на 377 % по сравнению с предыдущим годом, что стало самым быстрым ростом среди всех отслеживаемых категорий технологий, связанных с LLM (Databricks, «Состояние дел в сфере данных и искусственного интеллекта» (Тенденции внедрения и роста в корпоративном секторе), 2024 г.).
Почему метод RAG стал стандартным подходом к заземлению
Большие языковые модели (LLM) фиксируют свои знания на момент завершения предварительного обучения. Любой факт, изменившийся после этого момента — будь то цена, нормативный акт или технические характеристики продукта — требует либо нового цикла обучения, либо использования слоя извлечения информации. Технология RAG решает эту задачу с минимальными затратами. Вместо повторного обучения вы обновляете хранилище документов, и модель автоматически приводит актуальную информацию при поступлении следующего соответствующего запроса.
О том, насколько этот подход практичен, свидетельствует его внедрение в корпоративном секторе. RAG стал доминирующим подходом для обучения моделей большого языка (LLM) на основе собственных или актуальных данных: доля предприятий, использующих этот подход, выросла до 51 % в 2024 году по сравнению с 31 % в предыдущем году (Menlo Ventures, 2024: Состояние дел с генеративным ИИ в корпоративном секторе, 2024 г.).
Вторым преимуществом является возможность аудита. Поскольку извлеченные документы являются частью контекстного окна, разработчик может проверить, какие фрагменты текста использовала модель, и отследить происхождение утверждений до их источника. В случае чисто параметрической модели это затруднительно или вообще невозможно.
Случаи использования
Корпоративные базы знаний. Внутренняя документация, юридические документы и справочные материалы часто обновляются. Конвейер RAG индексирует эти документы и позволяет сотрудникам или клиентам выполнять запросы на них на естественном языке, не дожидаясь следующей итерации настройки модели.
Веб-данные в режиме реального времени для агентов искусственного интеллекта. AI-агентам требуется актуальная информация — страницы продуктов, новости, результаты поиска — которую не может предоставить ни один статический корпус. Подача динамического веб-контента в уровень извлечения данных обеспечивает агенту точный и актуальный контекст. В данном случае в качестве уровня источника свежих веб-данных может выступать Web Render API от Massive: конечная точка Search возвращает отрендеренные результаты поиска (включая обзоры ИИ через awaiting=ai), а конечная точка «Browsing» возвращает «чистый» HTML-код или Markdown с любого общедоступного URL-адреса; оба этих формата подходят для фрагментации и встраивания в конвейер RAG.
Документация по коду и API. API библиотек меняются с каждым новым выпуском. Использование RAG на основе корпуса документов с указанием версий позволяет помощнику по программированию указывать правильную сигнатуру метода для используемой версии, а не приводить устаревшую.
Автоматизация обслуживания клиентов. Боты службы поддержки, основанные на актуальном каталоге продукции, документе с правилами возврата и списке известных проблем, дают точные ответы и ссылаются на соответствующие правила, что позволяет сократить количество обращений на более высокий уровень.
Передовой опыт
Размер блока имеет значение. Слишком мелкие фрагменты теряют контекст; слишком крупные фрагменты размывают значимый сигнал. Большинство специалистов начинают с фрагментов размером 256–512 токенов с перекрытием 10–20 %, чтобы избежать разбиения фрагментов посреди мысли.
Сначала подготовьте исходные документы. Шаблонные фрагменты, навигационный текст и рекламные объявления на полученной странице приводят к появлению «шума» в вложениях и ухудшают качество ответов. Если вы извлекаете веб-контент в режиме реального времени, перед индексированием преобразуйте его в чистый Markdown или простой текст.
Оцените процессы извлечения и генерации по отдельности. Неудовлетворительный результат может быть вызван либо некачественным поиском (не был найден нужный документ), либо некачественным генерацией (модель пропустила подходящий документ). Отдельное отслеживание показателей для каждого этапа поможет вам выявить и исправить именно тот компонент, который требует внимания.
Обновляйте индекс с периодичностью, соответствующей частоте изменений в исходных данных. Каталог товаров, который обновляется ежедневно, требует ежедневной переиндексации. Юридический корпус, обновляемый ежеквартально, можно переиндексировать реже. Устаревшие документы в хранилище результатов поиска являются распространенной причиной ошибок RAG.
Следите за пределами контекстного окна. Каждый извлечённый фрагмент расходует токены. При большом количестве фрагментов вы можете превысить размер контекстного окна модели или ослабить сигнал. Практическим решением этой проблемы является повторное ранжирование извлечённых фрагментов по релевантности и сохранение только трёх–пяти лучших.
Заключение
RAG решает проблему наиболее распространённого типа сбоев в работе больших языковых моделей (LLM): ответы, которые выглядят правдоподобно, но являются устаревшими или неверными, поскольку модель не имеет доступа к информации, выходящей за пределы периода обучения. Благодаря разделению процессов извлечения и генерации данная архитектура позволяет генеративной модели сосредоточиться на логическом выводе, в то время как компонент извлечения отвечает за обработку актуальных фактов. В 2024 году уровень внедрения этой технологии в корпоративном секторе превысил отметку в 51 %, а сопутствующая инфраструктура — векторные базы данных, API-интерфейсы для извлечения информации и уровни доступа к веб-ресурсам в режиме реального времени — в настоящее время достаточно зрела, чтобы большинство команд могли создавать рабочие конвейеры RAG без специальных знаний в области машинного обучения. Основная инженерная задача теперь заключается не в том, использовать ли RAG, а в том, из каких источников данных осуществлять извлечение и как поддерживать эти источники в актуальном и чистом состоянии.
Часто задаваемые вопросы
В ходе тонкой настройки новые знания закрепляются в весах модели посредством дополнительного обучения. В случае RAG веса остаются неизменными, а актуальная информация предоставляется на этапе вывода путем извлечения документов. Тонкая настройка лучше подходит для обучения модели новому стилю или задаче; RAG — для обеспечения актуальности ответов с минимальными затратами.
Метод RAG снижает вероятность возникновения галлюцинаций, предоставляя модели исходный текст, на котором она может основывать свой ответ, однако полностью устранить их он не позволяет. Модель по-прежнему может игнорировать найденный фрагмент, неверно его интерпретировать или восполнять пробелы выдуманными деталями. На частоту возникновения галлюцинаций влияют качество поиска, структура запроса и проверка результатов после генерации.
RAG осуществляет поиск по любому тексту, который можно разбить на фрагменты и встроить: PDF-файлы, HTML-страницы, записи баз данных, файлы Markdown, код или структурированные таблицы. Качество поиска зависит от того, насколько качественно исходные документы были очищены и разбиты на фрагменты перед индексированием.
Векторная база данных хранит вложения фрагментов текста и обеспечивает быстрый поиск по схожести. При поступлении запроса уровень поиска выполняет вложение запроса и ищет в векторной базе данных наиболее близкие по содержанию фрагменты. Именно этот поиск по схожести является основой этапа поиска в любой системе RAG.
Да. Вместо готового статического индекса уровень поиска может загружать актуальные веб-страницы непосредственно во время выполнения запроса и извлекать из них нужный текст перед передачей его в LLM. Данный подход позволяет заменить предсказуемость стабильного индекса на точность в режиме реального времени, однако это сопровождается увеличением задержки при обработке каждого запроса.