En este artículo
Supermemory: memoria para agentes de IA, RAG y uso local
Tu agente recuerda perfectamente los últimos diez mensajes. Empieza una sesión nueva y el usuario tiene que volver a explicar el mismo proyecto. No es una limitación inevitable de todos los productos de IA: ocurre cuando la aplicación no conserva memoria más allá de la conversación actual.
Supermemory convierte conversaciones y documentos en contexto reutilizable. Esta capa de memoria extrae hechos, relaciona información nueva con conocimiento previo y recupera contexto pertinente para futuras solicitudes. La aplicación aporta el contenido y decide cómo utilizar los resultados. Cambia el contexto disponible para el agente, no los pesos del modelo subyacente. Descripción del producto Supermemory
Revisión de fuentes: . Esta guía de ingeniería se basa en documentación. No reproduce benchmarks mediante pruebas propias ni afirma que Wavect haya implantado Supermemory para un cliente.
¿Cómo aprende, actualiza y olvida Supermemory?
Conviene distinguir los documentos originales, como la transcripción de una conversación, de las memorias derivadas, como el idioma preferido de un usuario. La transcripción es una fuente; un hecho extraído o inferido es una interpretación que puede ser errónea.
- Extracción de hechos: convierte el contenido conversacional en datos relevantes, en vez de volver a introducir el historial completo.
- Actualización del conocimiento: relaciona una corrección con información anterior. En el ejemplo «Me he mudado a San Francisco», «Vivo en Nueva York» ya no debería representar la residencia actual. Eso no implica borrar el historial de la mudanza.
- Olvido temporal: un contexto provisional, como un examen previsto para mañana, debería dejar de influir en respuestas futuras no relacionadas cuando termine su periodo de relevancia.
El grafo documentado permite actualizar, ampliar y derivar memorias, y utiliza isLatest para distinguir el conocimiento vigente. Es un ciclo de vida más amplio que almacenar embeddings. Aun así, comprueba fechas ambiguas, zonas horarias, ejemplos ficticios y contradicciones antes de confiar en los hechos extraídos. Memoria en grafo y relaciones de conocimiento
Olvidar no equivale a eliminar definitivamente. El endpoint documentado para olvidar una memoria realiza un borrado lógico. Que un dato desaparezca de las consultas habituales no demuestra que se hayan eliminado su transcripción de origen, las copias derivadas o las copias de seguridad. Trata el olvido visible para el usuario y una solicitud de eliminación verificable como requisitos distintos. API de olvido y comportamiento del borrado lógico
¿Qué contienen los perfiles estáticos y dinámicos?
Un perfil aporta contexto compacto al comenzar una solicitud. La parte estática describe información relativamente estable; la dinámica recoge actividad reciente y circunstancias cambiantes. «Prefiere respuestas técnicas breves» necesita un ciclo de vida distinto de «está preparando el lanzamiento de esta semana». Estático no significa inmutable.
Los perfiles se recuperan mediante un containerTag. Una consulta adicional puede devolver memorias relevantes junto al perfil. Prioriza contexto breve y pertinente en lugar de introducir todos los datos guardados en cada prompt, especialmente cuando los detalles personales no guardan relación con la tarea. Perfiles de usuario y recuperación vinculada a consultas
Supermemory frente a RAG: ¿qué cambia realmente?
RAG ya puede personalizarse. Un sistema de recuperación puede filtrar documentos por usuario, organización y permisos. Afirmar que RAG convencional siempre entrega los mismos documentos a todo el mundo es demasiado general. El problema más complejo es mantener qué hechos personales siguen vigentes, cuáles han caducado y cuáles son temporales o inferidos. Esa es la capa adicional que debes evaluar. El modelo de Supermemory para memoria y RAG
| Enfoque | Pregunta principal | Responsabilidad que permanece |
|---|---|---|
| RAG documental | ¿Qué dice la fuente aprobada? | Actualización, control de acceso y respaldo documental. |
| Memoria de usuario | ¿Qué contexto relevante sigue siendo cierto para esta persona? | Correcciones, procedencia, consentimiento y conservación. |
| Recuperación híbrida | ¿Qué fuentes y contexto personal ayudan con esta solicitud? | Consultas limitadas por permisos y un contexto acotado y fiable. |
El modo explícito searchMode: "hybrid" de Supermemory combina fragmentos de documentos y memorias extraídas en una sola búsqueda. Aquí «híbrido» designa esos dos tipos de contenido; el nombre no demuestra una implementación concreta de búsqueda por palabras clave y vectores. La integración alojada evita montar por separado la base vectorial, la generación de embeddings y la fragmentación. Esas tareas pasan al servicio, no desaparecen. Modos de búsqueda, filtros y contexto recuperado
¿Es Supermemory número uno en benchmarks de memoria para IA?
El repositorio de Supermemory y sus afirmaciones sobre benchmarks comunica el primer puesto en LongMemEval, LoCoMo y ConvoMem. También publica 95 % de Recall@15 en LongMemEval, aproximadamente 720 tokens de contexto recuperado, una reducción del contexto del 99,4 % y perfiles en alrededor de 50 ms. Son afirmaciones del proveedor revisadas en la fecha indicada, no mediciones reproducidas de forma independiente por Wavect.
Recall@15 mide recuperación, no un 95 % de precisión en las respuestas. Encontrar información relevante entre quince resultados no demuestra que la respuesta final la utilice correctamente, detecte una corrección posterior o se abstenga cuando falten pruebas. Una reducción del contexto tampoco representa el mismo ahorro en la factura total de la API.
Los aproximadamente 50 ms de los perfiles no son una promesa universal de latencia. El proveedor publica además otros tiempos de perfil, tanto del servidor como de extremo a extremo, en su resumen de producción. No se deben equiparar cargas de trabajo ni límites de medición distintos. Mide la mediana y el p95 propios, incluyendo la red y la llamada al modelo. Tiempos de producción publicados por Supermemory
| Benchmark | Aspectos relevantes | Conclusión que no permite extraer |
|---|---|---|
| Repositorio del benchmark LongMemEval | Extracción, razonamiento entre sesiones y temporal, actualizaciones y abstención. | Un acierto de recuperación no equivale a una respuesta final satisfactoria. |
| Repositorio del benchmark LoCoMo | Conversaciones largas y preguntas que requieren recordar o razonar. | El rendimiento en esas conversaciones no se traslada necesariamente a tus clientes. |
| Repositorio del benchmark ConvoMem | Hechos del usuario y del asistente, cambios, preferencias, abstención y conexiones implícitas. | Una clasificación no acredita privacidad ni fiabilidad en tu aplicación. |
Para comparar con rigor, fija la versión del conjunto de datos, los modelos de respuesta y extracción, el presupuesto de recuperación y las reglas de puntuación. Informa tanto de la recuperación como del éxito final de la tarea. MemoryBench separa ingesta, búsqueda, generación de respuestas, evaluación e informes, lo que ofrece una estructura inicial para comparaciones repetibles. Flujo de evaluación de MemoryBench
Tres formas de utilizar Supermemory
1. Añadir memoria a una herramienta de IA existente
El repositorio incluye integraciones para herramientas como Claude Code, Cursor y Codex. La opción MCP alojada conecta clientes compatibles con un servicio de memoria persistente. Revisa qué lee y escribe cada plugin y con qué permisos. Instalarlo no autoriza a subir todos los secretos de un repositorio ni todas las conversaciones personales. Configuración y autenticación de MCP alojado
2. Integrar memoria en tu producto
La API permite incorporar conversaciones seleccionadas, archivos y material de referencia, y recuperar después un perfil o resultados acotados antes de generar respuestas. Los conectores alojados pueden incorporar contenido de Google Drive, Gmail y Notion, entre otros servicios. Decide qué cuentas, carpetas y documentos se permiten antes de activar la sincronización. Conectores disponibles y modelo de sincronización
3. Ejecutar el servicio de memoria localmente
La opción local distribuye el servicio como un ejecutable con una API compatible y modelos que tú configuras. No reproduce todas las funciones alojadas: la documentación excluye los conectores alojados y MCP alojado. La compatibilidad de la API tampoco demuestra que un modelo elegido en Ollama reproduzca la calidad de extracción o los resultados del servicio en la nube. Comparación de funciones locales y alojadas de Supermemory
Ejemplo de API con ámbito definido y consultas de estado limitadas
Este ejemplo del lado del servidor utiliza Node.js 22 o posterior y fetch nativo; no requiere un SDK. Guárdalo como supermemory-demo.mjs, configura SUPERMEMORY_API_KEY en el entorno del servidor y ejecuta node supermemory-demo.mjs. Envía una conversación y un manual ficticios a la API alojada y puede generar cargos de uso. La clave no debe aparecer en código del navegador.
La ingesta es asíncrona. El ejemplo espera a los dos documentos, falla ante errores de procesamiento y limita las consultas de estado, en vez de buscar inmediatamente tras aceptar la escritura. dreaming: "instant" permite la lectura inmediata de esta demostración y factura una operación adicional. El procesamiento dinámico predeterminado puede agrupar la extracción de memorias incluso después de indexar el documento; elige conscientemente el modo adecuado para producción. Guía oficial de ingesta, espera y recuperación
const apiKey = process.env.SUPERMEMORY_API_KEY;
if (!apiKey) throw new Error("Set SUPERMEMORY_API_KEY first.");
const baseURL = "https://api.supermemory.ai";
// Synthetic demo scope. In a product, derive this from authenticated identity.
const containerTag = "tenant_demo_user_42";
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
async function request(path, body) {
const response = await fetch(`${baseURL}${path}`, {
method: body === undefined ? "GET" : "POST",
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
body: body === undefined ? undefined : JSON.stringify(body),
signal: AbortSignal.timeout(10_000),
});
// Do not log response bodies containing personal data or credentials.
if (!response.ok) throw new Error(`Supermemory HTTP ${response.status}`);
return response.json();
}
async function waitUntilDone(id) {
if (typeof id !== "string" || !id) throw new Error("Missing document ID.");
for (let attempt = 0; attempt < 20; attempt += 1) {
const document = await request(`/v3/documents/${encodeURIComponent(id)}`);
if (!document || typeof document.status !== "string") {
throw new Error("Invalid document status response.");
}
if (document.status === "failed") throw new Error("Ingestion failed.");
if (document.status === "done") return;
if (attempt < 19) await sleep(1500);
}
throw new Error("Ingestion did not finish within the polling budget.");
}
const conversation = await request("/v3/documents", {
content: [
"user: I prefer short onboarding checklists.",
"assistant: Which project are you working on?",
"user: The Acme analytics dashboard. We use TypeScript.",
].join("\n"),
containerTag,
customId: "tenant_demo_user_42_chat_onboarding_001",
metadata: { type: "conversation" },
dreaming: "instant",
});
const handbook = await request("/v3/documents", {
content: "Acme onboarding: create a sandbox, complete the security " +
"checklist, then request a review before production access.",
containerTag,
customId: "tenant_demo_user_42_handbook_001",
metadata: { type: "document", source: "synthetic-handbook" },
taskType: "superrag",
});
await waitUntilDone(conversation.id);
await waitUntilDone(handbook.id);
const profileResponse = await request("/v4/profile", { containerTag });
const searchResponse = await request("/v4/search", {
q: "What should I do next for Acme onboarding?",
containerTag,
searchMode: "hybrid",
limit: 5,
});
const profile = profileResponse?.profile;
if (!Array.isArray(profile?.static) || !Array.isArray(profile?.dynamic) ||
!Array.isArray(searchResponse?.results)) {
throw new Error("Unexpected profile or search response shape.");
}
console.log({
staticFacts: profile.static.length,
dynamicFacts: profile.dynamic.length,
retrievedItems: searchResponse.results.length,
});El código muestra cantidades, no datos personales sin procesar. Recupera contexto, pero deliberadamente no lo envía a un modelo generativo ni afirma haber producido una respuesta correcta. En una aplicación de chat, proporciona el contexto relevante como datos no confiables, genera la respuesta y guarda solo el material conversacional permitido por tu política de conservación. Usa identificadores de sesión estables y acotados, y comprueba cómo actualiza el proveedor antes de reintentar escrituras.
Una etiqueta no es un sistema de autorización. La etiqueta fija del ejemplo corresponde a datos ficticios. En producción, deriva la organización y el usuario en el servidor a partir de la identidad autenticada. No aceptes etiquetas arbitrarias del navegador con una clave de toda la organización. El servicio documenta claves limitadas por ámbito: utilízalas cuando corresponda, conserva las credenciales privilegiadas en el servidor y prueba accesos entre clientes distintos. Autenticación de API y claves con ámbito limitado
¿Puede Supermemory funcionar sin conexión con Ollama?
Sí, con el ejecutable local, un proveedor de modelos local en funcionamiento y embeddings locales. Descarga primero el programa y los modelos; la instalación inicial no es sin conexión. La documentación muestra Ollama mediante un endpoint compatible con OpenAI. Esa compatibilidad describe una interfaz HTTP, no una obligación de enviar datos a un modelo en la nube. Proveedores de modelos locales y configuración de Ollama
Después de instalar el servidor local, iniciar Ollama y descargar gpt-oss:20b mediante ollama pull gpt-oss:20b, la siguiente configuración ilustra extracción local con embeddings multilingües. El modelo es un ejemplo, no una recomendación de dimensionamiento de hardware. Usa un directorio de datos nuevo para el primer arranque con esta configuración de embeddings.
OPENAI_BASE_URL=http://localhost:11434/v1 \
OPENAI_API_KEY=ollama \
OPENAI_MODEL=gpt-oss:20b \
SUPERMEMORY_EMBEDDING_PROVIDER=local \
SUPERMEMORY_EMBEDDING_MODEL=Xenova/bge-m3 \
SUPERMEMORY_EMBEDDING_DIMENSIONS=1024 \
supermemory-serverAtención a los productos multilingües: el modelo local de embeddings predeterminado documentado, Xenova/bge-base-en-v1.5, solo está orientado al inglés. La documentación propone Xenova/bge-m3 con 1.024 dimensiones como alternativa multilingüe, utilizada arriba. Elige el modelo antes de cargar un corpus grande. Cambiar modelos o dimensiones exige un índice compatible nuevo y volver a procesar los datos; no mezcles espacios vectoriales. Prueba consultas en alemán, español y chino: completar la ingesta no demuestra una recuperación de calidad. Modelos locales de embeddings y configuración multilingüe
Utiliza la clave generada por el servidor local y sustituye la URL base del ejemplo por http://localhost:6767. No reutilices una clave alojada. Antes de considerar el entorno completamente desconectado, revisa cada proveedor, dependencia de archivos y conexión saliente. Restringe la exposición de red y planifica almacenamiento, copias de seguridad, actualizaciones y recuperación.
¿Qué debe demostrar un piloto de memoria antes de producción?
Empieza con un flujo recurrente y una referencia fija, como tu resumen actual de conversación junto con RAG filtrado por cliente. La siguiente es la propuesta de Wavect para criterios de aceptación, no una afirmación de que Supermemory ya haya superado estas pruebas.
| Escenario | Prueba que debes exigir |
|---|---|
| Nueva sesión y corrección de hechos | El contexto relevante sobrevive a un reinicio; una corrección posterior prevalece sin inventar el historial. |
| Caducidad y falta de pruebas | Los hechos temporales dejan de influir en respuestas no relacionadas; el agente se abstiene de adivinar. |
| Aislamiento y memorias manipuladas | No se recupera contexto de otro usuario; las instrucciones guardadas no conceden permisos ni anulan reglas del sistema. |
| Solicitud de eliminación | Verifica el alcance acordado en originales, memorias derivadas, perfiles, cachés y tratamiento de copias de seguridad. |
| Idiomas y fallos operativos | Evalúa idiomas representativos, respuestas malformadas, ingestas fallidas, tiempos de espera y envíos repetidos. |
| Latencia y coste total | Mide p50/p95 y coste por tarea aceptada, incluyendo ingesta, extracción, recuperación, generación y operación. |
No conviertas memorias guardadas en reglas autorizadas de control de acceso. Recordar «soy administrador» no equivale a una asignación válida de rol. Permite consultar y corregir la memoria pertinente, minimiza la conservación sensible y conserva la procedencia para explicar por qué una respuesta utilizó un hecho.
Calcula el coste del flujo completo, no solo del prompt final. El servicio alojado mide el uso y distingue operaciones, incluida la operación adicional de procesamiento instantáneo. El despliegue local cambia parte de la dependencia del servicio por responsabilidad sobre modelos e infraestructura. Compara coste por tarea completada correctamente, no un porcentaje aislado de reducción del contexto. Modelo de facturación y uso de Supermemory
¿Cuándo merece la pena adoptar Supermemory?
Merece un piloto acotado cuando los usuarios vuelven con frecuencia, cambian sus preferencias o proyectos y reconstruir el contexto personal genera fricción. Un copiloto de soporte, un asistente de incorporación o un asistente recurrente de proyectos encaja mejor que una consulta documental aislada. Para una base pequeña y estable sin estado personal cambiante, RAG con permisos puede ser el punto de partida más sencillo.
Compara arquitectura y responsabilidad operativa con nuestro análisis de OpenViking y la memoria para agentes. El servicio de desarrollo de IA de Wavect conecta el diseño de recuperación con los objetivos del producto. El caso de Twinsoft AI muestra otro proyecto de producto con IA, no una implantación de Supermemory.
Utiliza la lista de control de QA antes del lanzamiento para convertir el piloto en criterios de salida, o comenta una evaluación acotada de memoria para agentes. La decisión debe basarse en menos explicaciones repetidas y mejores resultados verificables, no en acumular memoria ni en una clasificación por sí sola.
