Lexique · Frameworks / outils IA

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.

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.

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

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

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

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

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

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.

python
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èreLlamaIndexLangChain
Unité de travailDocument et nœud, avec relations entre nœudsDocument et composant exécutable (Runnable)
Premier RAGIndex et query engine prêts à l'emploiAssemblage explicite loader, splitter, retriever, prompt
Découpage et ingestionPipeline d'ingestion avec cache et dédoublonnageSplitters et loaders à combiner soi-même
Recherche avancéeRouteurs, multi-index, synthétiseurs de réponseRetrievers composables (multi-query, ensemble)
Orchestration agentiqueWorkflows pilotés par événementsAgents exécutés sur LangGraph, graphe d'état
Offre commercialeLlamaParse, 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 ?

Pertinent si

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.
Moins adapté si

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.

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.

Ressources pour approfondir LlamaIndex

Trois articles du blog Blent pour passer de la définition à un RAG mesuré et outillé.

Questions fréquentes

Questions fréquentes

Oui, la bibliothèque est open source sous licence MIT et utilisable gratuitement, y compris dans un cadre commercial. Les services LlamaCloud et LlamaParse, qui proposent parsing et ingestion managés, sont en revanche facturés au-delà d'un quota gratuit. Les appels aux LLM et aux modèles d'embedding restent payés auprès de leurs fournisseurs.

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