Поделиться через


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

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

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

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

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

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

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

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

Следующий рабочий процесс описывает высокоуровневый поток для приложения RAG.

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

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

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

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

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

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

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

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

  • На этапе подготовки вам следует:

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

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

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

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

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

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

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

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

Соавторы

Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участниками.

Основные авторы:

  • Рауф Алиуат | Инженер программного обеспечения II
  • Роб Багби | Ведущий специалист по содержанию Центра архитектуры
  • Prabal Deb | Главный инженер программного обеспечения
  • Чад Киттель | Главный инженер программного обеспечения
  • Ritesh Modi | Главный инженер
  • Райан Пфальц | Старший технический руководитель программы
  • Рэнди Турман | Архитектор облачных решений ИИ

Чтобы просмотреть недоступные профили LinkedIn, войдите в LinkedIn.

Дальнейшие действия