Шаблон получения дополненного поколения (RAG) — это стандартный отраслевый подход к созданию приложений, использующих большие языковые модели для формирования конкретных или частных данных, которые еще не известны большой языковой модели. Хотя архитектура является простой, проектирование, экспериментирование и оценка решений RAG, которые вписываются в эту архитектуру, включает в себя множество сложных соображений, которые пользы от строгого, научного подхода.
Это руководство представлено в виде ряда. Каждая статья в серии охватывает определенный этап разработки решений RAG.
К этим статьям в этом руководстве относятся:
- Определение тестовых документов и запросов, используемых во время оценки
- Выбор стратегии фрагментирования
- Определение того, что и как следует обогатить блоки
- Выбор правильной модели внедрения
- Определение способа настройки индекса поиска
- Определение результатов поиска: вектор, полнотекстовый, гибридный, ручной
- Оценка каждого шага
В статьях этого руководства рассматриваются все эти аспекты.
Архитектура RAG
Рисунок 1. Архитектура высокого уровня RAG
Поток приложения RAG
Ниже приведен высокоуровневый поток для приложения RAG.
- Пользователь выдает запрос в интеллектуальном пользовательском интерфейсе приложения.
- Интеллектуальное приложение вызывает API в оркестратор. Оркестратор можно реализовать с помощью инструментов или платформ, таких как семантический ядро, Машинное обучение Azure поток запроса или LangChain.
- Оркестратор определяет, какой поиск выполняется в службе "Поиск ИИ Azure" и выдает запрос.
- Оркестратор упаковывает первые N-результаты из запроса, упаковывает их в виде контекста в запросе вместе с запросом и отправляет запрос в большую языковую модель. Оркестратор возвращает ответ интеллектуальному приложению для чтения пользователем.
Поток конвейера данных RAG
Ниже приведен высокоуровневый поток для конвейера данных, который предоставляет данные о заземления для приложения RAG.
Документы отправляются или извлекаются в конвейер данных.
Конвейер данных обрабатывает каждый документ по отдельности, выполнив следующие действия.
- Фрагментный документ . Разбиение документа на семантические соответствующие части, которые в идеале имеют одну идею или концепцию.
- Обогащение блоков — добавляет поля метаданных, созданные из содержимого в блоках, в дискретные поля, такие как название, сводка и ключевые слова.
- Внедрение блоков. Использует модель внедрения для векторизации блока и других полей метаданных, используемых для поиска векторов.
- Сохраняет блоки — сохраняет блоки в индексе поиска.
Рекомендации по проектированию и оценке RAG
При разработке решения RAG необходимо принять различные решения по реализации. На следующем рисунке показаны некоторые из этих решений.
Рисунок 2. Вопросы, возникающие при разработке решения RAG
Серия статей в этом руководстве касается этих соображений и многое другое.
- Определение домена решения. Описывает важность четкого определения бизнес-требований для решения RAG
- Сбор репрезентативных тестовых документов. Обсуждает рекомендации по сбору тестовых документов для решения RAG, который является представителем вашего корпуса.
- Сбор тестовых запросов . Описывает, какие сведения следует собирать вместе с тестовых запросов, предоставляет рекомендации по созданию искусственных запросов и запросов, которые не охватывают ваши документы.
- Общие сведения об экономике блокирования. Рассматриваются факторы, которые следует учитывать при просмотре общей стоимости решения блокирования для вашего текстового корпуса
- Выполнение анализа документов. Предоставляет список вопросов, которые можно задать при анализе типа документа, который помогает определить, что в документе вы хотите игнорировать или исключить, что вы хотите записать в блоках и как вы хотите фрагментировать
- Общие сведения о подходах к блокам. Описывает различные подходы к блокировкам, таким как предложения, фиксированный размер, настраиваемая, большая языковая модель расширения, анализ макета документов, использование моделей машинного обучения
- Общие сведения о том, как структура документов влияет на блоки . Описывает, как степень структуры документа влияет на выбор подхода к фрагментации.
- Чистые блоки. Обсуждает различные подходы к очистке, которые можно реализовать для поддержки совпадений закрытия, устраняя потенциальные различия, которые не являются материалом для семантики текста.
- Блоки расширения. Обсуждает некоторые распространенные поля метаданных, которые следует рассмотреть при увеличении объема данных блока вместе с некоторыми рекомендациями по их потенциальному использованию в поиске и средствах или методах, которые часто используются для создания содержимого метаданных.
- Понимание важности модели внедрения. Описывает, как модель внедрения может оказать значительное влияние на релевантность результатов векторного поиска.
- Выбор модели внедрения . Предоставляет рекомендации по выбору модели внедрения
- Оценка моделей внедрения. Обсуждается два способа оценки модели внедрения: визуализация внедрения и вычисление расстояний внедрения
- Создание индекса поиска. Описывает некоторые ключевые решения, которые необходимо принять для конфигурации векторного поиска, которая применяется к полям векторов.
- Общие сведения о параметрах поиска. Общие сведения о типах поиска, которые можно рассмотреть, например вектор, полнотекстовый, гибридный и ручной. Содержит рекомендации по разделение запроса на вложенные запросы, фильтрация запросов
- Оценка поиска . Предоставляет рекомендации по оценке решения поиска
Завершение этапа оценки крупной языковой модели
- Общие сведения о метриках оценки крупной языковой модели. Общие сведения о нескольких метриках, которые можно использовать для оценки ответов на большие языковые модели, включая заземление, полноту, использование и релевантность.
- Общие сведения о метриках сходства и оценки. Предоставляет небольшой список метрик сходства и оценки, которые можно использовать при оценке решения RAG.
- Понимание важности документации, отчетности и агрегирования . Обсуждение важности документирования гиперпараметров вместе с результатами оценки, агрегирование результатов из нескольких запросов и визуализация результатов
- Акселератор экспериментов RAG — определяет, как репозиторий GitHub RAG Experiment Accelerator можно использовать для поиска лучших стратегий реализации RAG, выполняя несколько экспериментов, сохраняя и оценивая результаты.
Структурированный подход
Из-за количества шагов и переменных важно разработать решение RAG с помощью структурированного процесса оценки. Оцените результаты каждого шага и адаптируйтесь с учетом ваших требований. Хотя вы должны оценить каждый шаг независимо от оптимизации, конечный результат заключается в том, что будет испытано вашими пользователями. Перед определением собственных критериев принятия для каждого отдельного шага обязательно изучите все шаги этого процесса.