Начало работы с бессерверным чатом ИИ с помощью RAG с помощью LlamaIndex
Упростите разработку приложений ИИ с RAG, используя собственные данные, которыми управляет LlamaIndex, функции Azure и бессерверные технологии. Эти средства управляют инфраструктурой и масштабированием автоматически, что позволяет сосредоточиться на функциональных возможностях чат-бота. LlamaIndex обрабатывает конвейер данных от приема до потокового ответа.
Обзор архитектуры
Поток приложения включает в себя:
- Использование интерфейса чата для ввода запроса.
- Отправка запроса пользователя в бессерверный API через HTTP-запросы.
- Получение запроса пользователя, а затем использование платформы LlamaIndex для обработки и потоковой передачи ответа. Бессерверный API использует механизм для создания подключения к крупной языковой модели Azure OpenAI (LLM) и векторному индексу из LlamaIndex.
Простая архитектура приложения чата показана на следующей схеме:
В этом примере используется 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.
Чтобы использовать эту статью, вам потребуются следующие предварительные требования:
- Подписка на Azure — создать ее бесплатно
- Разрешения учетной записи Azure - ваша учетная запись Azure должна иметь разрешения Microsoft.Authorization/roleAssignments/write, например Администратор доступа пользователей или Владелец.
- Учетная запись GitHub.
Открытие среды разработки
Используйте следующие инструкции для развертывания предварительно настроенной среды разработки, содержащей все необходимые зависимости для выполнения этой статьи.
GitHub Codespaces запускает контейнер разработки, управляемый GitHub, с Visual Studio Code для веб-интерфейса в качестве пользовательского интерфейса. Для наиболее простой среды разработки используйте GitHub Codespaces, чтобы у вас были правильные средства разработчика и зависимости, предварительно установленные для выполнения этой статьи.
Важный
Все учетные записи GitHub могут бесплатно использовать пространства Кода до 60 часов каждый месяц с 2 основными примерами. Для получения дополнительной информации см. GitHub Codespaces: ежемесячно включенные часы и хранилище , основные часы.
Открыть в среде разработки кода.
Дождитесь запуска рабочего пространства кода. Этот процесс запуска может занять несколько минут.
В терминале в нижней части экрана войдите в Azure с помощью Интерфейса командной строки разработчика Azure.
azd auth login
Завершите процесс проверки подлинности.
Остальные задачи в этой статье выполняются в контексте этого контейнера разработки.
Развертывание и запуск
Пример репозитория содержит все файлы кода и конфигурации, необходимые для развертывания бессерверного приложения чата в Azure. Ниже приведены инструкции по развертыванию примера в Azure.
Развертывание приложения чата в Azure
Важный
Ресурсы Azure, созданные в этом разделе, несут немедленные затраты, в первую очередь из ресурса поиска ИИ Azure. Эти ресурсы могут влечь за собой затраты, даже если вы прерываете команду до её полного выполнения.
Чтобы подготовить ресурсы Azure и развернуть исходный код, выполните следующую команду Azure Developer CLI:
azd up
Используйте следующую таблицу, чтобы ответить на запросы:
Подсказка Ответ Имя среды Сохраните его коротким и в нижнем регистре. Добавьте имя или псевдоним. Например, john-chat
. Он используется в качестве части имени группы ресурсов.Подписка Выберите подписку, в которой вы хотите создать ресурсы. Расположение (для размещения) Выберите ближайшее место из списка. Расположение модели OpenAI Выберите место, ближайшее к вам, из списка. Если то же расположение доступно в качестве первого расположения, выберите это. Дождитесь развертывания приложения. Для завершения развертывания может потребоваться 5–10 минут.
После успешного развертывания приложения в терминале отображаются два URL-адреса.
Выберите этот URL-адрес, помеченный
Deploying service webapp
, чтобы открыть приложение чата в браузере.
Использование приложения чата для получения ответов из PDF-файлов
Приложение чата предварительно загружено информацией о физических стандартах для внутренней почты из каталога PDF-файла . Вы можете использовать приложение чата, чтобы задать вопросы о почтовых письмах и пакетах. В следующих шагах описан процесс использования приложения чата.
В браузере выберите или введите Сколько стоит отправить большой пакет во Францию?.
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.
Войдите на панель мониторинга GitHub Codespaces (https://github.com/codespaces).
Найдите работающие в настоящее время пространства Codespaces из репозитория GitHub
Azure-Samples/llama-index-javascript
.Откройте контекстное меню
...
для пространства кода, а затем выберите Удалить.
Получить помощь
Этот пример репозитория предлагает сведения об устранении неполадок.
Если проблема не устранена, зарегистрируйте её в разделе Issues репозитория.
Следующий шаг
Ассистенты и вызовы функций в JavaScript