Принципы и практика создания дополненного поколения (RAG) Руководство по созданию фундамента (перевод)

检索增强生成(RAG)原理与实践基础构建指南(译)

 

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

Несмотря на эти ограничения, генеративные модели по-прежнему являются очень влиятельными инструментами, которые могут автоматизировать повседневные задачи, помогать нам в работе и по-новому взаимодействовать с данными. Как же использовать их обширные знания и при этом заставить их служить нашим конкретным сценариям использования? Ответ кроется в предоставлении релевантных задаче данных для генеративного моделирования.

В этой статье мы подробно рассмотрим Retrieval Augmented Generation (RAG) - фреймворк, который расширяет возможности моделей, позволяя им ссылаться на внешние данные. Мы изучим ограничения генеративного моделирования, которые способствуют RAG Мы объясним, как работает RAG, и подробно проанализируем архитектуру конвейера RAG. Кроме того, мы приведем несколько практических примеров использования RAG, предложим конкретные методы реализации RAG, представим некоторые продвинутые техники RAG и обсудим методы оценки RAG.

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

 

Ограничения генеративного моделирования

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

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

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

 

Что такое расширенное поколение (RAG)?

Поколение дополнения поиска (RAG) это способ получения дополнительных данных, относящихся к текущей задаче, путем извлечения их из внешнего источника данных вукреплятьСистема генеративного макроязыкового моделирования обобщенных знаний.

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

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

 

Архитектура RAG

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

检索增强生成(RAG)原理与实践基础构建指南(译)

 

Внешние источники знаний

Без поддержки внешних знаний генеративные модели могут основываться только на своихПараметрические знаниягенерирование ответов, которые изучаются на этапе обучения модели. С помощью RAG мы можем интегрировать в конвейерВнешние источники знанийтакже известный какНепараметрические знания.

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

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

Шаблоны советов

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

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

prompt_template = "上下文信息如下。\n"
                  "---------------------\n"
                  "{context_str}\n"
                  "---------------------\n"
                  "根据上下文信息而不是先前的知识,回答问题。\n"
                  "问题: {query_str}\n"
                  "回答: "

Генеративное моделирование большого языка (LLM)

Последний компонент RAG - генеративная модель языка (Large Language Model, LLM), также известная как генеративная модель, которая используется для создания окончательного ответа на запрос пользователя. Расширенные подсказки, обогащенные информацией из внешней базы знаний, затем отправляются в модель, которая генерирует ответы, сочетающие внутренние знания с вновь полученными данными.

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

 

Как работает RAG?

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

Стадия 1: Проглатывание

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

检索增强生成(RAG)原理与实践基础构建指南(译)

 

Этап 2: рассуждение

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

检索增强生成(RAG)原理与实践基础构建指南(译)

 

получить (данные)

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

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

Аугментация

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

Поколение

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

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

 

Примеры применения RAG

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

Поиск информации в режиме реального времени

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

Система рекомендаций по содержанию

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

Персональный ИИ-помощник

Наши личные данные, включая документы, электронные письма, сообщения в Slack и заметки, являются важным источником данных для создания моделей. Запустив RAG на личных данных, мы можем взаимодействовать с ними в разговорной манере, повышая эффективность и автоматизируя рутинные задачи. С помощью ИИ-помощников, таких как Microsoft's Второй пилот ответить пением Понятие (Ask AI), мы можем использовать простые подсказки для поиска нужных документов, написания персонализированных электронных писем, обобщения документов и протоколов, планирования встреч и многого другого.

 

Как внедрить RAG

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

LangChain, LlamaIndex и DSPy - мощные библиотеки Python с открытым исходным кодом и активными сообществами, которые предоставляют мощные инструменты и интеграции для построения и оптимизации конвейеров RAG и приложений Large Language Model (LLM).

  • LangChain Предоставляет строительные блоки, компоненты и сторонние интеграции для разработки приложений на основе LLM. Его можно использовать в сочетании с LangGraph используются вместе, чтобы построить конвейер RAG в стиле proxy, и через LangSmith Проведите оценку RAG.
  • LlamaIndex это фреймворк, который предоставляет инструменты для создания LLM-приложений, интегрирующих внешние источники данных.LlamaIndex поддерживает LlamaHubЭто богатая библиотека загрузчиков данных, прокси, наборов данных и других компонентов, которые упрощают создание конвейеров RAG.
  • DSPy это модульный фреймворк для оптимизации конвейеров LLM. LLM и RM (Retrieval Model) могут быть сконфигурированы в DSPy для бесшовной оптимизации конвейеров RAG.

Weaviate обеспечивает интегрированный (как в интегральной схеме) ответить пением формулы Weaviate можно использовать с каждым из этих фреймворков. Конкретные примеры можно посмотреть в нашем блокноте, где показано, как использовать Weaviate с LlamaIndex ответить пением DSPy Постройте трубопровод RAG.

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

Реализация готового RAG с помощью Verba

 

Технология RAG

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

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

Продвинутый RAG

Передовые методы RAG могут применяться на всех этапах конвейера. Стратегии предварительного поиска, такие как Фильтрация метаданных и текст кусок Эффективность и релевантность поиска можно повысить, сузив круг поиска и обеспечив рассмотрение только наиболее значимых частей данных. Использование более продвинутых методов поиска, таких как Гибридный поисккоторая сочетает в себе преимущества поиска по сходству и поиска по ключевым словам, также может дать более надежные результаты поиска. Наконец, благодаря использованию модели сортировки результатов поиска повторный заказ и сгенерированные с помощью большой языковой модели (LLM), точно настроенной на основе данных о конкретной области, могут улучшить качество генерируемых результатов.

检索增强生成(RAG)原理与实践基础构建指南(译)

 

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

Прокси RAG

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

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

Графика RAG

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

Дополнительные сведения о процессе создания графической RAG см. в разделе GraphRAG от Microsoft. программный пакетответить пением(компьютерный) файл.

 

Как оценить RAG

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

检索增强生成(RAG)原理与实践基础构建指南(译)

 

Оценка на уровне компонентов

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

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

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

Комплексная оценка

Хотя Retriever и Generator являются двумя отдельными компонентами, они зависят друг от друга, чтобы генерировать последовательные ответы на запросы пользователей.

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

Система оценки RAG представляет собой структурированную методологию, инструмент или платформу для оценки процессов RAG.RAGAS(Retrieval Enhanced Generation Evaluation) - это особенно популярный фреймворк, который предоставляет набор метрик для оценки релевантности поиска, качества генерации и подлинности без необходимости вручную аннотировать данные. Слушайте этот подкаст Weaviate, чтобы получить информацию непосредственно от RAGAS Создательские наработки RAGAS и продвинутые методы оптимизации оценок RAGAS.

 

RAG против тонкой настройки

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

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

 

резюме

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

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

Руководство по ресурсам

📄 Генерация с расширением поиска для наукоемких задач НЛП (Оригинальный документ RAG)

👩‍🍳 Начало работы с RAG в DSPy(Формула)

👩‍🍳 Простой RAG в LlamaIndex(Формула)

📝 Передовая технология RAG(запись в блоге)

📒 Агентная система RAG с несколькими агентами-документаторами(Блокнот)

📝 Обзор оценки RAG(запись в блоге)

📄 Оценка генерации улучшений поиска: обзор(Академические статьи)

© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...