{"id":50132408,"url":"https://github.com/zjunlp/LightMem","last_synced_at":"2026-06-16T19:00:42.958Z","repository":{"id":319411346,"uuid":"999974788","full_name":"zjunlp/LightMem","owner":"zjunlp","description":"[ICLR 2026] LightMem: Lightweight and Efficient Memory-Augmented Generation","archived":false,"fork":false,"pushed_at":"2026-06-11T13:47:29.000Z","size":98845,"stargazers_count":918,"open_issues_count":7,"forks_count":86,"subscribers_count":16,"default_branch":"main","last_synced_at":"2026-06-11T15:24:36.872Z","etag":null,"topics":["agent","ai-agents","artificial-intelligence","chatbot","genai","knowledge","large-language-models","lightmem","lightweight","llm","long-term-memory","memory","memory-management","natural-language-processing","personalization","python","rag"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zjunlp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-11T04:47:13.000Z","updated_at":"2026-06-11T13:54:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"34b998c7-b662-4a9c-b5bc-ce5f88e3175d","html_url":"https://github.com/zjunlp/LightMem","commit_stats":null,"previous_names":["zjunlp/lightmem"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zjunlp/LightMem","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zjunlp%2FLightMem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zjunlp%2FLightMem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zjunlp%2FLightMem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zjunlp%2FLightMem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zjunlp","download_url":"https://codeload.github.com/zjunlp/LightMem/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zjunlp%2FLightMem/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34419350,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","ai-agents","artificial-intelligence","chatbot","genai","knowledge","large-language-models","lightmem","lightweight","llm","long-term-memory","memory","memory-management","natural-language-processing","personalization","python","rag"],"created_at":"2026-05-23T21:00:29.577Z","updated_at":"2026-06-16T19:00:42.931Z","avatar_url":"https://github.com/zjunlp.png","language":"Python","funding_links":[],"categories":["Python","🔤 Papers - Nonparametric Memory"],"sub_categories":["📝 Text Memory"],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource srcset=\"./figs/lightmem_logo_dark.png\" media=\"(prefers-color-scheme: dark)\"\u003e\n    \u003cimg src=\"./figs/lightmem_logo_light.png\" width=\"60%\" height=\"40%\" /\u003e\n  \u003c/picture\u003e\n\u003c/div\u003e\n\u003ch1 align=\"center\"\u003e LightMem: Lightweight and Efficient Memory-Augmented Generation \u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://arxiv.org/abs/2510.18866\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/arXiv-Paper-red\" alt=\"arXiv\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/zjunlp/LightMem\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/stars/zjunlp/LightMem?style=social\" alt=\"GitHub Stars\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/zjunlp/LightMem/blob/main/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/License-MIT-green.svg\" alt=\"License: MIT\"\u003e\n  \u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/github/last-commit/zjunlp/LightMem?color=blue\" alt=\"Last Commit\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/PRs-Welcome-red\" alt=\"PRs Welcome\"\u003e\n\u003c/p\u003e\n\n\u003ch5 align=\"center\"\u003e ⭐ If you like our project, please give us a star on GitHub for the latest updates!\u003c/h5\u003e\n\n---\n\n**LightMem** is a lightweight and efficient memory management framework designed for Large Language Models and AI Agents. It provides a simple yet powerful memory storage, retrieval, and update mechanism to help you quickly build intelligent applications with long-term memory capabilities.\n\n* 🚀 **Lightweight \u0026 Efficient**\n  \u003cbr\u003e Minimalist design with minimal resource consumption and fast response times\n\n* 🎯 **Easy to Use**\n  \u003cbr\u003e Simple API design - integrate into your application with just a few lines of code\n\n* 🔌 **Flexible \u0026 Extensible**\n  \u003cbr\u003e Modular architecture supporting custom storage engines and retrieval strategies\n\n* 🌐 **Broad Compatibility**\n  \u003cbr\u003e Support for cloud APIs (OpenAI, DeepSeek) and local models (Ollama, vLLM, etc.)\n\n  \u003cdiv align=center\u003e\u003cimg src=\"./figs/Lightmem.png\" width=\"100%\" height=\"60%\" /\u003e\u003c/div\u003e\n\n\u003cspan id='news'/\u003e\n\n## 📢 News\n- **[2026-04-24]**: 🚀 LightMem now supports the latest [**DeepSeek**](./src/lightmem/configs/memory_manager/base_config.py) models, including `deepseek-v4-flash` and `deepseek-v4-pro`, with `reasoning_effort` and thinking-mode configuration!\n- **[2026-04-24]**: 🎉🎉🎉 [**StructMem: Structured Memory for Long-Horizon Behavior in LLMs**](https://arxiv.org/abs/2604.21748) has been accepted by **ACL 2026**!\n- **[2026-03-21]**: 🚀 We provide a more comprehensive [baseline evaluation framework](https://github.com/zjunlp/MemBase), supporting the benchmarking of memory layers such as Mem0, A-MEM, EverMemOS, LangMem on multiple datasets like LoCoMo and LongMemEval.\n- **[2026-02-15]**: 🚀 **[StructMem](./StructMem.md)** is released: A hierarchical memory framework that preserves event-level memory bindings and cross-event memory connections. \n- **[2026-01-26]**: 🎉🎉🎉 [**LightMem: Lightweight and Efficient Memory-Augmented Generation**](https://arxiv.org/abs/2510.18866) has been accepted by **ICLR 2026**!\n- **[2026-01-17]**: 🚀 We provide a comprehensive [baseline evaluation framework](https://github.com/zjunlp/LightMem/blob/main/src/lightmem/memory_toolkits/readme.md), supporting the benchmarking of memory layers such as Mem0, A-MEM, and LangMem on multiple datasets like LoCoMo and LongMemEval.\n- **[2025-12-09]**: 🎬 Released a **[Demo Video](#demo)** showcasing long-context handling, along with comprehensive **[Tutorial Notebooks](./tutorial-notebooks/)** for various scenarios!\n- **[2025-11-30]**: 🚌 LightMem now supports calling multiple tools provided by its [**MCP Server**](https://github.com/zjunlp/LightMem/blob/main/mcp/server.py).\n- **[2025-11-26]**: 🚀 Added full **LoCoMo** dataset support, delivering strong [results](https://github.com/zjunlp/LightMem?tab=readme-ov-file#locomo) with leading performance and efficiency! Here is the [**reproduction script**](https://github.com/zjunlp/LightMem/blob/main/experiments/locomo/readme.md)!\n- **[2025-11-09]**: ✨ LightMem now supports local deployment via [**Ollama**](https://github.com/zjunlp/LightMem/blob/main/src/lightmem/factory/memory_manager/ollama.py), [**vLLM**](https://github.com/zjunlp/LightMem/blob/main/src/lightmem/factory/memory_manager/vllm_offline.py), and [**Transformers**](https://github.com/zjunlp/LightMem/blob/main/src/lightmem/factory/memory_manager/transformers.py) auto-loading!\n- **[2025-10-12]**: 🎉 LightMem project is officially Open-Sourced!\n\n\u003cspan id='project-navigation'/\u003e\n\n## 🧭 Project Navigation\n\nThis repository hosts multiple memory methods. The table below provides an overview and links to each method's documentation:\n\n| Method | Description | Paper | Documentation |\n| :--- | :--- | :--- | :--- |\n| **LightMem** | Lightweight and efficient memory-augmented generation framework | [ICLR 2026](https://arxiv.org/abs/2510.18866) | [README.md](./README.md) |\n| **FluxMem** | Connectivity-evolving memory framework modeling memory as a heterogeneous graph | [arXiv](https://arxiv.org/abs/2605.28773) (under review at EMNLP 2026) | [FluxMem.md](./FluxMem.md) |\n| **EM²Mem** | Event-centric multimodal memory for long-video question answering | Coming soon | [EM2Mem.md](./EM2Mem.md) |\n| **StructMem** | Structured hierarchical memory preserving event-level bindings and cross-event connections | [ACL 2026](https://arxiv.org/abs/2604.21748) | [StructMem.md](./StructMem.md) |\n\n\u003cspan id='reproduction'/\u003e\n\n## 🧪 Reproduction Scripts for LoCoMo \u0026 LongMemEval\n\nWe provide lightweight, ready-to-run scripts for reproducing results on **LoCoMo**, **LongMemEval**, and their combined baselines.\n\n| Dataset                  | Description                                                                  | Script                                                                                                         | Result |\n| :----------------------- | :--------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------| :---------------------------------------------|\n| **LongMemEval**          | Run LightMem on LongMemEval, including evaluation and offline memory update. | [run_lightmem_longmemeval.md](https://github.com/zjunlp/LightMem/blob/main/experiments/longmemeval/readme.md)  |  [LongMemEval Results](https://github.com/zjunlp/LightMem/blob/main/experiments/longmemeval/readme.md#results) |\n| **LoCoMo**               | Scripts for reproducing LightMem results on LoCoMo.                          | [run_lightmem_locomo.md](https://github.com/zjunlp/LightMem/blob/main/experiments/locomo/readme.md)            |  [LoCoMo Results](https://github.com/zjunlp/LightMem/blob/main/experiments/locomo/readme.md#results)      |\n| **LongMemEval \u0026 LoCoMo** | Unified baseline scripts for running both datasets.                          | [run_baselines.md](https://github.com/zjunlp/LightMem/blob/main/src/lightmem/memory_toolkits/readme.md)        |  [Baseline Results](#experimental-results)    |\n\n\u003cspan id='baseline-evaluation'/\u003e\n\n## 🧪 Baseline Evaluation\n\nWe provide a comprehensive [baseline evaluation framework](https://github.com/zjunlp/LightMem/blob/main/src/lightmem/memory_toolkits/readme.md), supporting the benchmarking of memory layers such as Mem0, A-MEM, and LangMem on multiple datasets like LoCoMo and LongMemEval.\n\n\u003cspan id='demo'/\u003e\n\n## 🎥 Demo \u0026 Tutorials\n\n**Watch Demo:** [YouTube](https://www.youtube.com/watch?v=r7sk_7Yv66I) | [Bilibili](https://www.bilibili.com/video/BV1a7mJBbEVM/)\n\n### 📚 Hands-on Tutorials\nWe provide ready-to-use Jupyter notebooks corresponding to the demo and other use cases. You can find them in the [`tutorial-notebooks`](./tutorial-notebooks/) directory.\n\n| Scenario | Description | Notebook Link |\n| :--- | :--- | :--- |\n| **Travel Planning** | A complete guide to building a travel agent with memory. | [LightMem_Example_travel.ipynb](./tutorial-notebooks/LightMem_Example_travel.ipynb) |\n| **Code Assistant** | A complete guide to building a code agent with memory. | [LightMem_Example_code.ipynb](./tutorial-notebooks/LightMem_Example_code.ipynb) |\n| **LongMemEval** | A tutorial on how to run evaluations on LongMemEval benchmarks using LightMem. | [LightMem_Example_longmemeval.ipynb](./tutorial-notebooks/LightMem_Example_longmemeval.ipynb) |\n\n\n\u003cspan id='todo'/\u003e\n\n## ☑️ Todo List\nLightMem is continuously evolving! Here's what's coming:\n    \n- Offline Pre-computation of KV Cache for Update (Lossless)\n- Online Pre-computation of KV Cache Before Q\u0026A (Lossy)\n- Integration More Models and Feature Enhancement\n- Coordinated Use of Context and Long-Term Memory Storage\n- Multi Modal Memory \n\n\n\u003cspan id='contents'/\u003e\n\n## 📑 Table of Contents\n\n* \u003ca href='#news'\u003e📢 News\u003c/a\u003e\n* \u003ca href='#reproduction'\u003e🧪 Reproduction Scripts\u003c/a\u003e\n* \u003ca href='#baseline-evaluation'\u003e🧪 Baseline Evaluation\u003c/a\u003e\n* \u003ca href='#project-navigation'\u003e🧭 Project Navigation\u003c/a\u003e\n* \u003ca href='#demo'\u003e🎥 Demo \u0026 Tutorials\u003c/a\u003e\n* \u003ca href='#todo'\u003e☑️ Todo List\u003c/a\u003e\n* \u003ca href='#installation'\u003e🔧 Installation\u003c/a\u003e\n* \u003ca href='#quickstart'\u003e⚡ Quick Start\u003c/a\u003e\n* \u003ca href='#architecture'\u003e🏗️ Architecture\u003c/a\u003e\n* \u003ca href='#examples'\u003e💡 Examples\u003c/a\u003e\n* \u003ca href='#experimental-results'\u003e📁 Experimental Results\u003c/a\u003e\n* \u003ca href='#configuration'\u003e⚙️ Configuration\u003c/a\u003e\n* \u003ca href='#contributors'\u003e👥 Contributors\u003c/a\u003e\n* \u003ca href='#related'\u003e🔗 Related Projects\u003c/a\u003e\n\n\u003cspan id='installation'/\u003e\n\n## 🔧 Installation\n\n### Installation Steps\n\n#### Option 1: Install from Source \n```bash\n# Clone the repository\ngit clone https://github.com/zjunlp/LightMem.git\ncd LightMem\n\n# Create virtual environment\nconda create -n lightmem python=3.11 -y\nconda activate lightmem\n\n# Install dependencies\nunset ALL_PROXY\npip install -e .\n```\n\n#### Option 2: Install via pip\n```bash\npip install lightmem  # Coming soon\n```\n\n## ⚡ Quick Start\n\n1. Modify the `JUDGE_MODEL`, `LLM_MODEL`, and their respective `API_KEY` and `BASE_URL` in `API Configuration`.\n\n2. Download `LLMLINGUA_MODEL` from [microsoft/llmlingua-2-bert-base-multilingual-cased-meetingbank](https://huggingface.co/microsoft/llmlingua-2-bert-base-multilingual-cased-meetingbank) and `EMBEDDING_MODEL` from [sentence-transformers/all-MiniLM-L6-v2](https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2) and modify their paths in `Model Paths`.\n\n3. Download the dataset from [longmemeval-cleaned](https://huggingface.co/datasets/xiaowu0162/longmemeval-cleaned), and modidy the path in `Data Configuration`.\n\n```python\ncd experiments\npython run_lightmem_qwen.py\n```\n\n\u003cspan id='architecture'/\u003e\n\n## 🏗️ Architecture\n\n### 🗺️ Core Modules Overview\nLightMem adopts a modular design, breaking down the memory management process into several pluggable components. The core directory structure exposed to users is outlined below, allowing for easy customization and extension:\n\n```python\nLightMem/\n├── src/lightmem/            # Main package\n│   ├── __init__.py          # Package initialization\n│   ├── configs/             # Configuration files\n│   ├── factory/             # Factory methods\n│   ├── memory/              # Core memory management\n│   └── memory_toolkits/     # Memory toolkits\n├── mcp/                     # LightMem MCP server\n├── experiments/             # Experiment scripts\n├── datasets/                # Datasets files\n└── examples/                # Examples\n```\n\n### 🧩 Supported Backends per Module\n\nThe following table lists the backends values currently recognized by each configuration module. Use the `model_name` field (or the corresponding config object) to select one of these backends.\n\n| Module (config)                 | Supported backends |\n| :---                            | :--- |\n| `PreCompressorConfig`           | `llmlingua-2`, `entropy_compress` |\n| `TopicSegmenterConfig`          | `llmlingua-2` |\n| `MemoryManagerConfig`           | `openai`, `deepseek`, `ollama`, `vllm`, etc. |\n| `TextEmbedderConfig`            | `huggingface` |\n| `MMEmbedderConfig`              | `huggingface` |\n| `RetrieverConfig`      | `qdrant`, `FAISS`, `BM25` |\n\n\u003cspan id='examples'/\u003e\n\n## 💡 Examples\n\n### Initialize LightMem\n```python\nimport os\nfrom datetime import datetime\nfrom lightmem.memory.lightmem import LightMemory\n\n\nLOGS_ROOT = \"./logs\"\nRUN_TIMESTAMP = datetime.now().strftime(\"%Y%m%d_%H%M%S\")\nRUN_LOG_DIR = os.path.join(LOGS_ROOT, RUN_TIMESTAMP)\nos.makedirs(RUN_LOG_DIR, exist_ok=True)\n\nAPI_KEY='your_api_key'\nAPI_BASE_URL='your_api_base_url'\nLLM_MODEL='your_model_name' # such as 'gpt-4o-mini' (API) or 'gemma3:latest' (Local Ollama) ...\nEMBEDDING_MODEL_PATH='/your/path/to/models/all-MiniLM-L6-v2'\nLLMLINGUA_MODEL_PATH='/your/path/to/models/llmlingua-2-bert-base-multilingual-cased-meetingbank'\n\nconfig_dict = {\n    \"pre_compress\": True,\n    \"pre_compressor\": {\n        \"model_name\": \"llmlingua-2\",\n        \"configs\": {\n            \"llmlingua_config\": {\n                \"model_name\": LLMLINGUA_MODEL_PATH,\n                \"device_map\": \"cuda\",\n                \"use_llmlingua2\": True,\n            },\n        }\n    },\n    \"topic_segment\": True,\n    \"precomp_topic_shared\": True,\n    \"topic_segmenter\": {\n        \"model_name\": \"llmlingua-2\",\n    },\n    \"messages_use\": \"user_only\",\n    \"metadata_generate\": True,\n    \"text_summary\": True,\n    \"memory_manager\": {\n        \"model_name\": 'xxx', # such as 'openai' or 'ollama' ...\n        \"configs\": {\n            \"model\": LLM_MODEL,\n            \"api_key\": API_KEY,\n            \"max_tokens\": 16000,\n            \"xxx_base_url\": API_BASE_URL # API model specific, such as 'openai_base_url' or 'deepseek_base_url' ...\n        }\n    },\n    \"extract_threshold\": 0.1,\n    \"index_strategy\": \"embedding\",\n    \"text_embedder\": {\n        \"model_name\": \"huggingface\",\n        \"configs\": {\n            \"model\": EMBEDDING_MODEL_PATH,\n            \"embedding_dims\": 384,\n            \"model_kwargs\": {\"device\": \"cuda\"},\n        },\n    },\n    \"retrieve_strategy\": \"embedding\",\n    \"embedding_retriever\": {\n        \"model_name\": \"qdrant\",\n        \"configs\": {\n            \"collection_name\": \"my_long_term_chat\",\n            \"embedding_model_dims\": 384,\n            \"path\": \"./my_long_term_chat\", \n        }\n    },\n    \"summary_retriever\": {\n        \"model_name\": \"qdrant\",\n        \"configs\": {\n            \"collection_name\": \"my_chat_summaries\",\n            \"embedding_model_dims\": 384,\n            \"path\": \"./my_chat_summaries\",\n        }\n    },\n    \"update\": \"offline\",\n    \"logging\": {\n        \"level\": \"DEBUG\",\n        \"file_enabled\": True,\n        \"log_dir\": RUN_LOG_DIR,\n    }\n}\n\nlightmem = LightMemory.from_config(config_dict)\n```\n\n### Add Memory\n```python\nsession = {\n\"timestamp\": \"2025-01-10\",\n\"turns\": [\n    [\n        {\"role\": \"user\", \"content\": \"My favorite ice cream flavor is pistachio, and my dog's name is Rex.\"}, \n        {\"role\": \"assistant\", \"content\": \"Got it. Pistachio is a great choice.\"}], \n    ]\n}\n\n\nfor turn_messages in session[\"turns\"]:\n    timestamp = session[\"timestamp\"]\n    for msg in turn_messages:\n        msg[\"time_stamp\"] = timestamp\n        \n    store_result = lightmem.add_memory(\n        messages=turn_messages,\n        force_segment=True,\n        force_extract=True\n    )\n```\n\n### Offline Update\n```python\nlightmem.construct_update_queue_all_entries()\nlightmem.offline_update_all_entries(score_threshold=0.8)\n``` \n\n### Generate summaries \n```python\nsummary_result = lightmem.summarize()\n```\n\n### Retrieve Memory\n```python\nquestion = \"What is the name of my dog?\"\nrelated_memories = lightmem.retrieve(question, limit=5)\nprint(related_memories)\n``` \n\n### MCP Server\n\nLightMem also supports the Model Context Protocol ([MCP](https://modelcontextprotocol.io/docs/getting-started/intro)) server:\n\n```bash\n# Running at Root Directory\ncd LightMem\n\n# Environment\npip install '.[mcp]'\n\n# MCP Inspector [Optional]\nnpx @modelcontextprotocol/inspector python mcp/server.py\n\n# Start API by HTTP (http://127.0.0.1:8000/mcp)\nfastmcp run mcp/server.py:mcp --transport http --port 8000\n```\n\nThe MCP config `json` file of your local client may looks like:\n\n```json\n{\n  \"yourMcpServers\": {\n    \"LightMem\": {\n      \"url\": \"http://127.0.0.1:8000/mcp\",\n      \"otherParameters\": \"...\"\n    }\n  }\n}\n```\n\n\u003cspan id='experimental-results'/\u003e\n\n## 📁 Experimental Results\n\nFor transparency and reproducibility, we have shared the results of our experiments on Google Drive. This includes model outputs, evaluation logs, and predictions used in our study.\n\n🔗 Access the data here: [Google Drive - Experimental Results](https://drive.google.com/drive/folders/1n1YCqq0aDeWiPILhkq-uS3sU3FDmslz9?usp=drive_link)\n\nPlease feel free to download, explore, and use these resources for research or reference purposes.\n\n\u003cspan id='configuration'/\u003e\n\n### LOCOMO: \n\n#### Overview\n\nbackbone: `gpt-4o-mini`, judge model: `gpt-4o-mini` \u0026 `qwen2.5-32b-instruct`\n\n| Method             | ACC(%) gpt-4o-mini | ACC(%) qwen2.5-32b-instruct | Memory-Con Tokens(k) Total | QA Tokens(k) total | Total(k)     | Calls  | Runtime(s) total |\n|-------------------|--------------------|------------------------------|-----------------------------|---------------------|--------------|--------|------------------|\n| FullText          | 73.83              | 73.18                        | –                           | 54,884.479          | 54,884.479   | –      | 6,971           |\n| NaiveRAG          | 63.64              | 63.12                        | –                           | 3,870.187           | 3,870.187    | –      | 1,884           |\n| A-MEM             | 64.16              | 60.71                        | 11,494.344                  | 10,170.567          | 21,664.907   | 11,754 | 67,084          |\n| MemoryOS(eval)    | 58.25              | 61.04                        | 2,870.036                   | 7,649.343           | 10,519.379   | 5,534  | 26,129          |\n| MemoryOS(pypi)    | 54.87              | 55.91                        | 5,264.801                   | 6,126.111           | 11,390.004   | 10,160 | 37,912          |\n| Mem0              | 36.49              | 37.01                        | 24,304.872                  | 1,488.618           | 25,793.490   | 19,070 | 120,175         |\n| Mem0(api)         | 61.69              | 61.69                        | 68,347.720                  | 4,169.909           | 72,517.629   | 6,022  | 10,445          |\n| Mem0-g(api)       | 60.32              | 59.48                        | 69,684.818                  | 4,389.147           | 74,073.965   | 6,022  | 10,926          |\n\nbackbone: `qwen3-30b-a3b-instruct-2507`, judge model: `gpt-4o-mini` \u0026 `qwen2.5-32b-instruct`\n\n| Method             | ACC(%) gpt-4o-mini | ACC(%) qwen2.5-32b-instruct | Memory-Con Tokens(k) Total | QA Tokens(k) total | Total(k)     | Calls  | Runtime(s) total |\n|-------------------|--------------------|------------------------------|-----------------------------|---------------------|--------------|--------|------------------|\n| FullText          | 74.87              | 74.35                        | –                           | 60,873.076          | 60,873.076   | –      | 10,555           |\n| NaiveRAG          | 66.95              | 64.68                        | –                           | 4,271.052           | 4,271.052    | –      | 1,252            |\n| A-MEM             | 56.10              | 54.81                        | 16,267.997                  | 17,340.881          | 33,608.878   | 11,754 | 69,339           |\n| MemoryOS(eval)    | 61.04              | 59.81                        | 3,615.087                   | 9,703.169           | 11,946.442   | 4,147  | 13,710           |\n| MemoryOS(pypi)    | 51.30              | 51.95                        | 6,663.527                   | 7,764.991           | 14,428.518   | 10,046 | 20,830           |\n| Mem0              | 43.31              | 43.25                        | 17,994.035                  | 1,765.570           | 19,759.605   | 16,145 | 46,500           |\n\n\n#### Details\n\nbackbone: `gpt-4o-mini`, judge model: `gpt-4o-mini` \u0026 `qwen2.5-32b-instruct`\n\n| Method             | Summary Tokens(k) In | Summary Tokens(k) Out | Update Tokens(k) In | Update Tokens(k) Out | QA Tokens(k) In | QA Tokens(k) Out | Runtime(s) mem-con | Runtime(s) qa |\n|-------------------|-----------------------|------------------------|----------------------|-----------------------|------------------|-------------------|----------------------|----------------|\n| FullText          | –                     | –                      | –                    | –                     | 54,858.770       | 25.709            | –                    | 6,971          |\n| NaiveRAG          | –                     | –                      | –                    | –                     | 3,851.029        | 19.158            | –                    | 1,884          |\n| A-MEM             | 1,827.373             | 492.883                | 7,298.878            | 1,875.210             | 10,113.252       | 57.315            | 60,607               | 6,477          |\n| MemoryOS(eval)    | 1,109.849             | 333.970                | 780.807              | 645.410               | 7,638.539        | 10.804            | 24,220               | 1,909          |\n| MemoryOS(pypi)    | 1,007.729             | 294.601                | 3,037.509            | 924.962               | 6,116.239        | 9.872             | 33,325               | 4,587          |\n| Mem0              | 8,127.398             | 253.187                | 12,722.011           | 3,202.276             | 1,478.830        | 9.788             | 118,268              | 1,907          |\n| Mem0(api)         | \\                     | \\                      | \\                    | \\                     | 4,156.850        | 13.059            | 4,328                | 6,117          |\n| Mem0-g(api)       | \\                     | \\                      | \\                    | \\                     | 4,375.900        | 13.247            | 5,381                | 5,545          |\n\nbackbone: `qwen3-30b-a3b-instruct-2507`, judge model: `gpt-4o-mini` \u0026 `qwen2.5-32b-instruct`\n\n| Method             | Summary Tokens(k) In | Summary Tokens(k) Out | Update Tokens(k) In | Update Tokens(k) Out | QA Tokens(k) In | QA Tokens(k) Out | Runtime(s) mem-con | Runtime(s) qa |\n|-------------------|-----------------------|------------------------|----------------------|-----------------------|------------------|-------------------|----------------------|----------------|\n| FullText          | –                     | –                      | –                    | –                     | 60,838.694       | 34.382            | –                    | 10,555         |\n| NaiveRAG          | –                     | –                      | –                    | –                     | 4,239.030        | 32.022            | –                    | 1,252          |\n| A-MEM             | 1,582.942             | 608.507                | 9,241.928            | 4,835.070             | 17,528.876       | 82.005            | 55,439               | 13,900         |\n| MemoryOS(eval)    | 1,222.139             | 531.157                | 1,044.307            | 817.484               | 9,679.996        | 23.173            | 12,697               | 1,012          |\n| MemoryOS(pypi)    | 2,288.533             | 516.024                | 2,422.693            | 1,436.277             | 7,743.391        | 21.600            | 19,822               | 1,007          |\n| Mem0              | 8,270.874             | 186.354                | 7,638.827            | 1,897.980             | 1,739.246        | 26.324            | 45,407               | 1,093          |\n\n#### Performance metrics\nbackbone: `gpt-4o-mini`, judge model: `gpt-4o-mini`\n\n| Method | Overall ↑ | Multi | Open | Single | Temp |\n| :--- | :---: | :---: | :---: | :---: | :---: |\n| FullText         | 73.83 | 68.79 | 56.25 | 86.56 | 50.16 |\n| NaiveRAG         | 63.64 | 55.32 | 47.92 | 70.99 | 56.39 |\n| A-MEM            | 64.16 | 56.03 | 31.25 | 72.06 | 60.44 |\n| MemoryOS(eval)   | 58.25 | 56.74 | 45.83 | 67.06 | 40.19 |\n| MemoryOS(pypi)   | 54.87 | 52.13 | 43.75 | 63.97 | 36.76 |\n| Mem0             | 36.49 | 30.85 | 34.38 | 38.41 | 37.07 |\n| Mem0(api)        | 61.69 | 56.38 | 43.75 | 66.47 | 59.19 |\n| Mem0-g(api)      | 60.32 | 54.26 | 39.58 | 65.99 | 57.01 |\n\nbackbone: `gpt-4o-mini`, judge model: `qwen2.5-32b-instruct`\n\n| Method | Overall ↑ | Multi | Open | Single | Temp |\n| :--- | :---: | :---: | :---: | :---: | :---: |\n| FullText         | 73.18 | 68.09 | 54.17 | 86.21 | 49.22 |\n| NaiveRAG         | 63.12 | 53.55 | 50.00 | 71.34 | 53.89 |\n| A-MEM            | 60.71 | 53.55 | 32.29 | 69.08 | 53.58 |\n| MemoryOS(eval)   | 61.04 | 64.18 | 40.62 | 70.15 | 40.50 |\n| MemoryOS(pypi)   | 55.91 | 52.48 | 41.67 | 66.35 | 35.83 |\n| Mem0             | 37.01 | 31.91 | 37.50 | 38.53 | 37.38 |\n| Mem0(api)        | 61.69 | 54.26 | 46.88 | 67.66 | 57.01 |\n| Mem0-g(api)      | 59.48 | 55.32 | 42.71 | 65.04 | 53.58 |\n\nbackbone: `qwen3-30b-a3b-instruct-2507`, judge model: `gpt-4o-mini`\n\n| Method | Overall ↑ | Multi | Open | Single | Temp |\n| :--- | :---: | :---: | :---: | :---: | :---: |\n| FullText         | 74.87 | 69.86 | 57.29 | 87.40 | 51.71 |\n| NaiveRAG         | 66.95 | 62.41 | 57.29 | 76.81 | 47.98 |\n| A-MEM            | 56.10 | 57.45 | 43.75 | 67.90 | 27.73 |\n| MemoryOS(eval)   | 61.04 | 62.77 | 51.04 | 72.29 | 33.02 |\n| MemoryOS(pypi)   | 51.30 | 52.48 | 40.62 | 61.59 | 26.48 |\n| Mem0             | 43.31 | 42.91 | 46.88 | 46.37 | 34.58 |\n| Mem0(api)        | 61.69 | 54.26 | 46.88 | 67.66 | 57.01 |\n| Mem0-g(api)      | 59.48 | 55.32 | 42.71 | 65.04 | 53.58 |\n\nbackbone: `qwen3-30b-a3b-instruct-2507`, judge model: `qwen2.5-32b-instruct`\n\n| Method | Overall ↑ | Multi | Open | Single | Temp |\n| :--- | :---: | :---: | :---: | :---: | :---: |\n| FullText         | 74.35 | 68.09 | 63.54 | 86.33 | 51.71 |\n| NaiveRAG         | 64.68 | 60.28 | 52.08 | 75.62 | 43.61 |\n| A-MEM            | 54.81 | 56.74 | 39.58 | 67.42 | 24.61 |\n| MemoryOS(eval)   | 59.81 | 63.12 | 48.96 | 70.51 | 32.09 |\n| MemoryOS(pypi)   | 51.95 | 55.67 | 39.58 | 61.47 | 27.41 |\n| Mem0             | 43.25 | 45.04 | 46.88 | 45.78 | 33.96 |\n| Mem0(api)        | 61.69 | 54.26 | 46.88 | 67.66 | 57.01 |\n| Mem0-g(api)      | 59.48 | 55.32 | 42.71 | 65.04 | 53.58 |\n\n\n## ⚙️ Configuration\n\nAll behaviors of LightMem are controlled via the BaseMemoryConfigs configuration class. Users can customize aspects like pre-processing, memory extraction, retrieval strategy, and update mechanisms by providing a custom configuration.\n\n#### Key Configuration Options (Usage)\n\n| Option                    | Default                                     | Usage (allowed values and behavior) |\n| :---                      | :---                                        | :--- |\n| `pre_compress`        | `False`                                     | True / False. If True, input messages are pre-compressed using the `pre_compressor` configuration before being stored. This reduces storage and indexing cost but may remove fine-grained details. If False, messages are stored without pre-compression. |\n| `pre_compressor`      | `None`                                      | dict / object. Configuration for the pre-compression component (`PreCompressorConfig`) with fields like `model_name` (e.g., `llmlingua-2`, `entropy_compress`) and `configs` (model-specific parameters). Effective only when `pre_compress=True`. |\n| `topic_segment`       | `False`                                     | True / False. Enables topic-based segmentation of long conversations. When True, long conversations are split into topic segments and each segment can be indexed/stored independently (requires `topic_segmenter`). When False, messages are stored sequentially. |\n| `precomp_topic_shared`| `False`                                     | True / False. If True, pre-compression and topic segmentation can share intermediate results to avoid redundant processing. May improve performance but requires careful configuration to avoid cross-topic leakage. |\n| `topic_segmenter`     | `None`                                      | dict / object. Configuration for topic segmentation (`TopicSegmenterConfig`), including `model_name` and `configs` (segment length, overlap, etc.). Used when `topic_segment=True`. |\n| `messages_use`        | `'user_only'`                               | `'user_only'` / `'assistant_only'` / `'hybrid'`. Controls which messages are used to generate metadata and summaries: `user_only` uses user inputs, `assistant_only` uses assistant responses, `hybrid` uses both. Choosing `hybrid` increases processing but yields richer context. |\n| `metadata_generate`   | `True`                                      | True / False. If True, metadata such as keywords and entities are extracted and stored to support attribute-based and filtered retrieval. If False, no metadata extraction occurs. |\n| `text_summary`        | `True`                                      | True / False. If True, a text summary is generated and stored alongside the original text (reduces retrieval cost and speeds review). If False, only the original text is stored. Summary quality depends on `memory_manager`. |\n| `memory_manager`      | `MemoryManagerConfig()`                     | dict / object. Controls the model used to generate summaries and metadata (`MemoryManagerConfig`), e.g., `model_name` (`openai`, `ollama`, etc.) and `configs`. Changing this affects summary style, length, and cost. |\n| `extract_threshold`   | `0.5`                                       | float (0.0 - 1.0). Threshold used to decide whether content is important enough to be extracted as metadata or highlight. Higher values (e.g., 0.8) mean more conservative extraction; lower values (e.g., 0.2) extract more items (may increase noise). |\n| `index_strategy`      | `None`                                      | `'embedding'` / `'context'` / `'hybrid'` / `None`. Determines how memories are indexed: 'embedding' uses vector-based indexing (requires embedders/retriever) for semantic search; 'context' uses text-based/contextual retrieval (requires context_retriever) for keyword/document similarity; and 'hybrid' combines context filtering and vector reranking for robustness and higher accuracy. |\n| `text_embedder`       | `None`                                      | dict / object. Configuration for text embedding model (`TextEmbedderConfig`) with `model_name` (e.g., `huggingface`) and `configs` (batch size, device, embedding dim). Required when `index_strategy` or `retrieve_strategy` includes `'embedding'`. |\n| `multimodal_embedder` | `None`                                      | dict / object. Configuration for multimodal/image embedder (`MMEmbedderConfig`). Used for non-text modalities. |\n| `history_db_path`     | `os.path.join(lightmem_dir, \"history.db\")`  | str. Path to persist conversation history and lightweight state. Useful to restore state across restarts. |\n| `retrieve_strategy`   | `'embedding'`                               | `'embedding'` / `'context'` / `'hybrid'`. Strategy used at query time to fetch relevant memories. Pick based on data and query type: semantic queries -\u003e `'embedding'`; keyword/structured queries -\u003e `'context'`; mixed -\u003e `'hybrid'`. |\n| `context_retriever`   | `None`                                      | dict / object. Configuration for context-based retriever (`ContextRetrieverConfig`), e.g., `model_name='BM25'` and `configs` like `top_k`. Used when `retrieve_strategy` includes `'context'`. |\n| `embedding_retriever` | `None`                                      | dict / object. Vector store configuration (`EmbeddingRetrieverConfig`), e.g., `model_name='qdrant'` and connection/index params. Used when `retrieve_strategy` includes `'embedding'`. |\n| `summary_retriever`   | `None`                                      | dict / object. Configuration for summary-specific vector store (`EmbeddingRetrieverConfig`). When configured, summaries are stored in a separate collection for hierarchical retrieval. Used in StructMem mode to store and retrieve session/topic summaries independently from detailed memories. |\n| `update`              | `'offline'`                                 | `'online'` / `'offline'`. `'offline'`: batch or scheduled updates to save cost and aggregate changes — this is the fully supported mode with complete functionality. `'online'`: reserved for future development (currently a no-op placeholder; memory will not be persisted when this mode is set). |\n| `kv_cache`            | `False`                                     | True / False. If True, attempt to precompute and persist model KV caches to accelerate repeated LLM calls (requires support from the LLM runtime and may increase storage). Uses `kv_cache_path` to store cache. |\n| `kv_cache_path`       | `os.path.join(lightmem_dir, \"kv_cache.db\")` | str. File path for KV cache storage when `kv_cache=True`. |\n| `graph_mem`           | `False`                                     | True / False. When True, some memories will be organized as a graph (nodes and relationships) to support complex relation queries and reasoning. Requires additional graph processing/storage. |\n| `extraction_mode`     | `'flat'`                                    | `'flat'` / `'event'`. Memory extraction mode: `'flat'` extracts factual entries as independent units suitable for general knowledge retention; `'event'` extracts event-level structures with both factual and relational components, preserving temporal bindings and causal relationships. Use `'event'` for narrative-heavy or time-sensitive scenarios. |\n| `version`             | `'v1.1'`                                    | str. Configuration/API version. Only change if you know compatibility implications. |\n| `logging`             | `'None'`                                    | dict / object. Configuration for logging enabled. |\n\n**(Option) BoundMem Configuration:**\n\nBoundMem tag fallback is intentionally opt-in and is not enabled by `BaseMemoryConfigs` by default. The following are parameters related to the BoundMem plugin in the main functions, which can be added as needed:\n\n| Function | Parameter / Behavior | Notes |\n| --- | --- | --- |\n| `add_memory()` | `boundmem_tags` | Tags newly created memories before insertion. Accepts a string or tag list. |\n| `retrieve()` | `boundmem_tags` | Filters retrieved memories by overlap with the current tags. |\n| `retrieve()` | `boundmem_drop_untagged` | Keeps untagged legacy memories by default; set `True` to drop them. |\n| `retrieve()` | returned memory text | Internal tag prefixes are stripped before results are returned. |\n| `resolve_tags()` | `strategy=\"hard\"` | Uses caller-provided `hard_tags`. |\n| `resolve_tags()` | `strategy=\"soft\"` | Uses `environment_tag_fn` with `query`, `history`, `known_tags`, and optional `metadata`. |\n| `resolve_tags()` | `known_tags` | Caller-maintained tag list; returned together with newly resolved tags. |\n| `tag_text()` / `strip_tags()` | string-level helpers | Add or remove the internal tag prefix for custom integrations. |\n| `filter_by_tags()` | raw retriever-result helper | Keeps memories with overlapping tags; accepts custom `tag_match_fn`. |\n| Matching rule | default matcher | A memory is kept if it shares at least one tag with current tags. |\n\n## 🏆 Contributors\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" width=\"120\"\u003e\n      \u003ca href=\"https://github.com/JizhanFang\"\u003e\n        \u003cimg src=\"https://avatars.githubusercontent.com/JizhanFang?v=4\" width=\"80\" style=\"border-radius:50%\" alt=\"JizhanFang\"/\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eJizhanFang\u003c/b\u003e\u003c/sub\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"120\"\u003e\n      \u003ca href=\"https://github.com/Xinle-Deng\"\u003e\n        \u003cimg src=\"https://avatars.githubusercontent.com/Xinle-Deng?v=4\" width=\"80\" style=\"border-radius:50%\" alt=\"Xinle-Deng\"/\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eXinle-Deng\u003c/b\u003e\u003c/sub\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"120\"\u003e\n      \u003ca href=\"https://github.com/Xubqpanda\"\u003e\n        \u003cimg src=\"https://avatars.githubusercontent.com/Xubqpanda?v=4\" width=\"80\" style=\"border-radius:50%\" alt=\"Xubqpanda\"/\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eXubqpanda\u003c/b\u003e\u003c/sub\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"120\"\u003e\n      \u003ca href=\"https://github.com/HaomingX\"\u003e\n        \u003cimg src=\"https://avatars.githubusercontent.com/HaomingX?v=4\" width=\"80\" style=\"border-radius:50%\" alt=\"HaomingX\"/\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eHaomingX\u003c/b\u003e\u003c/sub\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"120\"\u003e\n      \u003ca href=\"https://github.com/453251\"\u003e\n        \u003cimg src=\"https://avatars.githubusercontent.com/453251?v=4\" width=\"80\" style=\"border-radius:50%\" alt=\"453251\"/\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003e453251\u003c/b\u003e\u003c/sub\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"120\"\u003e\n      \u003ca href=\"https://github.com/James-TYQ\"\u003e\n        \u003cimg src=\"https://avatars.githubusercontent.com/James-TYQ?v=4\" width=\"80\" style=\"border-radius:50%\" alt=\"James-TYQ\"/\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eJames-TYQ\u003c/b\u003e\u003c/sub\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"120\"\u003e\n      \u003ca href=\"https://github.com/evy568\"\u003e\n        \u003cimg src=\"https://avatars.githubusercontent.com/evy568?v=4\" width=\"80\" style=\"border-radius:50%\" alt=\"evy568\"/\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eevy568\u003c/b\u003e\u003c/sub\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"120\"\u003e\n      \u003ca href=\"https://github.com/Norah-Feathertail\"\u003e\n        \u003cimg src=\"https://avatars.githubusercontent.com/Norah-Feathertail?v=4\" width=\"80\" style=\"border-radius:50%\" alt=\"Norah-Feathertail\"/\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eNorah-Feathertail\u003c/b\u003e\u003c/sub\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"120\"\u003e\n      \u003ca href=\"https://github.com/TongjiCst\"\u003e\n        \u003cimg src=\"https://avatars.githubusercontent.com/TongjiCst?v=4\" width=\"80\" style=\"border-radius:50%\" alt=\"TongjiCst\"/\u003e\n        \u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eTongjiCst\u003c/b\u003e\u003c/sub\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\nWe welcome contributions from the community! If you'd like to contribute, please fork the repository and submit a pull request. For major changes, please open an issue first to discuss what you would like to change.\n\n\u003cspan id='related'/\u003e\n\n## 🔗 Related Projects\n\n\u003cdiv align=\"center\"\u003e\n  \u003ctable\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" width=\"150\"\u003e\n        \u003ca href=\"https://github.com/mem0ai/mem0\"\u003e\n          \u003cimg src=\"https://avatars.githubusercontent.com/mem0ai\" width=\"80\" style=\"border-radius:50%\" alt=\"Mem0\"/\u003e\n          \u003cbr /\u003e\n          \u003csub\u003e\u003cb\u003eMem0\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" width=\"150\"\u003e\n        \u003ca href=\"https://github.com/MemTensor/MemOS\"\u003e\n          \u003cimg src=\"https://avatars.githubusercontent.com/MemTensor\" width=\"80\" style=\"border-radius:50%\" alt=\"MemOS\"/\u003e\n          \u003cbr /\u003e\n          \u003csub\u003e\u003cb\u003eMemos\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" width=\"150\"\u003e\n        \u003ca href=\"https://github.com/getzep/zep\"\u003e\n          \u003cimg src=\"https://avatars.githubusercontent.com/getzep\" width=\"80\" style=\"border-radius:50%\" alt=\"Zep\"/\u003e\n          \u003cbr /\u003e\n          \u003csub\u003e\u003cb\u003eZep\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" width=\"150\"\u003e\n        \u003ca href=\"https://github.com/Mirix-AI/MIRIX\"\u003e\n          \u003cimg src=\"https://avatars.githubusercontent.com/Mirix-AI\" width=\"80\" style=\"border-radius:50%\" alt=\"MIRIX\"/\u003e\n          \u003cbr /\u003e\n          \u003csub\u003e\u003cb\u003eMIRIX\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" width=\"150\"\u003e\n        \u003ca href=\"https://github.com/NevaMind-AI/memU\"\u003e\n          \u003cimg src=\"https://avatars.githubusercontent.com/NevaMind-AI\" width=\"80\" style=\"border-radius:50%\" alt=\"MemU\"/\u003e\n          \u003cbr /\u003e\n          \u003csub\u003e\u003cb\u003eMemU\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" width=\"150\"\u003e\n        \u003ca href=\"https://github.com/memodb-io/memobase\"\u003e\n          \u003cimg src=\"https://avatars.githubusercontent.com/memodb-io\" width=\"80\" style=\"border-radius:50%\" alt=\"Memobase\"/\u003e\n          \u003cbr /\u003e\n          \u003csub\u003e\u003cb\u003eMemobase\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/table\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzjunlp%2FLightMem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzjunlp%2FLightMem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzjunlp%2FLightMem/lists"}