Giải phẫu bộ nhớ của AI Agent: Từ lý thuyết nhận thức đến thực tế kỹ thuật
Bài viết phân tích sâu về cách các thư viện bộ nhớ của AI Agent vận hành, chỉ ra khoảng cách giữa thuật ngữ khoa học nhận thức và thực tế kỹ thuật. Tác giả giải mã cấu trúc ba thành phần của hệ thống bộ nhớ, phân loại các loại hình bộ nhớ và bàn về những hạn chế khi áp dụng các quy tắc sinh học vào trí tuệ nhân tạo.

Hầu hết các thư viện bộ nhớ dành cho AI Agent hiện nay đều sử dụng chung một bộ từ vựng: episodic (tình huống), semantic (ngữ nghĩa), và đôi khi là procedural (quy trình). Đây là những thuật ngữ mượn từ khoa học nhận thức, nhưng kỹ thuật thực tế đi kèm thường không được "mượn" theo cùng một cách. Một thư viện có thể có trường dữ liệu procedural sử dụng chung cơ chế lưu trữ và truy xuất với semantic — về bản chất, nó chỉ là một nhãn dán, không phải một hệ thống riêng biệt. Sự nhầm lẫn sâu xa hơn nằm ở chính từ "bộ nhớ" (memory): hầu hết những gì các thư viện này xây dựng đều hẹp hơn rất nhiều so với định nghĩa đó, và việc định nghĩa chính xác hơn sẽ giúp làm rõ vấn đề.
Thuật ngữ này xuất phát từ một chương sách năm 1972 của Endel Tulving. Ông lập luận rằng những gì mọi người từng coi là một thứ duy nhất — bộ nhớ — thực tế là ít nhất hai thứ: bộ nhớ về các sự kiện (đã xảy ra gì, ở đâu, khi nào) và bộ nhớ về các sự thật (thủ đô của Pháp là gì, điểm sôi của nước). Ông gọi chúng là episodic và semantic. Chúng hoạt động khác nhau và chúng "thất bại" theo những cách khác nhau.
Hầu hết những gì các thư viện này gọi là "bộ nhớ" thực sự hẹp hơn nhiều so với từ ngữ gợi ý: không phải là một hệ thống bộ nhớ nhận thức hoàn chỉnh, mà là nội dung tự truyện về người dùng được lưu giữ thay cho họ — họ sống ở đâu, họ đang làm việc gì, họ đã quyết định điều gì.
Giải phẫu một hệ thống bộ nhớ của Agent
Một thư viện bộ nhớ cho agent được xây dựng từ một số lượng nhỏ các thành phần. Bạn có thể đọc tài liệu của bất kỳ thư viện nào nếu hiểu rõ các bộ phận này.
Trình trích xuất (The Extractor)
Đây là bộ phận đọc các bản ghi hội thoại và quyết định những gì cần giữ lại. Thường là một lệnh gọi LLM, đôi khi có prompt nghiêm ngặt hoặc lược đồ đầu ra có kiểu dữ liệu. Nó tạo ra các câu lệnh — những sự thật ngắn gọn, trừu tượng về người dùng, thế giới hoặc nhiệm vụ.
Lựa chọn quan trọng nhất mà trình trích xuất đưa ra là về thời điểm. Trích xuất chủ động (eagerly) sau mỗi tin nhắn, bạn sẽ tốn token vào những câu chuyện xã giao vô bổ. Trích xuất lười (lazily) vào cuối phiên, ngữ cảnh bạn cần để giải quyết đại từ đã biến mất. Không có thời điểm nào là sai hoàn toàn; mỗi cách đánh mất thứ mà cách kia giữ lại. Câu hỏi đáng đặt ra cho bất kỳ thư viện nào là những gì bị loại bỏ — các manh mối tham chiếu (chỉ ra "anh ấy" là ai), các neo thời gian ("hôm qua", "tuần tới") và ngữ cảnh địa phương để loại bỏ sự mơ hồ là những nạn nhân phổ biến. Về mặt nhận thức, quá trình trích xuất là sự nén từ sự kiện có ngữ cảnh sang sự thật phi ngữ cảnh: "người dùng đề cập thích TypeScript khi uống cà phê thứ Ba" trở thành "người dùng thích TypeScript". Mức độ nén mạnh mẽ của một thư viện là một trong những quyết định thiết kế cốt lõi của nó.
Kho lưu trữ (The Store)
Đây là cơ sở dữ liệu. Một hoặc nhiều trong số: chỉ mục vector (các mục được lập chỉ mục theo độ tương đồng ngữ nghĩa), bảng quan hệ (các mục được lập chỉ mục theo các cột bạn có thể lọc), đồ thị tri thức (các mục được kết nối bởi các cạnh có kiểu dữ liệu). Mỗi câu lệnh mang theo siêu dữ liệu — dấu thời gian, đôi khi là điểm tin cậy, đôi khi là con trỏ nguồn quay lại cuộc hội thoại gốc.
Câu hỏi khó nhất mà kho lưu trữ phải giải quyết không phải là đặt thứ vào đâu. Đó là làm gì khi một câu lệnh mới mâu thuẫn với câu lệnh cũ. Người dùng sống ở Paris cho đến tháng Tư, sau đó chuyển đến Amsterdam — và bây giờ kho lưu trữ có cả hai, mỗi cái đều trình bày như là hiện tại. Lựa chọn là:
- Ghi đè (một sự thật, không có lịch sử).
- Nối thêm (cả hai, để việc truy xuất tự sắp xếp).
- Giữ cả hai với cái cũ được đánh dấu là bị thay thế.
Một kho lưu trữ không thể trả lời câu hỏi "tháng trước tôi đã tin điều gì?" không phải là một hệ thống bộ nhớ. Nó là một ảnh chụp nhanh có dấu thời gian.
Trình truy xuất (The Retriever)
Tại thời điểm truy vấn, thành phần này biến câu hỏi hiện tại thành một tìm kiếm và trả về các câu lệnh có khả năng liên quan nhất. Độ tương đồng vector là đường cơ sở. Tìm kiếm từ khóa trên nền tảng đó rất phổ biến. Một bộ xếp hạng lại (reranker) là lớp thứ ba tiêu chuẩn. Về mặt cấu trúc, đây là RAG; kho ngữ liệu là các câu lệnh tích lũy của người dùng thay vì thư viện tài liệu. Một số thư viện cũng chạy bộ lọc thời gian (không trả về các câu lệnh đã biết là lỗi thời) và kiểm tra giả định — phát hiện khi chính câu hỏi đó giả định một sự thật cũ kỹ và chặn nó không được kéo vào ngữ cảnh.
Mọi sự khác biệt giữa các thư viện bộ nhớ agent đều nằm trong một trong ba phần này. Bạn có thể mô tả bất kỳ thư viện nào theo các thuật ngữ này mà chưa cần biết nó dùng để làm gì.
Các loại bộ nhớ
Phân loại chuẩn của khoa học nhận thức bao gồm bốn loại: tình huống, ngữ nghĩa, quy trình và làm việc. Bộ nhớ làm việc (working memory) trong agent là cửa sổ ngữ cảnh — một cỗ máy khác với thứ bài viết này đề cập, đáng để tách riêng. Điều đó còn lại ba loại. Hãy thêm loại bộ nhớ tương lai (prospective) — nó không nằm trong phân loại chuẩn, nhưng nó đặt tên cho một khoảng trống mà lĩnh vực này chưa lấp đầy.
Bộ nhớ tình huống (Episodic Memory)
Các sự kiện cụ thể gắn liền với thời gian và địa điểm. "Tôi đã uống cà phê với Aleksandra thứ Ba tuần trước tại quán trên phố Mostowa." Bộ nhớ có ngày tháng, có bối cảnh và mang tính cá nhân. Bạn đã trải nghiệm nó. Việc ghi nhớ cảm thấy như đang trải nghiệm lại — bạn có thể đặt mình trở lại hiện trường.
Các thư viện bộ nhớ agent xử lý việc này bằng một bảng các câu lệnh có dấu thời gian. "Người dùng đề cập họ sống ở Berlin (2026-03-14)". Mỗi mục là một sự kiện đơn lẻ mà hệ thống quan sát thấy. Một số thư viện giữ lại đoạn hội thoại tình huống thô cùng với các sự thật đã trích xuất.
Bộ nhớ ngữ nghĩa (Semantic Memory)
Các sự thật về thế giới không gắn liền với bất kỳ sự kiện cụ thể nào. "Berlin là thủ đô của Đức." "Điểm sôi của nước là 100°C tại mực nước biển." Bạn biết những điều này; bạn thường không thể nhớ khi nào mình học được chúng. Kiến thức này đã phi ngữ cảnh hóa.
Điều mà mọi người thường nói đến khi nhắc đến "bộ nhớ agent" chính là cái này. "Người dùng thích TypeScript" bắt đầu như một quan sát tình huống — họ đã nói điều đó vào thứ Ba — nhưng đến khi nó nằm trong kho lưu trữ, ngữ cảnh đã biến mất và thứ còn lại là một sự thật về người dùng, đúng cho đến khi bị mâu thuẫn.
Bộ nhớ quy trình (Procedural Memory)
Biết cách làm mọi việc. Buộc dây giày, đạp xe, bộ nhớ cơ của phím tắt bàn phím. Bạn thường không thể diễn đạt bằng lời bộ nhớ quy trình — hãy thử giải thích cách bạn giữ thăng bằng xem — nhưng nó định hình hành vi một cách đáng tin cậy.
Bộ nhớ quy trình là phép thử axit rõ ràng nhất cho khoảng cách giữa những gì thư viện tuyên bố và những gì nó thực hiện. LangMem coi đó là một cơ chế riêng biệt — phát triển prompt hệ thống từ các quỹ đạo đã chấm điểm, do đó những gì được ghi nhớ không phải là một sự thật có thể truy xuất mà là khuynh hướng hành vi được mã hóa trong các hướng dẫn. Mem0 hiển thị nhãn quy trình nhưng ghi nó vào cùng chỉ mục mà nó sử dụng cho các sự thật — metadata.memory_type = "procedural" là sự khác biệt duy nhất. Graphiti không hiển thị bộ nhớ quy trình nào cả; mọi thứ đều nằm trong cùng một đồ thị hai thời gian bất kể nguồn gốc.
Bộ nhớ tương lai (Prospective Memory)
Nhớ làm điều gì đó trong tương lai. "Đừng quên gửi hợp đồng vào ngày mai." "Lần tới người dùng hỏi về giá cả, hãy nhắc đến gói mới." Bộ nhớ tương lai là một trong những chế độ thất bại được nghiên cứu nhiều nhất ở con người — mọi người quên ý định thường xuyên hơn nhiều so với việc họ quên sự thật. Các tương tự gần nhất trong sản xuất là các kích hoạt lịch trình trong các khung công việc agent; chúng giải quyết trường hợp "làm Y vào thời điểm T" nhưng không giải quyết trường hợp khó hơn "làm Y khi điều kiện X xuất hiện tiếp theo", đây chính là hình thức thực sự của bộ nhớ tương lai. Không có thư viện sản xuất nào tôi từng thấy cung cấp tính năng này. Đây là lãnh địa mở.
Những thư viện này thực sự là gì
Trong bốn loại này, ba loại phần lớn vắng mặt trong các thư viện bộ nhớ sản xuất — tình huống bị nén thành ngữ nghĩa khi trích xuất, quy trình chủ yếu là ngữ nghĩa bị gắn nhãn sai, tương lai hầu như không tồn tại.
Còn lại là bộ nhớ ngữ nghĩa, và trong phạm vi ngữ nghĩa, một tập con cụ thể: bộ nhớ tự truyện (autobiographical memory) — những sự thật mà một người biết về cuộc sống của chính mình. Mượn thuật ngữ một cách lỏng lẻo: agent không đang nhớ cuộc sống của chính nó, nó đang duy trì cuộc sống của người dùng thay thế họ.
Khi mọi người nói rằng agent nên "ghi nhớ người dùng", điều họ thường có ý là nội dung tự truyện được lưu giữ thay cho người dùng: họ sống ở đâu, họ đang làm việc gì, ai quan trọng với họ, họ đã yêu cầu và quyết định điều gì — những sự thật mà agent giữ về cuộc sống và sở thích của người dùng để hành động nhất quán trên các phiên. Hầu hết các thư viện bộ nhớ agent là các hệ thống bộ nhớ tự truyện với thêm một vài bước. Vấn đề cốt lõi của lĩnh vực này hẹp hơn nhiều so với "bộ nhớ" — và rõ ràng hơn khi bạn gọi tên nó.
Khi sự so sánh bị phá vỡ
Ba phần có các tương tự sinh học thô sơ. Trích xuất là tương tự của agent cho sự củng cố (consolidation) — sự nén chậm từ trải nghiệm có bối cảnh sang sự thật phi ngữ cảnh (ở người, trong giấc ngủ, trong nhiều giờ; ở agent, ở tốc độ hội thoại và ở quy mô lớn). Kho lưu trữ tương ứng với bộ nhớ dài hạn — mặc dù tương tự là yếu nhất trong ba cái, vì những gì thực sự được triển khai là một máy trạng thái không có tương đương sinh học hợp lý nào. Truy xuất tương ứng với cả việc ghi nhớ có gợi ý (với cùng một thiên lệch cắt cố định như top-k — khi một gợi ý kích hoạt một ký ức, tìm kiếm dừng lại) và giám sát nguồn, quá trình con người mong manh trong việc quyết định xem một sự thật được ghi nhớ có phải của mình, hiện tại, thực hay không.
Những sự so sánh này — cùng với các danh mục của Tulving từ phần mở đầu — rất hữu ích cho từ vựng. Chúng nguy hiểm khi được dùng làm hướng dẫn thiết kế.
Bộ nhớ sinh học có các thuộc tính mà các thư viện bộ nhớ agent thiếu, không thể có, hoặc không nên cố gắng có. Những thứ này không phải là chi tiết; chúng là các bộ phận chịu lực tạo nên sự hoạt động của bộ nhớ sinh học. Câu hỏi đáng đặt ra cho mỗi thuộc tính là nó thuộc vào trong ba danh mục nào.
Củng cố (Consolidation)
Ở người, giấc ngủ phát lại các trải nghiệm trong ngày và cắt bỏ những cái thừa — sự nén chậm từ sự kiện có bối cảnh sang kiến thức trừu tượng. Các phòng thí nghiệm agent đã bắt tung ra phiên bản tương đương: các lần chạy ngoại tuyến xem lại tài liệu đã lưu và viết lại nó, khử trùng lặp, giải quyết mâu thuẫn và làm nổi bật các mẫu trên các phiên. Dreams của Anthropic và sleep-time compute của Letta là hai ví dụ sản phẩm tính đến giữa năm 2026; cả hai đều chạy các lần chạy theo lịch trình trên bộ nhớ tích lũy và tạo ra các kho lưu trữ được tổ chức lại. Đây là một thuộc tính đáng để nhập khẩu. Các thư viện chạy trích xuất đồng bộ trên mỗi tin nhắn đang thực hiện một phiên bản suy thoái của sự củng cố dưới các ngân sách độ trễ trực tiếp; những cái chạy nó ngoại tuyến, đối với tài liệu tích lũy, đang thực hiện phiên bản khớp với sinh học. Việc nó có tạo ra đầu ra tốt hơn hay không vẫn là một câu hỏi thực nghiệm mở — nhưng lập luận cấu trúc thì rõ ràng hơn. Vắng mặt, nhưng có thể giải quyết.
Sự nổi bật về cảm xúc (Emotional Salience)
Ở người, hạnh nhân (amygdala) gắn cờ các trải nghiệm có tác động mạnh để mã hóa tốt hơn — nỗi sợ, ngạc nhiên, xấu hổ đều để lại dấu ấn sâu hơn nội dung trung tính. Không có gì trong một agent chỉ có văn bản có tín hiệu này. Không có cơ thể, không có hệ thống tự chủ, không có tương tự với nền tảng sinh lý tạo ra tác động. Đầu vào hoàn toàn là các token văn bản. Các nỗ lực thêm điều này thông qua chấm điểm quan trọng tồn tại — Generative Agents của Park et al. chấm điểm ký ức từ 1–10 về sự thấm thía — nhưng những thứ đó là đại diện do LLM đánh giá, không phải tác động: cùng một mô hình thiếu tác động được yêu cầu ước lượng nó. Đó là sự vắng mặt về mặt cấu trúc xuất phát từ việc chỉ vận hành trên văn bản. Các mô hình đa phương thức với neo trong môi trường cuối cùng có thể có một tương tự. Các agent chỉ có văn bản thì không thể.
Sự quên (Forgetting)
Bộ nhớ sinh học chủ động quên — sự suy giảm, nhiễu, cắt tỉa, tất cả chạy liên tục dưới sàn nhà. Một số thư viện bộ nhớ agent cố gắng bắt chước điều này bằng cách đánh giá theo mức độ gần đây, điểm quan trọng hoặc các công việc dọn dẹp theo lịch trình. Giả định là một agent nên quên theo cách một người làm, bởi vì đó là cách bộ nhớ hoạt động.
Điều này chủ yếu là sai lầm. Sự quên trong bộ nhớ sinh học là một ràng buộc, không phải một tính năng — não bộ quên vì nó không đủ khả năng lưu trữ mọi thứ, không phải vì quên là mục tiêu. Một hệ thống bộ nhớ agent không có ràng buộc như vậy. Nó có thể giữ mọi thứ với chi phí ổ đĩa. Và một hệ thống giữ mọi thứ cũng là một hệ thống có thể trả lời câu hỏi "chúng ta đã biết gì vào tháng Ba năm ngoái?" — điều này có thể kiểm toán, gỡ lỗi và thường là những gì người dùng thực sự cần. Một hệ thống quên một cách tích cực mất đi điều đó.
Vấn đề thực sự đằng sau sự quên sinh học — rằng việc truy xuất suy giảm khi kho lưu trữ phát triển — không biến mất chỉ vì ổ đĩa rẻ. Nhưng sự quên theo kiểu sinh học không phải là câu trả lời. Những gì một hệ thống bộ nhớ agent cần là để thông tin được giữ lại vẫn có thể tìm thấy được. Đó là vấn đề truy xuất (xếp hạng các sự thật hiện tại cao hơn các sự thật cũ kỹ, thu hẹp tìm kiếm theo các chủ đề liên quan) và vấn đề phân xử (đánh dấu các sự thật bị thay thế mà không xóa chúng). Các hệ thống củng cố như Dreams tấn công cùng một vấn đề từ đầu kia — tái tổ chức ngoại tuyến không phá hủy giữa các phiên, tạo ra một kho lưu trữ sạch hơn mà không mất đầu vào. Câu hỏi về việc có bất kỳ quy tắc quên có nguyên tắc nào hay không vẫn còn mở. Nhưng việc định khung "bộ nhớ sinh học quên, do đó bộ nhớ agent cũng nên" nhập khẩu ràng buộc như thể đó là bài học. Sự quên theo kiểu sinh học thuộc về danh mục thứ ba — không nên. Việc một số quy tắc quên khác có thuộc về đâu hay không là một câu hỏi riêng biệt.
Bốn loại bộ nhớ và ba bộ phận giải phẫu không phải là một công thức. Chúng là một bản đồ. Khi bạn đọc tài liệu của một thư viện, bạn có thể đặt các lựa chọn của nó lên bản đồ này — nó xử lý loại bộ nhớ nào, nó triển khai bộ phận nào so với bộ phận nào chỉ là giả vờ, và nơi nó lấy từ vựng mà không làm kỹ thuật. "Ultimate Guide to LLM Memory" của Sebastian Lund đáng đọc — nó cắt lãnh địa theo cách khác (theo những gì điền vào prompt tại thời điểm chạy) và hai quan điểm này bổ sung cho nhau.
Từ vựng ổn định hơn sản phẩm. Hãy học các bộ phận. Các sản phẩm sẽ tự đặt tên quanh chúng.
Bài viết liên quan

Phần mềm
Runtime ra mắt hạ tầng sandbox cho coding agents, giúp toàn bộ đội ngũ phát triển phần mềm an toàn
21 tháng 5, 2026

Phần mềm
Jira là Turing-Complete: Chứng minh khả năng tính toán của công cụ quản lý dự án
25 tháng 5, 2026
Phần mềm
Vivado 2026.1: AMD loại bỏ hỗ trợ Linux trên bản miễn phí gây tranh cãi
24 tháng 5, 2026
