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

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

 ScopeBest FitPersistent Cross-sessionDedicated Library?
LlamaIndex MemoryestaSession + 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

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

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.

Comparar alternativas