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


Получение расширенного поколения (RAG) в поиске ИИ Azure

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

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

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

  • Возможности запросов и настройка релевантности. Система должна возвращать соответствующие результаты в коротких форматах, необходимых для удовлетворения требований длины маркера для входных данных большой языковой модели (LLM). Время обработки запроса должно быть максимально быстрым.

  • Безопасность, глобальное достижение и надежность как для данных, так и для операций.

  • Интеграция с моделями внедрения для индексирования, а также моделей чата или моделей распознавания речи для получения.

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

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

Note

Новые понятия copilot и RAG? Просмотрите векторный поиск и состояние получения искусства для приложений сгенерируемым искусственным интеллектом.

Современная RAG с агентным поиском данных

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

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

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

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

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

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

Сводка по классическому шаблону RAG, построенная на службе Azure AI Search, изложена так:

  • Начните с вопроса пользователя или запроса (запроса).
  • Отправьте его в качестве запроса в поиск ИИ Azure, чтобы найти соответствующие сведения.
  • Возвращает результаты поиска верхнего ранжированных в LLM.
  • Используйте возможности распознавания естественного языка и рассуждений LLM, чтобы создать ответ на начальный запрос.

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

RAG-шаблоны, включающие поиск ИИ Azure, содержат элементы, указанные на следующем рисунке.

Схема архитектуры получения информации с помощью поиска и ChatGPT.

  • UX приложения (веб-приложение) для взаимодействия с пользователем
  • Сервер приложений или оркестратор (уровень интеграции и координации)
  • Поиск ИИ Azure (система получения сведений)
  • Azure OpenAI (LLM для создания искусственного интеллекта)

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

Сервер приложений или оркестратор — это код интеграции, который координирует передачу данных между извлечением информации и LLM. Распространенные решения включают семантический ядро Azure или LangChain для координации рабочего процесса. LangChain интегрируется с поиском ИИ Azure, что упрощает включение службы "Поиск ИИ Azure" в качестве извлекателя в рабочий процесс. LlamaIndex и семантического ядра являются другими вариантами.

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

LLM получает исходный запрос, а также результаты из поиска ИИ Azure. LLM анализирует результаты и формирует ответ. Если LLM — это ChatGPT, взаимодействие с пользователем может состоять из нескольких обменов репликами. Решение Azure, скорее всего, использует Azure OpenAI, но от этой конкретной службы нет жесткой зависимости.

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

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

Так как вы, вероятно, знаете, какой контент требуется выполнить поиск, рассмотрите возможности индексирования, применимые к каждому типу контента:

Тип контента Индексировано как Features
text токены, неуправляемый текст Индексаторы могут извлекать обычный текст из других ресурсов Azure, таких как служба хранилища Azure и Cosmos DB. Вы также можете отправить любое содержимое JSON в индекс. Чтобы изменить текст в полете, используйте анализаторы и нормализаторы для добавления лексической обработки во время индексирования. Сопоставления синонимов полезны, если исходные документы отсутствуют терминологии, которые могут использоваться в запросе.
text векторы 1 Текст может быть фрагментирован и векторизирован в конвейер индексатора или обрабатываться внешним образом, а затем индексироваться в виде векторных полей в индексе.
image токены, неуправляемый текст 2 Навыки для OCR и анализа изображений могут обрабатывать изображения для распознавания текста или характеристик изображения. Навыки имеют требование индексатора.
image векторы 1 Изображения могут быть векторизированы в конвейер индексатора или обрабатываться внешне для математического представления содержимого изображения, а затем индексироваться в виде векторных полей в индексе. Для векторизации текста и изображений в одном и том же пространстве внедрения можно использовать многомодальную модель Azure AI Vision или модель открытый код, например OpenAI CLIP.

