Partager via


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.

Capture d'écran de l'application de chat dans le navigateur montrant l'entrée du chat et la réponse.

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 :

Diagramme de l'architecture de l'application de chat RAG de LlamaIndex.

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.

  1. Ouvrez dans Codespace.

    Ouvrir dans un GitHub Codespaces

  2. Attendez que le codespace démarre. Ce processus de démarrage peut prendre quelques minutes.

  3. 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.

  4. 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.

  1. Pour provisionner les ressources Azure et déployer le code source, exécutez la commande CLI Azure Developer suivante :

    azd up
    
  2. 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.
  3. Attendez que l’application soit déployée. Le déploiement peut prendre 5 à 10 minutes.

  4. Une fois l’application déployée avec succès, vous voyez deux URL affichées dans le terminal.

  5. Sélectionnez cette URL étiquetée Deploying service webapp pour ouvrir l’application de conversation dans un navigateur.

    Capture d'écran de la sortie de la commande de déploiement montrant l'URL de l'application Web.

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.

  1. Dans le navigateur, sélectionnez ou entrez Combien coûte l'envoi d'un gros package en France ?

  2. LlamaIndex dérive la réponse en utilisant le fichier PDF et en diffusant la réponse.

    Capture d'écran de l'application de chat dans le navigateur montrant l'entrée du chat et 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.

  1. Connectez-vous au tableau de bord GitHub Codespaces (https://github.com/codespaces).

  2. Localisez vos codespaces en cours d’exécution provenant du référentiel GitHub Azure-Samples/llama-index-javascript.

    Capture d’écran de tous les Codespaces en cours d’exécution, avec leur état et leurs modèles.

  3. 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.

Étape suivante