Démarrez avec Serverless AI Chat avec RAG en utilisant LlamaIndex
Simplifiez le développement d'applications d'IA avec RAG en utilisant vos propres données gérées par LlamaIndex, Azure Functions et les technologies Serverless. Ces outils gèrent automatiquement l'infrastructure et la mise à l'échelle, ce qui vous permet de vous concentrer sur la fonctionnalité du chatbot. LlamaIndex gère le pipeline de données tout au long du chemin, de l'ingestion à la réponse en streaming.
Vue d’ensemble de l’architecture
Le flux de l'application comprend
- L'utilisation de l'interface de chat pour saisir une requête.
- Envoi de la requête de l'utilisateur à l'API Serverless via des appels HTTP.
- La réception de la requête de l'utilisateur puis l'utilisation du framework LlamaIndex pour traiter et streamer la réponse. L'API sans serveur utilise un moteur pour créer une connexion avec le grand modèle de langage Azure OpenAI (LLM) et l'index vectoriel de LlamaIndex.
Une architecture simple de l’application de conversation est illustrée dans le diagramme suivant :
Cet exemple utilise LlamaIndex pour générer des embeddings et les stocker dans son propre magasin de vecteurs. LlamaIndex offre également une intégration avec d'autres magasins de vecteurs, y compris Azure AI Search. Cette intégration n'est pas démontrée dans cet exemple.
Où se trouve Azure dans cette architecture ?
L'architecture de l'application repose sur les services et composants suivants :
- Azure OpenAI représente le fournisseur d'IA auquel nous envoyons les requêtes de l'utilisateur.
- LlamaIndex est le cadre qui nous aide à ingérer, transformer et vectoriser notre contenu (fichier PDF) et à créer un index de recherche à partir de nos données.
- Azure Container Apps est l'environnement de conteneurs dans lequel l'application est hébergée.
- Azure Managed Identity nous aide à garantir une sécurité optimale et vous évite, en tant que développeur, d'avoir à gérer des informations d'identification et des clés d'API.
LlamaIndex gère les données de l'ingestion à la recherche.
Pour mettre en œuvre un système RAG (Retrieval-Augmented Generation) à l'aide de LlamaIndex, les étapes clés sont identifiées ci-dessous avec les fonctionnalités de LlamaIndex spécifiées :
Process | Description | LlamaIndex |
---|---|---|
Ingestion de données | Importez des données à partir de sources telles que des PDF, des API ou des bases de données. | SimpleDirectoryReader |
Segmenter les documents | Décomposer les gros documents en segments plus petits. | SentenceSplitter |
Création d'un index vectoriel | Créez un index vectoriel pour des recherches de similarité efficaces. | VectorStoreIndex |
Récupération récursive (facultatif) à partir de l'index | Gérez des ensembles de données complexes grâce à la recherche hiérarchique. | |
Conversion en moteur de recherche | Convertissez l'index vectoriel en moteur de requête. | asQueryEngine |
Configuration avancée des requêtes (facultatif) | Utilisez des agents pour un système multi-agents. | |
Mettre en œuvre le pipeline RAG | Définissez une fonction objective qui prend en compte les requêtes des utilisateurs et récupère les segments de documents pertinents. | |
Effectuer la recherche | Traiter les requêtes et reclasser les documents. | RetrieverQueryEngine, CohereRerank |
Prérequis
Un environnement de conteneur de développement est disponible avec toutes les dépendances requises pour terminer cet article. Vous pouvez exécuter le conteneur de développement dans GitHub Codespaces (dans un navigateur) ou localement à l’aide de Visual Studio Code.
Pour suivre les instructions de cet article, vous devez disposer des éléments suivants :
- Un abonnement Azure - En créer un gratuitement
- Autorisations de compte Azure : votre compte Azure doit disposer d’autorisations Microsoft.Authorization/roleAssignments/write, telles que Administrateur de l’accès utilisateur ou Propriétaire.
- Accès accordé à Azure OpenAI dans l’abonnement Azure souhaité. L’accès à ce service n’est accordé qu’à l’application. Vous pouvez demander l’accès à Azure OpenAI en complétant le formulaire à l’adresse https://aka.ms/oai/access. Ouvrez un problème sur ce dépôt pour nous contacter si vous rencontrez un problème.
- GitHub
Environnement de développement ouvert
Commencez maintenant par un environnement de développement sur lequel toutes les dépendances sont installées pour terminer cet article.
GitHub Codespaces exécute un conteneur de développement géré par GitHub avec Visual Studio Code pour le web comme interface utilisateur. Pour un environnement de développement le plus simple, utilisez GitHub Codespaces pour disposer des outils de développement et des dépendances appropriés préinstallés pour terminer cet article.
Important
Tous les comptes GitHub peuvent utiliser codespaces pendant jusqu’à 60 heures gratuites chaque mois avec 2 instances principales. Pour plus d’informations, consultez Le stockage mensuel inclus et les heures de cœur GitHub Codespaces.
Ouvrez dans Codespace.
Attendez que le codespace démarre. Ce processus de démarrage peut prendre quelques minutes.
Dans le terminal en bas de l’écran, connectez-vous à Azure avec le CLI Azure Developer.
azd auth login
Complétez le processus d’authentification.
Les tâches restantes de cet article s’effectuent dans ce conteneur de développement.
Déployer et exécuter
Le référentiel d’exemples contient tout le code et les fichiers de configuration dont vous avez besoin pour déployer l’application de chat serverless sur Azure. Les étapes suivantes vous guident tout au long du processus de déploiement de l’exemple sur Azure.
Déployer une application de conversation sur Azure
Important
Les ressources Azure créées dans cette section entraînent des coûts immédiats, principalement de la ressource Recherche Azure AI. Ces ressources peuvent entraîner des coûts même si vous interrompez la commande avant la fin de exécution.
Pour provisionner les ressources Azure et déployer le code source, exécutez la commande CLI Azure Developer suivante :
azd up
Utilisez le tableau suivant pour répondre aux invites :
Prompt Réponse Nom de l’environnement Gardez-le court et en minuscules. Ajoutez votre nom ou votre pseudo. Par exemple : john-chat
. Il est utilisé comme partie du nom du groupe de ressources.Abonnement Sélectionnez l’abonnement pour créer les ressources. Emplacement (pour l’hébergement) Sélectionnez un emplacement près de chez vous dans la liste. Emplacement pour le modèle OpenAI Sélectionnez un emplacement près de chez vous dans la liste. Si le premier emplacement choisi est également disponible, sélectionnez-le. Attendez que l’application soit déployée. Le déploiement peut prendre 5 à 10 minutes.
Une fois l’application déployée avec succès, vous voyez deux URL affichées dans le terminal.
Sélectionnez cette URL étiquetée
Deploying service webapp
pour ouvrir l’application de conversation dans un navigateur.
Utiliser l’application de conversation pour obtenir des réponses à partir de fichiers PDF
L'application de chat est préchargée avec des informations sur les normes physiques pour le courrier postal domestique à partir d'un catalogue de fichiers PDF. Vous pouvez utiliser l'application de chat pour poser des questions sur la lettre d'envoi et les packages. Les étapes suivantes vous guident tout au long du processus d’utilisation de l’application de conversation.
Dans le navigateur, sélectionnez ou entrez Combien coûte l'envoi d'un gros package en France ?
LlamaIndex dérive la réponse en utilisant le fichier PDF et en diffusant la réponse.
La réponse provient d'Azure OpenAI avec l'influence des données PDF ingérées dans le magasin vectoriel de LlamaIndex.
Nettoyer les ressources
Pour nettoyer les ressources, il y a deux choses à faire :
- Les ressources Azure, vous pouvez les nettoyer avec Azure Developer CLI, azd.
- Votre environnement de développement, que vous ayez utilisé les Codespaces GitHub ou les DevContainers via Visual Studio Code.
Nettoyage des ressources Azure
Les ressources Azure créées dans cet article sont facturées dans votre abonnement Azure. Si vous pensez ne plus avoir besoin de ces ressources, supprimez-les pour éviter des frais supplémentaires.
Exécutez la commande Azure Developer CLI suivante pour supprimer les ressources Azure et le code source :
azd down --purge
Nettoyer les environnements de développement
La suppression de l’environnement GitHub Codespaces vous permet d’optimiser le nombre d’heures gratuites par cœur que vous obtenez pour votre compte.
Important
Pour plus d’informations sur les droits de votre compte GitHub, consultez GitHub Codespaces mensuel inclus stockage et heures principales.
Connectez-vous au tableau de bord GitHub Codespaces (https://github.com/codespaces).
Localisez vos codespaces en cours d’exécution provenant du référentiel GitHub
Azure-Samples/llama-index-javascript
.Ouvrez le menu contextuel,
...
, pour le codespace, puis sélectionnez Supprimer.
Obtenir de l’aide
Cet exemple de référentiel propose des informations de résolution des problèmes.
Si votre problème n’est pas résolu, consignez votre problème dans les Problèmes du référentiel.