LlamaIndex Memory — memoria integrada en pipelines RAG
LlamaIndex incluye módulos de memoria de primer nivel para sus motores de chat y Agent — ChatMemoryBuffer, VectorMemory, CompositeMemory — que permiten añadir memoria a un pipeline RAG con un solo argumento del constructor.
Why LlamaIndex Memory
Si ya estás construyendo una aplicación RAG con LlamaIndex, no necesitas una librería de memoria separada. LlamaIndex incluye tres módulos de memoria production-ready que se componen limpiamente con sus ChatEngine, AgentWorker y pipelines de consulta.
ChatMemoryBuffer es el más simple: un ring buffer de mensajes recientes con trimming consciente de Token. VectorMemory embebe cada mensaje y los recupera por similitud — útil cuando las conversaciones se alargan y la recencia cronológica no basta. CompositeMemory combina ambos, más un ChatSummaryMemoryBuffer opcional que ejecuta resumen deslizante basado en LLM.
Techo: estos módulos se centran en memoria de conversación dentro de una única sesión. Para hechos persistentes a nivel de usuario entre sesiones, o bien combinas LlamaIndex con mem0/Zep, o usas los Agent de LlamaIndex con una herramienta de memoria a largo plazo custom.
Quick Start — ChatEngine + CompositeMemory
CompositeMemory combina un buffer de recencia (primaria) con recall semántico + resumen (secundarias). El ChatEngine llama a .get() sobre el composite antes de cada turno para ensamblar el contexto. Cambia el backend de VectorMemory por cualquier vector store de 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?"))Características clave
ChatMemoryBuffer (recencia)
Ring buffer de mensajes recientes consciente de Token. Drop-in para cualquier ChatEngine. token_limit configurable, trimming automático.
VectorMemory (recall semántico)
Embebe cada mensaje y recupera historial semánticamente similar. Útil cuando las conversaciones abarcan muchos temas y reciente ≠ relevante.
ChatSummaryMemoryBuffer (resumen)
Ejecuta resumen LLM cuando el buffer desborda. El resumen persiste; los mensajes en bruto se descartan. Combínalo con ChatMemoryBuffer para un híbrido reciente + resumen.
SimpleComposableMemory
Combina una memoria primaria con cualquier número de fuentes secundarias. Las recuperaciones se fusionan en un único bloque de contexto pasado al LLM.
Agent-friendly
Los módulos de memoria se conectan a AgentWorker / FunctionAgent de LlamaIndex como argumentos de primer nivel. Los Agent mantienen el estado de memoria a lo largo de llamadas a herramientas e iteraciones.
Estado persistente opcional
La memoria es por defecto por instancia de ChatEngine. Serializa/deserializa vía memory.to_dict() / from_dict() o combínala con un store persistente para estado cross-process.
Comparación
| Scope | Best Fit | Persistent Cross-session | Dedicated Library? | |
|---|---|---|---|---|
| LlamaIndex Memoryesta | 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 |
Casos de uso
01. Apps de chat RAG-first
Apps donde la carga principal es la recuperación sobre documentos y la memoria de chat es secundaria. LlamaIndex te da ambas en un único framework, sin pegamento de integración.
02. Asistentes de investigación
Conversaciones largas sobre papers académicos o bases de código. VectorMemory + resumen mantiene al Agent anclado tanto en los turnos recientes como en el contexto anterior.
03. Workflows agénticos
Agent de LlamaIndex (FunctionAgent, ReActAgent) que mantienen estado a lo largo de bucles de llamadas a herramientas — los módulos de memoria son cómo el Agent "recuerda" lo que ya probó.
Precios y licencia
LlamaIndex: open source MIT. Los módulos de memoria son parte de llama-index-core — sin instalación adicional, sin coste de licencia. Solo pagas las llamadas API de LLM + embeddings y tu vector store elegido.
Almacenamiento en producción: usa integraciones llama-index-vector-stores-* (Qdrant, PGVector, Chroma, Pinecone, Weaviate, Milvus). El estado de memoria se almacena junto a tus datos de RAG.
Perfil de coste: del mismo orden que otras opciones SDK-only. ChatSummaryMemoryBuffer añade llamadas LLM de resumen proporcionales a la longitud de la conversación.
Activos relacionados en 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.
Preguntas frecuentes
LlamaIndex Memory vs mem0 — ¿cuál para mi proyecto?+
LlamaIndex Memory cuando quieres memoria dentro de un pipeline RAG sin dependencias adicionales. mem0 cuando necesitas hechos de usuario cross-sesión, cloud gestionado o independencia del framework. Pueden coexistir — LlamaIndex para memoria de sesión, mem0 para perfil de usuario.
¿LlamaIndex Memory funciona con LangChain?+
Los módulos son específicos de LlamaIndex (se enganchan a las abstracciones ChatEngine/Agent de LlamaIndex). Para LangChain, usa LangMem. Sin embargo, puedes compartir una vector DB entre ambos frameworks.
¿Puedo usar LlamaIndex Memory sin RAG?+
Sí. Un ChatMemoryBuffer o CompositeMemory puede envolver cualquier ChatEngine de LlamaIndex, incluso uno sin índice de respaldo. Pero si no necesitas RAG en absoluto, el SDK de LLM pelado + mem0 es un stack más ligero.
¿Cómo maneja LlamaIndex las conversaciones largas?+
O bien (a) sube el token_limit de ChatMemoryBuffer y paga el coste de ventana de contexto, (b) añade ChatSummaryMemoryBuffer para comprimir el historial, o (c) usa CompositeMemory para combinar recencia + resumen + recall semántico. (c) es la respuesta production-grade.
¿LlamaIndex Memory está listo para producción?+
Sí — viene en llama-index-core y lo usan en producción muchos clientes de LlamaIndex. La API es estable; los nuevos módulos se añaden de forma incremental sin romper los existentes.