mnemo es una capa de memoria local diseñada para dotar a los modelos de lenguaje de gran tamaño (LLM) de memoria persistente sin depender de servicios en la nube. Funciona como un servicio "sidecar" que observa cada conversación, extrae entidades nombradas y relaciones mediante un LLM, construye un grafo de conocimiento en SQLite e inyecta contexto relevante en futuros prompts en menos de 50 milisegundos.
La arquitectura se compone de cuatro crates en Rust: mnemo-core (lógica de extracción de entidades, operaciones de grafo, motor de recuperación y capa de base de datos), mnemo-api (servidor REST con Axum), mnemo-cli (herramienta de línea de comandos) y mnemo-bench (12 suites de benchmarks). Todo se distribuye como un único binario estático, sin dependencias en la nube.
El flujo de uso es directo: se envía texto en bruto al endpoint /ingest, ya sea un turno de conversación, un documento o una nota. mnemo lo reenvía al LLM configurado para extraer entidades (personas, herramientas, lugares, conceptos) y sus relaciones. Las entidades se deduplican por nombre y tipo, los alias se fusionan y todo se almacena en SQLite. El grafo en memoria petgraph se actualiza de forma atómica.
Para recuperar contexto, mnemo ejecuta un pipeline de seis etapas en /retrieve: búsqueda de fragmentos por texto completo, búsqueda por nombre de entidad, expansión del grafo (BFS), filtrado de relaciones, puntuación y ensamblaje de la cadena context_prompt, lista para inyectar en el prompt del sistema del LLM objetivo.
Es compatible con Ollama (uso totalmente local y gratuito), OpenAI, Anthropic y cualquier API compatible con OpenAI. La configuración se realiza mediante variables de entorno o un archivo TOML. Incluye también un SDK en Python, disponible vía pip install mnemo-sdk, con cliente síncrono y asíncrono. Los benchmarks en Apple M2 (compilación debug) muestran latencias medias de 0,12 ms para inserción de entidades, 0,28 ms para búsqueda de fragmentos y 4,2 ms para el pipeline completo de recuperación, unas 238 operaciones por segundo; la compilación --release multiplica el rendimiento por 3-5. El proyecto se publica bajo licencia MIT, con 122 pruebas en Rust, 21 en Python y 12 benchmarks.
