AI Memory
LlamaIndex Memory — Built-in Memory for RAG Pipelines logo

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

 ScopeBest FitPersistent Cross-sessionDedicated Library?
LlamaIndex Memorycelui-ciSession + RAGRAG pipelines with chatManual (serialize + reload)No — built into LlamaIndex
mem0User-level factsProduction chatbotsYes (default)Yes, standalone
ZepSessions + user factsProduction chat with UIYesYes, standalone service
LangMemThread-scoped + namespaceLangChain agentsYes (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

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.

Comparer les alternatives