LangChain vs LlamaIndex : comparaison complète 2026
LangChain ou LlamaIndex ? Comparaison technique, cas d'usage, code et guide pour choisir le bon framework Python en 2026.
LangChain vs LlamaIndex : comparaison complète 2026
LangChain et LlamaIndex sont les deux frameworks Python les plus utilisés pour construire des applications LLM. Ils ne font pas la même chose et ne s'adressent pas exactement aux mêmes problèmes. Ce guide compare leur architecture, leurs cas d'usage et leur philosophie pour vous aider à choisir — ou à les combiner intelligemment. Vous repartirez avec une vision claire de quand utiliser l'un, l'autre, ou les deux ensemble.
Résumé rapide
| Critère | LangChain | LlamaIndex |
|---|---|---|
| Spécialité principale | Orchestration généraliste, agents, chaînes | RAG, indexation documentaire, retrieval |
| Courbe d'apprentissage | Modérée à élevée | Modérée |
| Flexibilité | Très élevée | Élevée sur le domaine RAG |
| Intégrations LLM | 50+ providers | 50+ providers |
| Cas d'usage typique | Agents multi-outils, pipelines complexes | Q&A sur documents, recherche sémantique |
| Combinaison possible | Oui | Oui |
Ce que sont LangChain et LlamaIndex
LangChain
LangChain est un framework d'orchestration pour LLM. Son principe central : composer des blocs (appelés runnables) en chaînes (chains) pour automatiser des séquences d'appels LLM, d'outils et de transformations de données.
Les trois concepts clés :
- Chains : séquences de steps (prompt → LLM → parser). Depuis LangChain v0.2, l'interface standard est LCEL (LangChain Expression Language), qui compose les runnables avec l'opérateur
|. - Tools : fonctions que l'agent peut appeler (recherche web, API, base de données). LangChain fournit une interface standard pour les définir et les exposer à un LLM.
- Agents : boucle décision-action où le LLM choisit quel outil appeler, observe le résultat et décide de la prochaine action. LangChain supporte ReAct, OpenAI Functions, et des agents personnalisés.
LangChain s'est imposé comme un couteau suisse : il peut tout faire, mais demande plus de configuration pour des cas RAG avancés.
LlamaIndex
LlamaIndex (anciennement GPT Index) est centré sur un problème précis : connecter des LLM à vos données. Son architecture est optimisée pour ingérer, indexer et interroger des corpus documentaires.
Les trois concepts clés :
- Index : structure de données qui organise vos documents pour la recherche (VectorStoreIndex, SummaryIndex, KeywordTableIndex, KnowledgeGraphIndex).
- Retriever : composant qui interroge l'index et retourne les chunks pertinents selon une requête.
- Query Engine / Chat Engine : interface de haut niveau qui orchestre retrieval + synthèse LLM pour répondre à une question ou maintenir une conversation.
LlamaIndex brille dès que le défi est documentaire : PDF, Notion, Confluence, bases de données SQL, APIs REST — il propose des connecteurs natifs (appelés Readers) pour des dizaines de sources.
Positionnement
LangChain est un framework d'orchestration généraliste : il excelle pour les agents multi-outils, les pipelines avec logique conditionnelle, et les applications qui mélangent LLM, APIs et bases de données.
LlamaIndex est un framework de data layer pour LLM : il excelle pour tout ce qui touche à la gestion, l'indexation et l'interrogation de documents. Son pipeline RAG est plus complet et plus configurable que celui de LangChain out-of-the-box.
Comparaison détaillée
Architecture interne
LangChain s'articule autour de l'interface Runnable. Chaque composant (LLM, prompt template, output parser, retriever, tool) implémente cette interface. LCEL permet de les composer :
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
llm = ChatOpenAI(model="gpt-4o")
prompt = ChatPromptTemplate.from_template("Réponds en français : {question}")
chain = prompt | llm | StrOutputParser()
result = chain.invoke({"question": "Qu'est-ce qu'un agent IA ?"})
Cette approche est puissante mais verbeuse. Dès que le pipeline se complexifie (branchements, mémoire, plusieurs outils), le code grossit vite.
LlamaIndex s'articule autour du pipeline d'ingestion → index → query. L'interface de haut niveau est intentionnellement simple :
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
documents = SimpleDirectoryReader("./docs").load_data()
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine()
response = query_engine.query("Quelle est la politique de remboursement ?")
print(response)
Trois lignes pour un RAG fonctionnel. La complexité est cachée mais accessible : on peut remplacer le retriever, le reranker, le synthesizer, le node postprocessor à chaque étape.
Gestion du RAG
C'est le point de divergence le plus important.
LangChain propose un pipeline RAG via RetrievalQA ou des chains personnalisées. C'est suffisant pour les cas simples, mais la gestion fine des chunks, le reranking, la fusion de plusieurs retrievers ou les stratégies hybrides (dense + sparse) nécessitent beaucoup de code custom.
LlamaIndex propose nativement :
- Node parsers : contrôle fin du chunking (taille, overlap, stratégie sémantique)
- Ingestion pipeline : cache des embeddings pour éviter de re-indexer
- Retrievers avancés : BM25, hybride, récursif, auto-merging
- Rerankers : Cohere, cross-encoder, LLM-based
- Response synthesizers : tree summarize, compact, refine
Pour un RAG de production sur des documents hétérogènes (PDF, Word, HTML), LlamaIndex réduit significativement le code à écrire.
Agents et outils
LangChain est plus mature sur les agents. Il supporte :
- ReAct (raisonnement + action)
- OpenAI Tool Calling
- Agents structurés avec schémas Pydantic
- Intégration native avec LangGraph pour les agents multi-étapes avec état
LlamaIndex propose aussi des agents (ReActAgent, FunctionCallingAgent) mais l'écosystème d'outils est moins riche. LlamaIndex compense avec des outils orientés données : query engines comme outils, index comme outils, SQL comme outil.
Mémoire et état conversationnel
LangChain : ConversationBufferMemory, ConversationSummaryMemory, intégration Redis/PostgreSQL pour la persistance. La gestion de la mémoire est flexible mais demande une configuration explicite.
LlamaIndex : ChatMemoryBuffer intégré dans les ChatEngine. Simple et fonctionnel pour les conversations sur documents. Moins d'options pour les cas avancés.
Intégrations et écosystème
Les deux frameworks couvrent les mêmes providers LLM (OpenAI, Anthropic, Mistral, Ollama, Cohere, etc.) et les mêmes vector stores (Pinecone, Weaviate, Qdrant, Chroma, pgvector).
LangChain a un avantage sur les intégrations d'outils (Gmail, GitHub, Jira, Slack, etc.) via LangChain Hub et la communauté.
LlamaIndex a un avantage sur les connecteurs de données (Notion, Confluence, Google Drive, S3, bases SQL, APIs REST) via LlamaHub.
Cas d'usage typiques
| Cas d'usage | Recommandation |
|---|---|
| RAG sur PDF / documentation interne | LlamaIndex |
| Agent avec accès à des APIs externes | LangChain |
| Chatbot sur base de connaissances | LlamaIndex |
| Pipeline d'extraction et transformation de données | LangChain |
| Recherche sémantique avancée avec reranking | LlamaIndex |
| Agent multi-outils avec logique complexe | LangChain (+ LangGraph) |
| Q&A sur base SQL | LlamaIndex (NLSQLTableQueryEngine) |
| Automatisation de workflows | LangChain |
Quand les combiner
Les deux frameworks sont compatibles. Le pattern le plus courant : utiliser LlamaIndex pour le retrieval (index, query engine) et LangChain pour l'orchestration de l'agent. LlamaIndex expose ses query engines comme des Tool compatibles LangChain :
from llama_index.core.tools import QueryEngineTool
from langchain.agents import AgentExecutor
# Le query engine LlamaIndex devient un tool LangChain
tool = QueryEngineTool.from_defaults(
query_engine=index.as_query_engine(),
name="recherche_docs",
description="Interroge la base documentaire interne"
)
Cette combinaison donne le meilleur des deux : la puissance RAG de LlamaIndex + la flexibilité d'orchestration de LangChain.
Exemple concret : agent RAG avec LlamaIndex + LangChain
L'objectif : un agent capable de répondre à des questions sur un corpus de documents PDF, avec mémoire conversationnelle.
Étape 1 — Indexation avec LlamaIndex
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.core.node_parser import SentenceSplitter
from llama_index.embeddings.openai import OpenAIEmbedding
documents = SimpleDirectoryReader("./docs_internes").load_data()
splitter = SentenceSplitter(chunk_size=512, chunk_overlap=50)
nodes = splitter.get_nodes_from_documents(documents)
embed_model = OpenAIEmbedding(model="text-embedding-3-small")
index = VectorStoreIndex(nodes, embed_model=embed_model)
query_engine = index.as_query_engine(similarity_top_k=4)
Étape 2 — Exposition comme tool LangChain
from langchain.tools import Tool
def recherche_documentaire(question: str) -> str:
response = query_engine.query(question)
return str(response)
tool_docs = Tool(
name="recherche_documentaire",
func=recherche_documentaire,
description="Cherche dans la base documentaire interne."
)
Étape 3 — Agent LangChain avec mémoire
from langchain_openai import ChatOpenAI
from langchain.agents import create_react_agent, AgentExecutor
from langchain.memory import ConversationBufferMemory
from langchain import hub
llm = ChatOpenAI(model="gpt-4o", temperature=0)
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
prompt = hub.pull("hwchase17/react-chat")
agent = create_react_agent(llm, [tool_docs], prompt)
agent_executor = AgentExecutor(
agent=agent,
tools=[tool_docs],
memory=memory,
verbose=True
)
response = agent_executor.invoke({"input": "Quelle est la politique de congés ?"})
print(response["output"])
Ce setup est reproductible et production-ready. Le retriever LlamaIndex gère la qualité du RAG, LangChain gère la boucle agent et la mémoire.
Bonnes pratiques
Erreurs fréquentes
- Chunking par défaut : les deux frameworks utilisent des chunks de 1024 tokens par défaut. Pour des documents techniques, 256-512 tokens avec overlap donne de meilleurs résultats. Testez sur votre corpus.
- Re-indexation inutile : LlamaIndex propose un
IngestionPipelineavec cache. Sans cache, chaque redémarrage re-génère tous les embeddings — coûteux et lent. - Trop d'outils pour l'agent : au-delà de 5-6 outils, les LLM peinent à choisir le bon. Regroupez les outils par domaine ou utilisez un routeur.
Gestion des tokens
- Activez
similarity_top_kau minimum nécessaire (3-5 chunks suffisent dans 80% des cas). - Utilisez un reranker pour ne passer que les 2-3 chunks les plus pertinents au LLM après retrieval.
- Avec LangChain,
ConversationSummaryMemoryévite que l'historique de conversation explose le contexte.
Limites à connaître
- LangChain change d'API fréquemment. Épinglez votre version dans
requirements.txtet lisez les changelogs avant de mettre à jour. - LlamaIndex est moins adapté aux agents qui doivent interagir avec des APIs REST ou des services externes non documentaires.
- Aucun des deux ne résout le problème de la qualité des embeddings : un mauvais modèle d'embedding donnera un mauvais retrieval, quelle que soit la sophistication du pipeline.
Questions fréquentes
Quelle est la différence principale entre LangChain et LlamaIndex ?
LangChain est un framework d'orchestration généraliste : il gère les agents, les chaînes de traitements, la mémoire et les outils. LlamaIndex est spécialisé dans l'indexation et l'interrogation de documents (RAG). LangChain fait plus de choses, LlamaIndex fait le RAG mieux par défaut.
Peut-on utiliser LangChain et LlamaIndex ensemble ?
Oui, c'est même recommandé pour les projets complexes. LlamaIndex gère l'indexation et le retrieval documentaire, expose son query engine comme un tool LangChain, et LangChain orchestre l'agent. Les deux frameworks sont conçus pour être interopérables.
LlamaIndex est-il meilleur que LangChain pour le RAG ?
Pour le RAG pur, LlamaIndex offre plus de fonctionnalités out-of-the-box : chunking avancé, reranking natif, retrievers hybrides, ingestion pipeline avec cache. LangChain nécessite plus de code custom pour atteindre le même niveau. Pour un projet centré sur le RAG, LlamaIndex est le meilleur point de départ.
LangChain ou LlamaIndex pour un débutant en 2026 ?
Commencez par LlamaIndex si votre projet est centré sur des documents. L'API de haut niveau est plus simple et donne des résultats rapides. Commencez par LangChain si vous construisez un agent avec plusieurs outils et APIs. Dans les deux cas, maîtrisez un framework avant d'apprendre l'autre.
Ces frameworks fonctionnent-ils avec des LLM open source (Ollama, Mistral) ?
Oui. LangChain et LlamaIndex supportent tous les deux Ollama, Mistral, LLaMA, et tout provider compatible OpenAI API. Pour LlamaIndex : Ollama(model="mistral"). Pour LangChain : ChatOllama(model="mistral").
Articles liés
LangChain et LlamaIndex sont des outils complémentaires. LangChain excelle sur l'orchestration d'agents complexes, LlamaIndex sur le RAG documentaire. Pour la plupart des projets sérieux en 2026, les combiner est la meilleure approche. La prochaine étape : approfondir chaque framework ou explorer LangGraph pour les workflows multi-agents avec état.
Restez informé sur les agents IA
Nouveaux tutoriels, comparatifs et guides pratiques directement dans votre boîte mail.
