Skip to content

Tại Sao Mem0 Tồn Tại: Memory Không Chỉ Cần Vector Search

Karify98 & Amy 🌸·
Cover Image for Tại Sao Mem0 Tồn Tại: Memory Không Chỉ Cần Vector Search

Bạn build AI Agent và muốn nó có trí nhớ.

Ban đầu mọi thứ rất đơn giản: một file MEMORY.md, vài ghi chú về user preferences, project context, những quyết định quan trọng.

Rồi memory lớn dần.

50 facts thành 500 facts. 500 facts thành vài nghìn dòng. Thông tin bắt đầu trùng lặp, mâu thuẫn và lỗi thời. Khi cần thì không tìm thấy. Tìm thấy rồi lại không chắc nó còn đúng hay không.

Context window ngày càng bị chiếm dụng bởi những thứ agent "có thể cần", thay vì những gì nó thực sự cần ngay lúc này. Đến một thời điểm, agent dành nhiều thời gian đọc memory hơn là giải quyết công việc.

Giải pháp phổ biến là: "Cứ đưa hết vào vector database."

Mình cũng từng nghĩ vậy.

Nhưng sau vài tháng vận hành thực tế, mình nhận ra vector search chỉ giải quyết một phần rất nhỏ của bài toán memory. Vấn đề lớn hơn không phải là lưu trữ hay truy xuất, mà là làm thế nào để tri thức luôn đúng, luôn liên quan và không tự biến thành technical debt của AI Agent.

Mem0 — Không Phải Thêm Một Vector Database

Gần đây, một repo trên GitHub vượt 50K stars: Mem0 — nền tảng memory layer cho AI agent. Nhìn qua tưởng là vector database đóng gói lại. Nhưng nó đang giải quyết đúng cái 80% còn lại — phần mà file-based memory bỏ ngỏ.

Bộ Não Làm Gì Mà Máy Chưa Làm Được?

Não bạn mỗi ngày nhận hàng ngàn thông tin, nhưng không dump hết vào một chỗ rồi grep. Nó có pipeline: short-term memory (như context window của LLM) → memory consolidation khi ngủ (trích xuất ý chính, gom mảnh liên quan, nén lại). Hippocampus đóng vai trò index — không lưu trực tiếp mà biết memory nằm ở đâu, ráp lại khi cần.

Điểm mấu chốt: não người không chỉ search. Nó extract (trích xuất), dedup (thanh lọc), consolidate (tổng hợp), link entities (liên kết), và decay (làm cũ dần theo thời gian).

Vector database làm được mỗi phần "tìm." Còn lại — Mem0 lấp vào.

Ba Vấn Đề & Cách Mem0 Xử Lý

1. Không Có Extract & Dedup

Hội thoại với agent là chuỗi text thô — "Tôi thích phở", "Dự án deploy trên AWS Singapore". File-based để nguyên text, không extract facts. Cùng ý viết khác đi — "Tôi thích phở" và "Món tủ của tôi là phở bò" — thành 2 dòng riêng.

Mem0: khi gọi memory_add(), input qua 5 bước — context lookup → LLM distill (trích xuất facts từ text thô) → hash + semantic dedup → embed & store → entity linking. Một LLM call duy nhất, facts được rút ra và dedup trước khi lưu.

2. Memory Cũ Không Tự Hết Hạn

"Region: ap-southeast-1" vẫn rank cao dù đã chuyển đi 2 tháng. Memory mới mâu thuẫn memory cũ — cả 2 cùng tồn tại, agent không biết tin cái nào. Não người có cơ chế quên tự nhiên — đây là feature, không phải bug.

Mem0: dùng ADD-only — memory cũ không bị xóa, nhưng system tự resolve conflict (memory mới ưu tiên hơn). Có temporal decay để memory cũ giảm trọng số dần.

3. Không Có Entity Linking

