Проектирование и разработка решения RAG

Службы ИИ Azure
Поиск по искусственному интеллекту Azure
Служба Azure OpenAI
Машинное обучение Azure

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

Это руководство представлено в виде ряда. Каждая статья в серии охватывает определенный этап разработки решений RAG.

К этим статьям в этом руководстве относятся:

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

В статьях этого руководства рассматриваются все эти аспекты.

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

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

Рисунок 1. Архитектура высокого уровня RAG

Поток приложения RAG

Ниже приведен высокоуровневый поток для приложения RAG.

  1. Пользователь выдает запрос в интеллектуальном пользовательском интерфейсе приложения.
  2. Интеллектуальное приложение вызывает API в оркестратор. Оркестратор можно реализовать с помощью инструментов или платформ, таких как семантический ядро, Машинное обучение Azure поток запроса или LangChain.
  3. Оркестратор определяет, какой поиск выполняется в службе "Поиск ИИ Azure" и выдает запрос.
  4. Оркестратор упаковывает первые N-результаты из запроса, упаковывает их в виде контекста в запросе вместе с запросом и отправляет запрос в большую языковую модель. Оркестратор возвращает ответ интеллектуальному приложению для чтения пользователем.

Поток конвейера данных RAG

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

  1. Документы отправляются или извлекаются в конвейер данных.

  2. Конвейер данных обрабатывает каждый документ по отдельности, выполнив следующие действия.

    1. Фрагментный документ . Разбиение документа на семантические соответствующие части, которые в идеале имеют одну идею или концепцию.
    2. Обогащение блоков — добавляет поля метаданных, созданные из содержимого в блоках, в дискретные поля, такие как название, сводка и ключевые слова.
    3. Внедрение блоков. Использует модель внедрения для векторизации блока и других полей метаданных, используемых для поиска векторов.
    4. Сохраняет блоки — сохраняет блоки в индексе поиска.

Рекомендации по проектированию и оценке RAG

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

Схема, показывающая высокоуровневую архитектуру решения RAG, включая вопросы, возникающие при проектировании решения.

Рисунок 2. Вопросы, возникающие при разработке решения RAG

Серия статей в этом руководстве касается этих соображений и многое другое.

Этап подготовки

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

Этап фрагментирования

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

Этап обогащения фрагментов

  • Чистые блоки. Обсуждает различные подходы к очистке, которые можно реализовать для поддержки совпадений закрытия, устраняя потенциальные различия, которые не являются материалом для семантики текста.
  • Блоки расширения. Обсуждает некоторые распространенные поля метаданных, которые следует рассмотреть при увеличении объема данных блока вместе с некоторыми рекомендациями по их потенциальному использованию в поиске и средствах или методах, которые часто используются для создания содержимого метаданных.

Этап внедрения

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

Этап получения сведений

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

Завершение этапа оценки крупной языковой модели

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

Структурированный подход

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

Соавторы

Следующие шаги