LlamaIndex : définition, composants et exemple de RAG
Le framework open source qui relie vos documents aux modèles de langage : connecteurs, nœuds, index, moteurs de requête, workflows et agents, avec un exemple de RAG en quelques lignes.
Par Équipe Blent· Mis à jour le · 14 min de lecture· Niveau intermédiaire
LlamaIndex en bref
- Type
- Framework open source de données pour LLM
- Créateur
- Jerry Liu, fin 2022 (sous le nom GPT Index)
- Éditeur
- LlamaIndex Inc.
- Langages
- Python, TypeScript
- Licence
- MIT
- Spécialité
- RAG, agents documentaires, extraction
- Offre commerciale
- LlamaCloud et LlamaParse
Définition : LlamaIndex
LlamaIndex est un framework open source, disponible en Python et en TypeScript, conçu pour connecter des données privées à des modèles de langage. Il fournit des connecteurs pour charger des documents de toutes sources, des outils pour les découper en nœuds et les vectoriser, des index pour les stocker, puis des moteurs de requête et de conversation qui retrouvent les passages pertinents et les transmettent au LLM. Créé fin 2022 par Jerry Liu sous le nom de GPT Index, il est devenu l'un des outils de référence pour construire des systèmes RAG, des agents documentaires et des workflows d'extraction.
En une phrase : LlamaIndex transforme vos documents en index interrogeables par un LLM, du chargement des données jusqu'à la réponse sourcée.
Dans cette définition
Qu'est-ce que LlamaIndex ?
LlamaIndex est un framework dont la promesse tient en une phrase : rendre vos données exploitables par un LLM. Là où un modèle de langage ne connaît que ses données d'entraînement, LlamaIndex fournit toute la chaîne qui permet de lui apporter, à chaque question, les bons extraits de vos documents.
Le projet est né en novembre 2022, quelques semaines avant la sortie de ChatGPT. Jerry Liu, alors ingénieur en apprentissage automatique, publie sur GitHub un petit utilitaire d'indexation baptisé GPT Index, destiné à contourner la taille limitée du contexte de GPT-3. Le projet est renommé LlamaIndex début 2023, puis devient une entreprise, LlamaIndex Inc., cofondée avec Simon Suo. La bibliothèque reste open source sous licence MIT ; l'entreprise commercialise à côté des services managés de parsing et d'ingestion.
LlamaIndex se positionne comme un framework de données : son vocabulaire (documents, nœuds, index, retrievers) décrit le parcours de l'information plutôt que celui des appels au modèle. C'est ce qui le distingue de LangChain, plus généraliste. Les deux couvrent le RAG, mais LlamaIndex pousse plus loin les options d'ingestion, de découpage et de recherche.
À retenir : LlamaIndex ne remplace ni le LLM ni la base vectorielle. Il orchestre le chemin qui mène de vos documents bruts à une réponse sourcée.
Exemple : un RAG documentaire en quelques lignes
Le code suivant indexe un dossier de documents internes, puis répond à une question en citant les fichiers utilisés. Il suppose l'installation des paquets llama-index (qui inclut les intégrations OpenAI) et une clé d'API dans la variable OPENAI_API_KEY.
from llama_index.core import Settings, SimpleDirectoryReader, VectorStoreIndex
from llama_index.core.node_parser import SentenceSplitter
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.llms.openai import OpenAI
# Modèles de génération et d'embedding, réglés une fois pour toute l'application
Settings.llm = OpenAI(model="gpt-4.1-mini", temperature=0)
Settings.embed_model = OpenAIEmbedding(model="text-embedding-3-small")
# 1. Chargement : PDF, DOCX, Markdown... avec métadonnées (nom de fichier, dates)
documents = SimpleDirectoryReader("./docs_rh", recursive=True).load_data()
# 2 et 3. Découpage en nœuds puis indexation vectorielle
index = VectorStoreIndex.from_documents(
documents,
transformations=[SentenceSplitter(chunk_size=512, chunk_overlap=64)],
)
index.storage_context.persist(persist_dir="./storage")
# 4. Interrogation : retriever (4 nœuds) + synthèse de la réponse
query_engine = index.as_query_engine(similarity_top_k=4)
response = query_engine.query("Combien de jours de télétravail sont autorisés par semaine ?")
print(response)
for node in response.source_nodes:
print(node.metadata["file_name"], round(node.score, 3))
Chaque ligne correspond à une étape du pipeline. SimpleDirectoryReader choisit le lecteur adapté à chaque extension de fichier. SentenceSplitter découpe les textes en nœuds d'environ 512 tokens en respectant les fins de phrases. VectorStoreIndex calcule les embeddings et les stocke, ici en mémoire puis sur disque. Enfin, as_query_engine assemble un retriever et un synthétiseur : la réponse est accompagnée des nœuds sources et de leur score de similarité, ce qui permet d'afficher les documents consultés.
Pour transformer cet exemple en assistant conversationnel, il suffit de remplacer la dernière partie par index.as_chat_engine(chat_mode="condense_plus_context") : les questions de suivi sont alors reformulées à partir de l'historique avant la recherche. Pour passer en production, l'index en mémoire est remplacé par une base vectorielle comme Pinecone ou Weaviate, sans changer la logique applicative. Notre tutoriel LlamaIndex : créer son RAG en quelques lignes de code détaille chaque composant.
Au-delà du RAG simple : workflows, agents et LlamaCloud
Le query engine couvre le cas le plus courant. Pour aller plus loin, LlamaIndex propose plusieurs couches complémentaires.
Index et retrievers spécialisés
Le VectorStoreIndex n'est pas le seul type d'index. Un SummaryIndex parcourt tous les nœuds pour produire une synthèse globale, utile pour résumer un document entier. Un index de graphe de propriétés relie entités et relations extraites du corpus. Côté recherche, LlamaIndex fournit des retrievers hybrides (vecteurs et BM25), des routeurs qui choisissent l'index adapté à la question, et des postprocesseurs de reranking pour réordonner les nœuds avant la génération.
Workflows et agents
Les workflows décrivent une application comme une suite d'étapes déclenchées par des événements. Chaque étape est une fonction asynchrone décorée par @step, qui reçoit un événement et en émet un autre. Ce modèle permet d'exprimer des boucles (relancer une recherche si les nœuds sont peu pertinents), des branches parallèles et des points d'attente humaine. Les agents de LlamaIndex reposent sur cette couche : un agent reçoit des outils (un query engine, une fonction Python, une API) et décide lesquels appeler. La logique est proche de celle de LangGraph, avec une modélisation par événements plutôt que par graphe d'état.
LlamaParse et LlamaCloud
L'offre commerciale de l'éditeur cible le maillon souvent le plus faible d'un RAG : la lecture des documents. LlamaParse convertit des PDF, présentations ou tableurs complexes en Markdown structuré, en préservant tableaux et hiérarchie des titres. LlamaCloud étend ce service à l'ingestion managée : synchronisation des sources, découpage, indexation et extraction structurée, accessibles par API. Ces services restent optionnels : la bibliothèque open source fonctionne entièrement sans eux.
Que peut-on construire avec LlamaIndex ?
LlamaIndex est à son aise dès qu'une application doit lire, structurer et interroger un corpus documentaire.
Assistant documentaire
Interroger une documentation, un intranet ou un fonds de procédures avec des réponses sourcées.
Chatbot sur une base de connaissances
Un chat engine qui garde le fil de l'échange et reformule les questions de suivi.
Extraction structurée
Extraire des champs typés (montants, dates, parties) de factures, contrats ou rapports.
Analyse de documents complexes
Exploiter des PDF riches en tableaux, colonnes et schémas grâce à un parsing adapté.
Agent de recherche
Un agent qui choisit entre plusieurs index ou outils selon la question posée.
Questions sur plusieurs sources
Combiner un index vectoriel, une base SQL et une API dans une même réponse.
Quels sont les avantages de LlamaIndex ?
Son intérêt tient à sa spécialisation : tout le framework est pensé autour du cycle de vie des données dans une application LLM.
- Un RAG fonctionnel en quelques lignes, avec des valeurs par défaut raisonnables.
- Un très large catalogue de connecteurs de données et d'intégrations de bases vectorielles.
- Des abstractions dédiées au RAG : nœuds, index, retrievers, synthétiseurs de réponse.
- Des stratégies avancées intégrées : recherche hybride, reranking, requêtes multi-index.
- Des workflows événementiels pour passer d'un RAG simple à un agent documentaire.
- Une offre de parsing (LlamaParse) efficace sur les documents complexes.
Quelles sont les limites de LlamaIndex ?
La simplicité des premiers pas masque une complexité qui réapparaît dès que l'on personnalise le pipeline.
- Les valeurs par défaut cachent des choix (découpage, modèle, prompts) qu'il faut finir par maîtriser.
- Le découpage en nombreux paquets d'intégration complique parfois la gestion des dépendances.
- L'API évolue vite : tutoriels et exemples anciens sont souvent obsolètes.
- L'écosystème agentique est moins central que celui de LangChain et LangGraph.
- Les fonctions les plus avancées de parsing et d'ingestion managée sont payantes.
LlamaIndex vs LangChain : quelles différences ?
La fiche LangChain présente le positionnement général des deux frameworks. Le tableau ci-dessous se concentre sur ce qui change concrètement pour un développeur qui construit un pipeline documentaire.
| Critère | LlamaIndex | LangChain |
|---|---|---|
| Unité de travail | Document et nœud, avec relations entre nœuds | Document et composant exécutable (Runnable) |
| Premier RAG | Index et query engine prêts à l'emploi | Assemblage explicite loader, splitter, retriever, prompt |
| Découpage et ingestion | Pipeline d'ingestion avec cache et dédoublonnage | Splitters et loaders à combiner soi-même |
| Recherche avancée | Routeurs, multi-index, synthétiseurs de réponse | Retrievers composables (multi-query, ensemble) |
| Orchestration agentique | Workflows pilotés par événements | Agents exécutés sur LangGraph, graphe d'état |
| Offre commerciale | LlamaParse, LlamaCloud (données) | LangSmith (observabilité, déploiement) |
En pratique, LlamaIndex fait gagner du temps quand la difficulté se situe dans les données : sources nombreuses, documents mal structurés, stratégies d'indexation à comparer. LangChain et LangGraph prennent l'avantage quand la difficulté se situe dans la logique de l'agent. Les deux se combinent sans difficulté, un index LlamaIndex pouvant servir d'outil à un agent construit avec l'autre écosystème.
Quand choisir LlamaIndex ?
La bonne question : le cœur de votre application est-il la donnée documentaire, ou l'orchestration d'outils et d'agents ?
Le projet tourne autour des documents
- Vous construisez un RAG sur un corpus volumineux ou hétérogène.
- Vos sources sont nombreuses : fichiers, SaaS, bases de données.
- Vos PDF contiennent des tableaux et des mises en page complexes.
- Vous voulez itérer vite sur le découpage et l'indexation.
Le projet tourne autour de l'orchestration
- L'application est d'abord un agent outillé, sans corpus important.
- Vous avez besoin d'un contrôle fin de l'état et des reprises d'exécution.
- Votre équipe est déjà outillée sur l'écosystème LangChain.
- Un simple appel au modèle avec un prompt suffit.
Outils et alternatives autour de LlamaIndex
LlamaIndex orchestre le pipeline, mais s'appuie sur des bases vectorielles, des modèles et des outils d'évaluation externes.
- Alternative
LangChain
Framework plus généraliste, orienté composants, outils et agents.
- Orchestration
LangGraph
Graphes avec état pour des agents complexes, combinables avec un index LlamaIndex.
- Base vectorielle
Pinecone
Service managé, intégré comme vector store de LlamaIndex.
- Base vectorielle
Weaviate
Base vectorielle open source avec recherche hybride native.
- Base vectorielle
Qdrant
Moteur de recherche vectorielle open source, avec filtres sur métadonnées.
- Modèles
Ollama
Exécution locale de LLM et de modèles d'embedding pour un RAG hors ligne.
- Modèles
Hugging Face
Modèles d'embedding et de reranking open source utilisables dans le pipeline.
- Évaluation
RAGAS
Métriques de fidélité et de pertinence pour mesurer la qualité d'un RAG.
- Observabilité
Langfuse
Traces des requêtes, des nœuds retrouvés et des appels au modèle.
Les concepts à connaître pour utiliser LlamaIndex
LlamaIndex met en œuvre plusieurs notions du RAG et des agents : les comprendre aide à régler chaque étape.
- RAGL'architecture de recherche puis génération que LlamaIndex implémente.
- LLMLe modèle de langage qui rédige la réponse à partir des nœuds retrouvés.
- EmbeddingLe vecteur qui permet de comparer une question et un nœud par le sens.
- RerankingLe réordonnancement des nœuds retrouvés, disponible comme postprocesseur.
- Agentic RAGUn RAG piloté par un agent qui décide où et quand chercher.
- Tool callingLe mécanisme qui permet à un agent LlamaIndex d'appeler un index ou une fonction.
Ressources pour approfondir LlamaIndex
Trois articles du blog Blent pour passer de la définition à un RAG mesuré et outillé.
- Tutoriel
LlamaIndex : créer son RAG en quelques lignes de code
Les composants du framework et un pipeline RAG complet pas à pas.
Lire l'article - Évaluation
Évaluation d'un RAG : comment faire ?
Jeux de questions, métriques et méthodes pour mesurer la qualité d'un RAG.
Lire l'article - Architecture
Agentic RAG : définitions et exemples
Quand un agent pilote la recherche documentaire, et comment le concevoir.
Lire l'article
Questions fréquentes
Questions fréquentes
Expertise
À propos de l'auteur
Équipe Blent
Les ingénieurs et mentors Blent conçoivent, évaluent et mettent en production des applications LLM, et forment chaque année des centaines de professionnels à l'IA générative.
Sources et méthodologie
- Documentation officielle LlamaIndex (Python et TypeScript)
- Dépôt GitHub run-llama/llama_index
- Retours d'expérience des projets et formations Blent
Comment fonctionne LlamaIndex ?
LlamaIndex découpe une application LLM centrée sur les données en cinq étapes. Les trois premières préparent la connaissance, les deux dernières l'exploitent à chaque requête.
Charger les données
Des connecteurs (readers) lisent des fichiers locaux, des bases de données, des outils SaaS ou des API, et produisent des objets Document. LlamaHub recense des centaines de connecteurs prêts à l'emploi.
Découper en nœuds
Les documents sont découpés en nœuds (Node) par des parseurs : par phrases, par taille de tokens, selon la structure Markdown ou HTML. Chaque nœud garde ses métadonnées et ses relations avec ses voisins.
Indexer
Les nœuds sont vectorisés par un modèle d'embedding et rangés dans un index, le plus souvent un VectorStoreIndex adossé à une base vectorielle. L'index peut être persisté pour ne pas tout recalculer.
Interroger
Un query engine combine un retriever, qui sélectionne les nœuds pertinents, et un synthétiseur, qui construit le prompt et demande au LLM de rédiger la réponse à partir de ces nœuds.
Converser et agir
Un chat engine ajoute la mémoire de la conversation. Pour des traitements en plusieurs étapes, les workflows et les agents orchestrent recherches, outils et appels au modèle.