"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Création d'une application RAG avec LlamaIndex.ts et Azure OpenAI : mise en route !

Création d'une application RAG avec LlamaIndex.ts et Azure OpenAI : mise en route !

Publié le 2024-11-08
Parcourir:666

Alors que l'IA continue de façonner notre façon de travailler et d'interagir avec la technologie, de nombreuses entreprises recherchent des moyens d'exploiter leurs propres données au sein d'applications intelligentes. Si vous avez utilisé des outils comme ChatGPT ou Azure OpenAI, vous savez déjà comment l'IA générative peut améliorer les processus et améliorer l'expérience utilisateur. Cependant, pour des réponses réellement personnalisées et pertinentes, vos applications doivent intégrer vos données propriétaires.

C'est là qu'intervient la génération de récupération augmentée (RAG), fournissant une approche structurée pour intégrer la récupération de données avec des réponses basées sur l'IA. Avec des frameworks comme LlamaIndex, vous pouvez facilement intégrer cette fonctionnalité dans vos solutions, libérant ainsi tout le potentiel de vos données d'entreprise.

Building a RAG app with LlamaIndex.ts and Azure OpenAI: Getting started!

Vous souhaitez exécuter et explorer rapidement l'application ? Cliquez ici.

Qu'est-ce que RAG - Génération augmentée par récupération ?

Retrieval-Augmented Generation (RAG) est un cadre de réseau neuronal qui améliore la génération de texte d'IA en incluant un composant de récupération pour accéder aux informations pertinentes et intégrer vos propres données. Il se compose de deux parties principales :

  • Retriever : un modèle de récupération dense (par exemple, basé sur BERT) qui recherche un vaste corpus de documents pour trouver des passages pertinents ou des informations liées à une requête donnée.
  • Générateur : un modèle séquence à séquence (par exemple, basé sur BART ou T5) qui prend la requête et le texte récupéré en entrée et génère une réponse cohérente et enrichie contextuellement.

Le récupérateur trouve les documents pertinents et le générateur les utilise pour créer des réponses plus précises et informatives. Cette combinaison permet au modèle RAG d'exploiter efficacement les connaissances externes, améliorant ainsi la qualité et la pertinence du texte généré.

Comment LlamaIndex implémente-t-il RAG ?

Pour implémenter un système RAG à l'aide de LlamaIndex, suivez ces étapes générales :

Ingestion de données :

  • Chargez vos documents dans LlamaIndex.ts à l'aide d'un chargeur de documents tel que SimpleDirectoryReader, qui permet d'importer des données à partir de diverses sources telles que des PDF, des API ou des bases de données SQL.
  • Décomposez les documents volumineux en morceaux plus petits et gérables à l'aide de SentenceSplitter.

Création d'index :

  • Créez un index vectoriel de ces morceaux de document à l'aide de VectorStoreIndex, permettant des recherches de similarité efficaces basées sur des intégrations.
  • Facultativement, pour les ensembles de données complexes, utilisez des techniques de récupération récursive pour gérer les données structurées hiérarchiquement et récupérer les sections pertinentes en fonction des requêtes des utilisateurs.

Configuration du moteur de requête :

  • Convertissez l'index vectoriel en un moteur de requête à l'aide de asQueryEngine avec des paramètres tels que similarityTopK pour définir le nombre de documents principaux à récupérer.
  • Pour des configurations plus avancées, créez un système multi-agents dans lequel chaque agent est responsable de documents spécifiques et un agent de niveau supérieur coordonne le processus global de récupération.

Récupération et génération :

  • Implémentez le pipeline RAG en définissant une fonction objective qui récupère les morceaux de documents pertinents en fonction des requêtes des utilisateurs.
  • Utilisez RetrieverQueryEngine pour effectuer la récupération et le traitement des requêtes, avec des étapes de post-traitement facultatives telles que le reclassement des documents récupérés à l'aide d'outils tels que CohereRerank.

