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


Начало работы с бессерверным чатом ИИ с помощью RAG с помощью LlamaIndex

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

скриншот чат-приложения в браузере, показывающий ввод чата и ответ.

Обзор архитектуры

Поток приложения включает в себя:

  • Использование интерфейса чата для ввода запроса.
  • Отправка запроса пользователя в бессерверный API через HTTP-запросы.
  • Получение запроса пользователя, а затем использование платформы LlamaIndex для обработки и потоковой передачи ответа. Бессерверный API использует механизм для создания подключения к крупной языковой модели Azure OpenAI (LLM) и векторному индексу из LlamaIndex.

Простая архитектура приложения чата показана на следующей схеме:

схема архитектуры приложения чата LlamaIndex RAG.

В этом примере используется LlamaIndex для создания векторных представлений и хранения их в собственном векторном хранилище. LlamaIndex также обеспечивает интеграцию с другими векторными хранилищами включая поиска ИИ Azure. Эта интеграция не показана в этом примере.

Где находится Azure в этой архитектуре?

Архитектура приложения зависит от следующих служб и компонентов:

  • Azure OpenAI представляет собой поставщика ИИ, которому мы отправляем запросы пользователя.
  • LlamaIndex — это платформа, которая помогает нам в процессе приема, преобразования и векторизации нашего содержимого (PDF-файла), а также создания индекса поиска на основе наших данных.
  • Azure Container Apps — это контейнерная среда, где размещается приложение.
  • управляемого удостоверения Azure помогает обеспечить лучшую безопасность класса и устранять требования, необходимые для разработчика, чтобы иметь дело с учетными данными и ключами API.

LlamaIndex управляет данными от приема до извлечения

Чтобы реализовать систему RAG (Retrieval-Augmented поколения) с помощью LlamaIndex, следующие ключевые шаги соответствуют функциям LlamaIndex:

Процесс Описание LlamaIndex
Прием данных Импортируйте данные из источников, таких как PDF-файлы, API или базы данных. ПростойЧитательКаталога
Документные фрагменты Разделите большие документы на небольшие блоки. Разделитель предложений
Создание векторного индекса Создайте векторный индекс для эффективного поиска сходства. VectorStoreIndex
Рекурсивное извлечение (необязательно) из индекса Управление сложными наборами данных с помощью иерархического извлечения.
Преобразование в обработчик запросов Преобразуйте векторный индекс в обработчик запросов. asQueryEngine
Расширенная настройка запроса (необязательно) Используйте агентов для мультиагентной системы.
Реализация конвейера RAG Определите целевую функцию, которая принимает пользовательские запросы и извлекает соответствующие фрагменты документов.
Выполнить извлечение Обработка запросов и повторная ранжировка документов. RetrieverQueryEngine, CohereRerank

Необходимые условия

Контейнер среды разработки доступен со всеми зависимостями, необходимыми для завершения работы над этой статьей. Контейнер разработки можно запустить в GitHub Codespaces (в браузере) или локально с помощью Visual Studio Code.

Чтобы использовать эту статью, вам потребуются следующие предварительные требования:

Открытие среды разработки

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

GitHub Codespaces запускает контейнер разработки, управляемый GitHub, с Visual Studio Code для веб-интерфейса в качестве пользовательского интерфейса. Для наиболее простой среды разработки используйте GitHub Codespaces, чтобы у вас были правильные средства разработчика и зависимости, предварительно установленные для выполнения этой статьи.

Важный

Все учетные записи GitHub могут бесплатно использовать пространства Кода до 60 часов каждый месяц с 2 основными примерами. Для получения дополнительной информации см. GitHub Codespaces: ежемесячно включенные часы и хранилище , основные часы.

  1. Открыть в среде разработки кода.

    Открыть в GitHub Codespaces

  2. Дождитесь запуска рабочего пространства кода. Этот процесс запуска может занять несколько минут.

  3. В терминале в нижней части экрана войдите в Azure с помощью Интерфейса командной строки разработчика Azure.

    azd auth login
    

    Завершите процесс проверки подлинности.

  4. Остальные задачи в этой статье выполняются в контексте этого контейнера разработки.

Развертывание и запуск

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

Развертывание приложения чата в Azure

Важный

Ресурсы Azure, созданные в этом разделе, несут немедленные затраты, в первую очередь из ресурса поиска ИИ Azure. Эти ресурсы могут влечь за собой затраты, даже если вы прерываете команду до её полного выполнения.

  1. Чтобы подготовить ресурсы Azure и развернуть исходный код, выполните следующую команду Azure Developer CLI:

    azd up
    
  2. Используйте следующую таблицу, чтобы ответить на запросы:

    Подсказка Ответ
    Имя среды Сохраните его коротким и в нижнем регистре. Добавьте имя или псевдоним. Например, john-chat. Он используется в качестве части имени группы ресурсов.
    Подписка Выберите подписку, в которой вы хотите создать ресурсы.
    Расположение (для размещения) Выберите ближайшее место из списка.
    Расположение модели OpenAI Выберите место, ближайшее к вам, из списка. Если то же расположение доступно в качестве первого расположения, выберите это.
  3. Дождитесь развертывания приложения. Для завершения развертывания может потребоваться 5–10 минут.

  4. После успешного развертывания приложения в терминале отображаются два URL-адреса.

  5. Выберите этот URL-адрес, помеченный Deploying service webapp, чтобы открыть приложение чата в браузере.

    снимок экрана: выходные данные команды развертывания с URL-адресом веб-приложения.

Использование приложения чата для получения ответов из PDF-файлов

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

  1. В браузере выберите или введите Сколько стоит отправить большой пакет во Францию?.

  2. LlamaIndex определяет ответ, использует PDF-файл и потоково передает ответ.

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

    Ответ предоставляется Azure OpenAI, с использованием данных PDF, которые были загружены в хранилище векторов LlamaIndex.

Очистка ресурсов

Чтобы очистить ресурсы, существует два способа решения.

  • Ресурсы Azure можно очистить с помощью Интерфейса командной строки разработчика Azure, azd.
  • Ваша среда разработчика; GitHub Codespaces или DevContainers с помощью Visual Studio Code.

Очистка ресурсов Azure

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

Выполните следующую команду Командной строки разработчика Azure, чтобы удалить ресурсы Azure и удалить исходный код:

azd down --purge

Очистка сред разработчика

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

Важный

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

  1. Войдите на панель мониторинга GitHub Codespaces (https://github.com/codespaces).

  2. Найдите работающие в настоящее время пространства Codespaces из репозитория GitHub Azure-Samples/llama-index-javascript.

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

  3. Откройте контекстное меню ...для пространства кода, а затем выберите Удалить.

Получить помощь

Этот пример репозитория предлагает сведения об устранении неполадок.

Если проблема не устранена, зарегистрируйте её в разделе Issues репозитория.

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