LlamaIndex Memory — mémoire intégrée aux pipelines RAG
LlamaIndex embarque des modules mémoire de première classe pour ses moteurs de chat et ses Agent — ChatMemoryBuffer, VectorMemory, CompositeMemory — qui permettent d'ajouter la mémoire à un pipeline RAG en un seul argument de constructeur.
Why LlamaIndex Memory
Si vous construisez déjà une application RAG avec LlamaIndex, vous n'avez pas besoin d'une bibliothèque mémoire séparée. LlamaIndex livre trois modules mémoire production-ready qui se composent proprement avec ses ChatEngine, AgentWorker et pipelines de requête.
ChatMemoryBuffer est le plus simple : un ring buffer des messages récents avec trimming tenant compte des Token. VectorMemory embarque chaque message et les récupère par similarité — utile quand les conversations s'allongent et que la récence chronologique ne suffit pas. CompositeMemory combine les deux, plus un ChatSummaryMemoryBuffer optionnel qui fait du résumé glissant via LLM.
Plafond : ces modules se concentrent sur la mémoire de conversation à l'intérieur d'une seule session. Pour des faits utilisateur persistants à travers les sessions, soit associez LlamaIndex à mem0/Zep, soit utilisez les Agent LlamaIndex avec un outil mémoire long terme custom.
Quick Start — ChatEngine + CompositeMemory
CompositeMemory combine un buffer de récence (primaire) avec un rappel sémantique + résumé (secondaires). Le ChatEngine appelle .get() sur le composite avant chaque tour pour assembler le contexte. Remplacez le backend VectorMemory par n'importe quel vector store LlamaIndex (Chroma, Qdrant, PGVector, Pinecone).
# pip install llama-index llama-index-vector-stores-chroma
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
from llama_index.core.memory import (
ChatMemoryBuffer, VectorMemory, ChatSummaryMemoryBuffer, SimpleComposableMemory,
)
from llama_index.llms.openai import OpenAI
from llama_index.embeddings.openai import OpenAIEmbedding
Settings.llm = OpenAI(model="gpt-4o-mini")
Settings.embed_model = OpenAIEmbedding(model="text-embedding-3-small")
docs = SimpleDirectoryReader("./data").load_data()
index = VectorStoreIndex.from_documents(docs)
primary = ChatMemoryBuffer.from_defaults(token_limit=3000)
secondary = [
VectorMemory.from_defaults(embed_model=Settings.embed_model, retriever_kwargs={"similarity_top_k": 3}),
ChatSummaryMemoryBuffer.from_defaults(token_limit=2000),
]
memory = SimpleComposableMemory.from_defaults(primary_memory=primary, secondary_memory_sources=secondary)
chat_engine = index.as_chat_engine(chat_mode="condense_plus_context", memory=memory)
print(chat_engine.chat("I'm William, building a Nuxt app. Remember that."))
print(chat_engine.chat("What framework am I using?"))Fonctionnalités clés
ChatMemoryBuffer (récence)
Ring buffer des messages récents tenant compte des Token. Drop-in pour n'importe quel ChatEngine. token_limit configurable, trimming automatique.
VectorMemory (rappel sémantique)
Embed chaque message et récupère un historique sémantiquement similaire. Utile quand les conversations couvrent de nombreux sujets et que récent ≠ pertinent.
ChatSummaryMemoryBuffer (résumé)
Exécute un résumé LLM quand le buffer déborde. Le résumé persiste ; les messages bruts sont supprimés. À combiner avec ChatMemoryBuffer pour un hybride récent + résumé.
SimpleComposableMemory
Combine une mémoire primaire avec n'importe quel nombre de sources secondaires. Les récupérations sont fusionnées en un seul bloc de contexte passé au LLM.
Agent-friendly
Les modules mémoire se branchent sur AgentWorker / FunctionAgent de LlamaIndex comme arguments de première classe. Les Agent conservent l'état mémoire à travers les appels d'outils et les itérations.
État persistant optionnel
La mémoire est par défaut par instance ChatEngine. Sérialisez/désérialisez via memory.to_dict() / from_dict() ou associez à un store persistant pour un état cross-process.
Comparaison
| Scope | Best Fit | Persistent Cross-session | Dedicated Library? | |
|---|---|---|---|---|
| LlamaIndex Memorycelui-ci | Session + RAG | RAG pipelines with chat | Manual (serialize + reload) | No — built into LlamaIndex |
| mem0 | User-level facts | Production chatbots | Yes (default) | Yes, standalone |
| Zep | Sessions + user facts | Production chat with UI | Yes | Yes, standalone service |
| LangMem | Thread-scoped + namespace | LangChain agents | Yes (namespace by user) | Yes, LangChain-native |
Cas d'usage
01. Apps de chat RAG-first
Apps où la charge principale est la récupération de documents et où la mémoire de chat est secondaire. LlamaIndex vous donne les deux dans un seul framework, sans glue d'intégration.
02. Assistants de recherche
Longues conversations sur des articles académiques ou des bases de code. VectorMemory + résumé garde l'Agent ancré à la fois dans les tours récents et le contexte ancien.
03. Workflows agentiques
Les Agent LlamaIndex (FunctionAgent, ReActAgent) qui maintiennent un état à travers les boucles d'appels d'outils — les modules mémoire sont la manière dont l'Agent « se rappelle » ce qu'il a déjà essayé.
Tarification et licence
LlamaIndex : open source MIT. Les modules mémoire font partie de llama-index-core — pas d'installation supplémentaire, pas de coût de licence. Vous payez uniquement les appels API LLM + embeddings et votre vector store choisi.
Stockage production : utilisez les intégrations llama-index-vector-stores-* (Qdrant, PGVector, Chroma, Pinecone, Weaviate, Milvus). L'état mémoire est stocké à côté de vos données RAG.
Profil de coût : du même ordre que les autres options SDK-only. ChatSummaryMemoryBuffer ajoute des appels LLM de résumé proportionnels à la longueur de conversation.
Assets associés sur TokRepo
LLaMA-Factory — Fine-Tune 100+ LLMs with a Unified Interface
LLaMA-Factory provides a web UI and CLI to fine-tune large language models including LLaMA, Mistral, Qwen, and more using LoRA, QLoRA, and full-parameter methods without writing training scripts.
LLaMA-Factory — Unified LLM Fine-Tuning Framework
LLaMA-Factory offers a web UI and CLI for fine-tuning over 100 large language models using methods like LoRA, QLoRA, and full-parameter training, with built-in evaluation and export.
Llama Index — Data Framework for LLM Applications
Leading data framework for connecting LLMs to external data. LlamaIndex handles ingestion, indexing, retrieval, and query engines for building production RAG applications.
Llama Stack — Meta Official LLM App Framework
Official Meta framework for building LLM applications with Llama models. Inference, safety, RAG, agents, evals, and tool use. Standardized APIs. 8.3K+ stars.
Questions fréquentes
LlamaIndex Memory vs mem0 — lequel pour mon projet ?+
LlamaIndex Memory quand vous voulez de la mémoire dans un pipeline RAG sans dépendances supplémentaires. mem0 quand vous avez besoin de faits utilisateur cross-session, d'un cloud managé ou d'indépendance vis-à-vis du framework. Ils peuvent coexister — LlamaIndex pour la mémoire de session, mem0 pour le profil utilisateur.
LlamaIndex Memory fonctionne-t-il avec LangChain ?+
Les modules sont spécifiques à LlamaIndex (ils s'accrochent aux abstractions ChatEngine/Agent de LlamaIndex). Pour LangChain, utilisez LangMem. Vous pouvez tout de même partager une vector DB entre les deux frameworks.
Puis-je utiliser LlamaIndex Memory sans RAG ?+
Oui. Un ChatMemoryBuffer ou CompositeMemory peut wrapper n'importe quel ChatEngine LlamaIndex, y compris ceux sans index sous-jacent. Mais si vous n'avez pas besoin de RAG du tout, le SDK LLM nu + mem0 est un stack plus léger.
Comment LlamaIndex gère-t-il les longues conversations ?+
Soit (a) augmenter le token_limit de ChatMemoryBuffer et payer le coût en fenêtre de contexte, (b) ajouter ChatSummaryMemoryBuffer pour compresser l'historique, soit (c) utiliser CompositeMemory pour combiner récence + résumé + rappel sémantique. (c) est la réponse production-grade.
LlamaIndex Memory est-il production-ready ?+
Oui — il est livré dans llama-index-core et utilisé en production par de nombreux clients LlamaIndex. L'API est stable ; de nouveaux modules sont ajoutés de façon incrémentale sans casser ceux qui existent.