Mem0(讀作「mem-zero」)替 AI 助理與 Agent 補上一層智慧記憶,從每次對話裡萃取該記住的事實,在下一次自動撈回來,讓回答個人化。這份手冊帶你用 pip 或 npm 兩行裝起來、跑通 Memory.add / Memory.search、選對「函式庫 / 自架 / 雲端」三種部署,並走完一個記憶型聊天機器人的完整實作。
大型語言模型本身是無狀態的,每開一個對話它對你一無所知。多數人靠把整段歷史塞回 context 來假裝它有記憶,但這條路又慢又貴,而且 context 一爆就全忘。Mem0 把「記憶」抽成一層獨立服務:對話結束時,它從訊息裡萃取出值得長期保存的事實(偏好、決策、人名、專案脈絡),存進向量庫;下次對話開始,它依語意把最相關的幾條撈回來,只把這幾條注入 prompt。
Mem0 是一層 add / search / get_all 的記憶 API,夾在你的應用和 LLM 之間,不是 RAG 框架,也不是聊天機器人。官方定位:「Mem0(mem-zero)為 AI 助理與 Agent 補上一層智慧記憶,讓互動個人化。」它的記憶有層級:User、Session、Agent 三種範圍,讓「這個使用者長期偏好」「這場對話的脈絡」「這個 Agent 自己的經驗」彼此不互相污染。
2026 年 4 月那篇隨附論文(arXiv:2504.19413)講了它為什麼這樣做:在 LoCoMo 長對話基準上,記憶式回答的準確率從 71.4 拉到 91.6;LongMemEval 從 67.8 拉到 93.4;而且因為只撈幾條而非整段歷史,單次操作 token 用量壓在 6.7K–7.0K、p50 延遲 0.88–1.09 秒。換句話說,記憶層不只「記得更多」,還「算得更少」。
Mem0 的「函式庫模式」沒有伺服器、沒有帳號:pip install mem0ai(或 Node 端 npm install mem0ai)就裝好了。預設它用 OpenAI 當 LLM 跟 embedding 模型,所以先 export OPENAI_API_KEY=...,接著 from mem0 import Memory; memory = Memory() 即可開工。需要實體抽取等進階 NLP,改裝 pip install mem0ai[nlp] 並下載 spaCy 模型。
Node 端 npm install -g @mem0/cli 裝一支命令列工具,mem0 init 跑一次設定精靈,之後在終端機就能加記憶、查記憶。另外官方有一個瀏覽器外掛(README 列出 ChatGPT 等場景),把你在不同 AI 聊天工具裡累積的偏好同步成同一份記憶。
pip / npm install)適合測試與原型;自架伺服器(docker compose up,內建 Dashboard 與 API Key 管理)適合想跑在自己基礎建設上的團隊;雲端平台(到 app.mem0.ai 註冊)適合要零維運上線的產品。下一節會把這三條路攤開比。
Mem0 的 API 面很小:add 把對話變成記憶、search 把記憶撈回來,其餘 get_all / update / delete 是管理用。複雜度在於它周邊的功能:記憶範圍(User / Session / Agent)、可換的 LLM 與向量庫、圖譜記憶、自架伺服器、託管平台、CLI、瀏覽器外掛、各家 Agent 框架整合。下面這張表把它能做的事拆成一格一格。
mem0 init / add / search 在終端機操作記憶,不需撰寫程式碼,方便接腳本或快速試驗。| 面向 | 函式庫 Library | 自架伺服器 Self-Hosted | 雲端平台 Cloud Platform |
|---|---|---|---|
| 最適合 | 測試、原型 | 想跑在自己基礎建設上的團隊 | 零維運的正式上線 |
| 怎麼開始 | pip install mem0ai |
docker compose up |
到 app.mem0.ai 註冊 |
| Dashboard | — | 有 | 有 |
| 帳號與 API Key 管理 | — | 有 | 有 |
| 進階功能 | — | 部分 | 全部 |
Mem0 的 API 很短,但用法差異大:記憶範圍沒分好、撈太多條、模型沒換,會抵消它原本省下的成本。下面這幾條全部從官方 README、文件與隨附論文整理。
大多數人只傳 user_id 就上路。但「這一場對話的短期脈絡」應該用 run_id 隔開,「這個 Agent 自己的經驗」用 agent_id。三層混在一起,短期對話內容會污染長期偏好。
quickstart 用的是 top_k=3,這是有意的設定。Mem0 的設計前提是只撈幾條最相關的記憶;撈 20 條塞進 prompt,等於回到塞整段歷史的做法,反而慢、貴、又把雜訊餵給模型。
不用自己切句子。把 [{"role":"user",...},{"role":"assistant",...}] 整個訊息陣列丟給 memory.add(),Mem0 會自己萃取出值得記的事實;你只負責決定它屬於哪個 user / session。
官方範例特意先 messages.append 助理的回覆、再 add,因為 AI 給出的承諾(例如「好,我幫你改成深色主題」)也是應被記住的事實,不只使用者說的話才算數。
基本的 pip install mem0ai 不含進階 NLP / 實體抽取相依。要用就裝 pip install "mem0ai[nlp]" 並下載 spaCy 模型(python -m spacy download en_core_web_sm),別等到 production 才發現缺。
三種部署的 API 幾乎相同:先 pip install 跑通邏輯,確認需要多人協作、Dashboard 或 API Key 管理後,再換成 docker compose up 自架或 app.mem0.ai 託管,呼叫碼不需重寫。
預設每次 add / search 都會打 OpenAI(萃取事實 + 算 embedding)。研究或內部工具用 Memory.from_config() 把 LLM 與 embedder 指到本機模型,成本就和你自己的算力綁定。
arXiv:2504.19413 詳細說明「純向量」與「向量 + 圖譜」的取捨:圖譜在多實體、多跳關係的場景才划算。先看論文裡的數字,再決定要不要多接一個圖資料庫。
來源 · arXiv:2504.19413
下面這段示範:第一次對話裡 Alice 告訴助理她的偏好;隔天用一支全新的、沒有任何 context 的程序再開一次,助理照樣記得「繁體中文、TypeScript、不要 emoji」。中間沒有手動塞歷史,全由 memory.add 與 memory.search 完成。指令依官方 README quickstart 寫成。
關鍵在「隔天、全新程序」這一行。傳統做法要嘛把整段歷史存進資料庫每次撈出來塞 prompt(貴、慢、會爆),要嘛乾脆不記。Mem0 的做法是把對話蒸餾成幾條事實存著,需要時只撈最相關的幾條。因此 token 用量穩定、延遲可控,使用者體感是「這個 AI 認得我」。
另一個細節:範例特意把 assistant 的回覆也放進 messages 再 add。AI 給出的承諾也是記憶的一部分,這是「個人化助理」與「只查偏好的 chatbot」之間的實作分界。
add / search 都是一次 API 呼叫。量大就要嘛換本機模型、要嘛把帳算進成本。
add 之後存的是模型蒸餾過的摘要,好處是省 token,代價是萃取本身可能漏掉或扭曲細節。需要原文留存就得另外存,別把 Mem0 當稽核日誌。
user_id、不用 run_id / agent_id 隔開,短期對話的口水會混進長期偏好,撈回來的東西就會越來越雜。
docker compose up 起得來,但你還是要顧向量庫、備份、權限、升級。要省這些事就用 app.mem0.ai 託管版;要自己掌控資料就得接受維運成本。
from mem0 import Memory 走。
函式庫模式只是起點。Mem0 的每一層都可以替換:模型、向量庫、部署方式、整合框架。下一步通常不是學新 API,而是把它接到現有的系統上。
1. 換掉預設模型與向量庫。用 Memory.from_config() 把 LLM、embedder 指到指定供應商或本機模型,把記憶存進 Qdrant、Chroma、pgvector,呼叫碼不需更動。
2. 認真分記憶範圍。把 user_id / run_id / agent_id 想成資料表的索引:長期偏好、單場對話脈絡、Agent 自身經驗各走各的,撈回來才乾淨。
3. 評估要不要圖譜記憶。多實體、多跳關係(誰屬於哪個團隊、哪個專案依賴哪個服務)的場景,開圖譜記憶讓檢索順著關係走;先用 arXiv:2504.19413 裡的數字判斷划不划算。
4. 接進你的 Agent 框架。LangGraph、CrewAI、Vercel AI SDK、Claude Code、Cursor、Windsurf 都有官方整合;要做瀏覽器端就掛官方的記憶外掛(README 列出 ChatGPT 等場景)。
5. 決定部署形態。原型用函式庫,團隊協作用自架伺服器(docker compose up,內建 Dashboard 與 API Key 管理),要零維運上線就上 app.mem0.ai 託管版。
① docs.mem0.ai:完整的 API、設定、整合、自架與平台文件。
② arXiv:2504.19413:隨附論文,記憶層方法、基準測試、純向量 vs 圖譜的取捨分析。
③ github.com/mem0ai/mem0:原始碼、examples/ 範例、Node SDK 與 CLI。