1 Поиск ИИ Azure предоставляет интегрированные блоки данных и векторизацию, но необходимо принять зависимость от индексаторов и наборов навыков. Если вы не можете использовать индексатор, семантический ядро Майкрософт или другие предложения сообщества помогут вам с полным стеком решения. Примеры кода, демонстрирующие оба подхода, см. в репозитории azure-search-vectors-sample.

2 Описания изображений преобразуются в доступный для поиска текст и добавляются в индекс. Сами изображения не хранятся в индексе. Навыки — это встроенная поддержка примененного искусственного интеллекта. Для описания изображений и словесности конвейер индексирования выполняет внутренний вызов Azure OpenAI или Azure AI Vision. Эти навыки передают извлеченный образ для обработки и получают выходные данные в виде текста, индексированного поиском ИИ Azure. Навыки также используются для интегрированного фрагментирования и встраивания данных.

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

После того как данные будут находиться в индексе поиска, вы используете возможности запросов службы "Поиск ИИ Azure" для получения содержимого.

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

В классическом шаблоне RAG запросы и ответы координируются между поисковой системой и LLM. Запрос или вопрос пользователя пересылается как поисковой системе, так и в LLM в качестве запроса. Результаты поиска возвращаются из поисковой системы и перенаправляются в LLM. Ответ, который возвращает его пользователю, является генерируемым ИИ, суммированием или ответом от LLM.

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

Ниже приведены возможности в поиске ИИ Azure, которые используются для формирования запросов:

Функция запроса Purpose Причины использования
Агентический поиск (предварительная версия) Конвейер параллельного выполнения нескольких подзапросов, возвращающий ответ, специализированный для рабочих нагрузок RAG и потребителя агента. Запросы могут быть векторным поиском или поиском по ключевым словам. Семантический ранжирование гарантирует, что лучшие результаты вложенных запросов включены в окончательную структуру ответа. Это рекомендуемый подход для шаблонов RAG на основе поиска ИИ Azure.
Поиск ключевых слов Выполнение запроса по тексту и числового содержимого невектора Полнотекстовый поиск лучше всего подходит для точных совпадений, а не аналогичных совпадений. Запросы полнотекстового поиска ранжируются с помощью алгоритма BM25 и поддерживают настройку релевантности с помощью профилей оценки. Он также поддерживает фильтры и аспекты.
Векторный поиск Выполнение запроса по полям вектора для поиска сходства, где строка запроса является одним или несколькими векторами. Векторы могут представлять все типы содержимого на любом языке.
Гибридный поиск Объединяет все описанные выше методы запроса. Векторные и невекторные запросы выполняются параллельно и возвращаются в едином результирующем наборе. Наиболее значительными преимуществами точности и отзыва являются гибридные запросы.
Фильтры и аспекты Применяется только к полям текста или числовых (невекторов). Уменьшает область поверхности поиска на основе критериев включения или исключения. Добавляет точность в запросы.

Структура ответа запроса

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

  • Поля, определяющие, какие части индекса включены в ответ.
  • Строки, представляющие совпадение из индекса.

Поля отображаются в результатах поиска, когда атрибут является "извлекаемым". Определение поля в схеме индекса имеет атрибуты и определяет, используется ли поле в ответе. Возвращаются только поля с полным текстом или векторным запросом. По умолчанию возвращаются все поля, которые можно получить, но можно использовать "select" для указания подмножества. Кроме "извлекаемого", нет ограничений на поле. Поля могут иметь любую длину или тип. Что касается длины, в поиске ИИ Azure нет максимального ограничения длины поля, но есть ограничения на размер запроса API.

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

Максимальное значение релевантности и отзыв

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

Ниже приведены некоторые советы по максимизации релевантности и отзыву:

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

Код интеграции и LLM

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

Мы рекомендуем демонстрацию Azure OpenAI для примера полного приложения чата RAG с помощью Azure OpenAI и поиска ИИ Azure.

Как приступить к работе

Существует множество способов приступить к работе, включая code-first решения и демо-версии.

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

Note

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

См. также