Pour un exemple pratique, nous avons fourni un exemple d'application pour démontrer une implémentation complète de RAG à l'aide d'Azure OpenAI.

Exemple d’application pratique RAG

Nous allons maintenant nous concentrer sur la création d'une application RAG à l'aide de LlamaIndex.ts (l'implémentation TypeScipt de LlamaIndex) et Azure OpenAI, et la déployer en tant qu'applications Web sans serveur sur Azure Container Apps.

Conditions requises pour exécuter l'exemple

  • Azure Developer CLI (azd) : un outil de ligne de commande pour déployer facilement l'intégralité de votre application, y compris le backend, le frontend et les bases de données.
  • Compte Azure : vous aurez besoin d'un compte Azure pour déployer l'application. Obtenez un compte Azure gratuit avec quelques crédits pour commencer.

Vous trouverez le projet de démarrage sur GitHub. Nous vous recommandons de créer ce modèle afin de pouvoir le modifier librement en cas de besoin :

Building a RAG app with LlamaIndex.ts and Azure OpenAI: Getting started!

Architecture de haut niveau

L'application de projet de démarrage est construite sur la base de l'architecture suivante :

  • Azure OpenAI : fournisseur d'IA qui traite les requêtes de l'utilisateur.
  • LlamaIndex.ts : le framework qui permet d'ingérer, de transformer et de vectoriser le contenu (PDF) et de créer un index de recherche.
  • Azure Container Apps : environnement de conteneur dans lequel l'application sans serveur est hébergée.
  • Azure Managed Identity : garantit une sécurité de premier ordre et élimine le besoin de gérer les informations d'identification et les clés API.

Building a RAG app with LlamaIndex.ts and Azure OpenAI: Getting started!

Pour plus de détails sur les ressources déployées, consultez le dossier infra disponible dans tous nos exemples.

Exemples de flux de travail utilisateur

L'exemple d'application contient une logique pour deux flux de travail :

  1. Ingestion de données : les données sont récupérées, vectorisées et des index de recherche sont créés. Si vous souhaitez ajouter d'autres fichiers tels que des fichiers PDF ou Word, c'est ici que vous devez les ajouter.

      npm run generate
    
  2. Traitement des demandes d'invite : l'application reçoit les invites des utilisateurs, les envoie à Azure OpenAI et augmente ces invites en utilisant l'index vectoriel comme outil de récupération.

Exécution de l'exemple

Avant d'exécuter l'exemple, assurez-vous d'avoir provisionné les ressources Azure nécessaires.

Pour exécuter le modèle GitHub dans GitHub Codespace, cliquez simplement sur
Building a RAG app with LlamaIndex.ts and Azure OpenAI: Getting started!

Dans votre instance Codespaces, connectez-vous à votre compte Azure, depuis votre terminal :

azd auth login

Provisionner, empaqueter et déployer l'exemple d'application sur Azure à l'aide d'une seule commande :

azd up

Pour exécuter et essayer l'application localement, installez les dépendances npm et exécutez l'application :

npm install
npm run dev

L'application s'exécutera sur le port 3000 de votre instance Codespaces ou sur http://localhost:3000 dans votre navigateur.

Conclusion

Ce guide a montré comment créer une application RAG (Retrieval-Augmented Generation) sans serveur à l'aide de LlamaIndex.ts et Azure OpenAI, déployée sur Microsoft Azure. En suivant ce guide, vous pouvez tirer parti de l'infrastructure d'Azure et des capacités de LlamaIndex pour créer de puissantes applications d'IA qui fournissent des réponses enrichies contextuellement en fonction de vos données.

Nous sommes ravis de voir ce que vous créez avec cette application de démarrage. N'hésitez pas à le créer et à aimer le référentiel GitHub pour recevoir les dernières mises à jour et fonctionnalités.

Déclaration de sortie Cet article est reproduit à l'adresse : https://dev.to/azure/building-a-rag-app-with-llamaindexts-and-azure-openai-getting-started-3pgb?1 En cas d'infraction, veuillez contacter study_golang. @163.com supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3