3 fact về cùng một món — "phở: bò tái", "phở: quán đầu ngõ", "phở: giá 50K" — nằm 3 nơi khác nhau. Agent đọc từng cái một, tốn token, dễ bỏ sót.

Mem0: tự trích xuất entities từ memory, liên kết chúng lại. Khi search, entity graph boost kéo tất cả fact liên quan cùng lúc — giống hippocampus ráp các mảnh rời thành bức tranh.

Về retrieval, Mem0 chạy 3 tín hiệu song song — semantic (vector), keyword (BM25), entity — rồi hợp nhất thành một score. Mỗi loại query được phục vụ bởi tín hiệu mạnh nhất của nó.

Memory được tổ chức trên 3 tầng lưu trữ (vector DB, entity store, SQL) thay vì một bảng vector duy nhất — để vừa search nhanh vừa giữ được audit trail. Benchmark cho thấy trung bình dưới 7,000 tokens mỗi retrieval call, so với 25,000+ tokens nếu dùng full-context approach.

Dùng Mem0 Không Có Nghĩa Là Bỏ Local

Một hiểu lầm phổ biến: Mem0 = SaaS = mất kiểm soát. Mem0 có bản open-source (Apache 2.0), bạn có thể self-host toàn bộ stack trên máy mình — vector DB, entity store, SQL — giống hệt OpenClaw. Cái bạn thực sự trả phí là LLM call (cho bước distill facts) và embedding API — những thứ tự build cũng phải tốn.

Nhưng có một lưu ý quan trọng: không phải mọi feature đều có trong bản open-source. Webhooks, memory export, dashboard, analytics, memory filters v2, auto-scaling, high availability — tất cả đều là Platform-only (Pro/Cloud). Nếu bạn cần những tính năng này trong production, bạn sẽ phải dùng Mem0 Cloud hoặc tự build lại.

Khác biệt không nằm ở local vs cloud. Nó nằm ở: bạn muốn tự code extract pipeline, dedup, entity linking — hay dùng một platform đã làm sẵn? Và nếu cần advanced features, bạn sẵn sàng trả tiền cho managed service hay tự build từ open-source core?

Bài Học

Sau 2 tháng tìm hiểu và thử nghiệm, điều mình nhận ra là memory cho AI Agent phức tạp hơn rất nhiều so với việc lưu trữ và tìm kiếm thông tin.

Vector search tương đối dễ. Một kỹ sư có kinh nghiệm hoàn toàn có thể dựng được trong vài ngày. Nhưng đó chỉ là phần truy xuất.

Phần khó hơn nhiều nằm ở những thứ diễn ra trước và sau đó: trích xuất facts từ hội thoại, hợp nhất thông tin trùng lặp, liên kết thực thể, xử lý thông tin lỗi thời, xác định điều gì còn liên quan và điều gì nên bị quên đi.

Đây đều là những chi tiết nhỏ khi nhìn riêng lẻ. Nhưng chính chúng quyết định liệu memory có còn hữu ích sau vài tháng vận hành hay dần biến thành một bãi dữ liệu nhiễu.

Thú vị ở chỗ, bộ não con người đã làm những việc này từ lâu. Mỗi ngày, chúng ta liên tục tổng hợp ký ức, liên kết thông tin liên quan, củng cố điều quan trọng và làm mờ đi những thứ không còn giá trị.

Nhìn từ góc độ đó, Mem0 không đơn thuần là "vector database tốt hơn".

Nó là một nỗ lực đóng gói toàn bộ vòng đời của memory thành một hệ thống có thể vận hành được.

Bởi câu hỏi quan trọng nhất không phải là:

"Agent có nhớ được hay không?"

Mà là:

"Sau 3 tháng, những gì agent nhớ có còn đúng, còn liên quan và còn đáng để tin hay không?"


Bài viết được hỗ trợ bởi AI (Amy 🌸). Nội dung đã được kiểm duyệt bởi tác giả.

Related Posts