Créer des applications avancées de génération augmentée par récupération (RAG) avec LlamaIndex
Introduction
Lors d’un récent Unstructured Data Meetup organisé par Zilliz (San Francisco), Laurie Voss, VP of Developer Relations chez LlamaIndex, a donné une présentation sur « Créer des applications RAG avancées avec LlamaIndex. Il a partagé ses connaissances sur la manière de rendre les frameworks de Génération augmentée par récupération (RAG) plus simples et prêts pour la production avec LlamaIndex.
Plongeons dans les concepts du RAG et voyons comment LlamaIndex 🦙 aide à développer des applications RAG. Pour donner un bref contexte sur LlamaIndex (anciennement connu sous le nom de GPTIndex), une grande partie de leurs premiers travaux a été réalisée avec des technologies fermées robustes comme OpenAI. Cependant, à mesure que les modèles open source ont commencé à rattraper leur retard, ils ont commencé à s’intégrer à des alternatives open source. Qu’il s’agisse de LLM, de modèles d’embedding ou de technologies de reclassement, ils couvrent désormais un certain nombre d’options permettant à un utilisateur d’utiliser ses propres données pour créer une application RAG.
Qu’est-ce que la Génération augmentée par récupération (RAG) ?
Workflow RAG systématique
Le RAG est un framework conçu pour dépasser les limites des LLM en les dotant de capacités de récupération. Le principal inconvénient des LLM est qu’ils disposent de fenêtres de contexte limitées et ne peuvent traiter qu’une partie des données d’une organisation simultanément (pas plus d’un million de tokens à la fois). Le RAG résout ce problème en récupérant sélectivement uniquement le texte/les données les plus pertinents afin de fournir les réponses les plus précises.
Principaux avantages du RAG :
Précision : Lorsque des données pertinentes et concises sont récupérées par les méthodes de récupération mises en œuvre et envoyées à un LLM, cela garantit des réponses précises.
Actualité : Certains peuvent se demander pourquoi les entreprises n’entraînent pas les LLM avec leurs données. Le défi du fine-tuning est que charger un LLM dans n’importe quel environnement, en particulier les modèles de haute qualité, est déjà coûteux. En revanche, la Génération augmentée par récupération (RAG) permet des mises à jour des données faciles et en temps réel. Cela fait du RAG une solution pratique pour les environnements de données dynamiques, tels que ceux que l’on trouve dans les grands cabinets d’avocats privés ou les entreprises industrielles.
Provenance : Le RAG peut retracer les sources d’information de niche, ce qui est crucial pour les applications nécessitant des données vérifiables.
Pour simplifier, souvenez-vous des tests de compréhension que vous faisiez enfant ? Le RAG y ressemble beaucoup. Les fragments de texte récupérés agissent comme un texte de compréhension, à partir duquel l’enfant (LLM) doit répondre aux requêtes. C’est aussi simple que cela ;-)
Techniques RAG avancées
Deux techniques sont largement utilisées pour la récupération d’informations.
Recherche par mots-clés : Les méthodes traditionnelles de recherche par mots-clés restent efficaces pour récupérer des données à partir de termes spécifiques.
Recherche vectorielle(la plus puissante), également connue sous le nom de recherche de similarité vectorielle : Imaginez une recherche vectorielle comme quelque chose qui transforme les mots en listes numériques appelées vecteurs. Ces vecteurs capturent l’essence du sens de chaque mot. Nous pouvons trouver des mots similaires en comparant ces vecteurs en fonction de leur proximité numérique (mesurée principalement par la similarité cosinus ou le produit scalaire). La recherche vectorielle nous aide à récupérer les données de manière beaucoup plus efficace et fiable. Une fois la recherche vectorielle effectuée, le LLM peut accéder au texte le plus pertinent pour répondre à la requête.
Les moteurs de recherche sont utilisés dans les systèmes RAG pour récupérer des documents à partir de diverses sources, améliorant ainsi la récupération d’informations pertinentes et la réactivité globale des outils d’IA.
Lorsque vous pensez à une recherche vectorielle, pensez à votre dictionnaire Oxford. Cependant, regroupez les mots par leurs séquences de lettres au lieu de les regrouper par leur signification. Les modèles de plongement vectoriel font la même chose de manière dimensionnelle.
Regroupement dimensionnel et sémantique des termes à l’aide de la recherche vectorielle
De plus, les bases de données vectorielles open source comme Milvus peuvent être utilisées pour configurer gratuitement des magasins vectoriels ! Découvrez-le ici.
LlamaIndex : simplifier la mise en œuvre de RAG
LlamaIndex est un framework open source qui connecte vos données aux LLM, disponible en Python et TypeScript. Il simplifie la création d’applications RAG, permettant aux développeurs de construire des systèmes RAG fonctionnels avec un minimum de code. Pour implémenter une fonctionnalité RAG de base, vous n’avez besoin que de cinq lignes de code Python, grâce à LlamaIndex.
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine()
response = query_engine.query("What did the author do growing up?")
Fonctionnalités RAG avancées pour l’ingestion de données et l’interrogation avec LlamaIndex
LlamaIndex fournit également un large éventail de fonctionnalités avancées d’ingestion de données et d’interrogation pour vos applications RAG.
Ingestion
Connecteurs de données : LlamaHub de LlamaIndex fournit des connecteurs pour diverses sources de données, notamment Google Drive, Notion, Slack, ainsi que des bases de données comme Postgres et MongoDB.
Analyse PDF : LlamaIndex offre des capacités avancées d’analyse PDF, convertissant des PDF complexes en Markdown pour une meilleure compréhension par les LLM, puisque les LLM sont entraînés sur une grande quantité de données Markdown.
Modèles de plongement : LlamaIndex prend en charge divers modèles de plongement open source et propriétaires, permettant une personnalisation en fonction du domaine.
Magasins vectoriels : LlamaIndex s’intègre à plusieurs bases de données vectorielles, là encore open source et propriétaires, notamment Milvus et Zilliz Cloud, pour un stockage et une récupération efficaces.
Interrogation
- Moteur de requêtes à sous-questions
Pour les questions complexes qui nécessitent plusieurs requêtes simples, le moteur de requêtes à sous-questions décompose la requête principale en parties plus petites, récupère les réponses à partir de différentes sources et les combine en une seule réponse.
Décomposition des requêtes pour une meilleure récupération
Décomposition des requêtes pour une meilleure récupération
Collecte de réponses séparées
Collecte de réponses séparées
Réponse finale compilée
Réponse finale compilée
Consultez le code ici.
- Récupération du petit au grand
Cette méthodologie consiste à transformer en vecteurs de très petits morceaux de texte (des phrases fortement et probablement pertinentes pour la requête de l’utilisateur) et à récupérer la fenêtre de vecteurs autour de cette phrase, à la fois vers le haut et vers le bas.
Visualisation de la méthodologie de récupération du petit au grand
Visualisation de la méthodologie de récupération du petit au grand
Implémentation réelle
Implémentation réelle
Consultez le code ici.
Le pré-étiquetage des documents avec des métadonnées (par exemple, année, utilisateur, entreprise, mots-clés), comme dans l’exemple ci-dessous, permet un filtrage et une récupération plus précis, améliorant la précision des réponses du LLM. Cette fonctionnalité peut aider avec la recherche par mots-clés. Considérez les métadonnées comme des propriétés personnalisées pour le texte.
Une publicité pour un T-shirt
Une publicité pour un T-shirt
En combinant la recherche par mots-clés et la recherche vectorielle, la recherche hybride exécute les requêtes selon les méthodes spécifiées. Elle fusionne les résultats en fonction des scores de confiance, garantissant que les données les plus pertinentes sont récupérées — un exemple détaillé avec du code ici.
- Agents
Les agents LlamaIndex sont des composants logiciels semi-autonomes qui utilisent divers outils pour atteindre un objectif. Ils peuvent combiner plusieurs stratégies et outils de récupération pour répondre efficacement à des requêtes complexes.
Voyez les choses ainsi : un outil est une fonction utilisateur prédéfinie pour laquelle un utilisateur peut définir une description de ce qu’elle fait, et l’agent est un ingénieur qui travaille avec ces outils. Si l’utilisateur interroge directement un LLM sur le résultat de la multiplication de deux très grands nombres, il donnera très probablement une réponse proche de la véritable réponse exacte, mais pas identique. Mais si nous lui fournissons un outil de multiplication qu’il peut appeler à partir d’une description définie, il obtiendra systématiquement la bonne réponse, quelle que soit la taille des nombres.
Flux de travail agentique simple
Flux de travail agentique simple
De même, un utilisateur peut construire un flux de travail Agentic RAG en donnant au LLM les outils et leurs descriptions, puis en le laissant décider lequel utiliser pour une requête RAG spécifique.
Résumé du RAG avancé
La présentation de Laurie présente des cadres d’application de base et avancés pour le RAG, que nous pouvons créer avec un minimum de lignes de code en utilisant LlamaIndex. LlamaIndex nous fournit également LlamaParse, qui peut nous aider à indexer nos données dans nos bases de données vectorielles préférées comme Milvus localement ou dans le cloud. Il revient finalement à l’utilisateur de choisir ce qui convient le mieux à ses cas d’utilisation. Cette présentation a également montré diverses stratégies RAG que l’on peut adopter pour optimiser la récupération et la génération.
Citations
Liu, Jerry. “Llamahub.” Llamahub, 2023, https://cloud.llamaindex.ai/parse.
Liu, Jerry. “Tutoriel de démarrage (OpenAI).” LlamaIndex, 2023, https://docs.llamaindex.ai/en/stable/getting_started/starter_example/.
“Llama Hub.” Llama Hub, 2023, https://llamahub.ai/.
LlamaIndex. “Recherche hybride.” LlamaIndex, 2023, https://docs.llamaindex.ai/en/stable/examples/vector_stores/MilvusHybridIndexDemo/.
LlamaIndex. “Agents basés sur les LLM.” LlamaIndex, 2023, https://docs.llamaindex.ai/en/stable/use_cases/agents/.
LlamaIndex. “Remplacement des métadonnées + fenêtre de phrase de nœud.” LlamaIndex, 2023, https://docs.llamaindex.ai/en/stable/examples/node_postprocessor/MetadataReplacementDemo/.
LlamaIndex. “Moteur de requête à sous-questions.” LlamaIndex, 2023, https://docs.llamaindex.ai/en/stable/examples/query_engine/sub_question_query_engine/.
Milvus. “Milvus.” Milvus: Vector database, 2019, https://milvus.io/.
Milvus. “Milvus Vector Datbases.” Milvus: Vector database, 2023, https://milvus.io/.
Milvus. “Documentation de démarrage rapide Milvus.” Milvus, 5 mai 2024, https://milvus.io/docs/quickstart.md.
Continuer à lire

3 Easiest Ways to Use Claude Code on Your Mobile Phone
Run Claude Code from your phone with Remote Control, Happy Coder, or SSH + Tailscale. Comparison table, setup steps, and tools for typing, memory, and parallel tasks.

Expanding Our Global Reach: Zilliz Cloud Launches in Azure Central India
Zilliz Cloud expands to Azure Central India. This new region helps customers meet compliance, reduce latency, and optimize cloud costs when building AI applications.
Milvus/Zilliz + Surveillance: How Vector Databases Transform Multi-Camera Tracking
See how Milvus vector database enhances multi-camera tracking with similarity-based matching for better surveillance in retail, warehouses and transport hubs.


