Nếu bạn hỏi một nhà sáng lập tại sao AI agent của họ lại quên mất tên khách hàng ngay giữa cuộc hội thoại, câu trả lời thường là một cái nhún vai: “Bộ nhớ bị lỗi rồi”. Thực tế, không có bộ nhớ nào để mà lỗi cả. Các mô hình ngôn ngữ lớn (LLM) vốn dĩ không có trạng thái (stateless). Mỗi lần bạn gửi một yêu cầu, mô hình bắt đầu lại từ con số không. Những gì agent dường như “nhớ” được thực chất chỉ là văn bản được sao chép và dán ngược lại vào cửa sổ ngữ cảnh (context window) trước khi mô hình chạy. Đây là một hệ thống “copy-paste” được ngụy trang khéo léo dưới danh nghĩa khả năng truy hồi thông tin.
Cơ chế này dựa trên ba kỹ thuật bổ trợ: cửa sổ ngữ cảnh, cơ sở dữ liệu vector (vector database) và bộ tóm tắt (summarizer). Dù các mô hình như Claude 3.5 Sonnet hay GPT-4o quảng cáo cửa sổ ngữ cảnh lên tới hàng triệu token, hiệu suất thực tế thường giảm sút khi thông tin bị “vùi lấp” ở giữa đoạn hội thoại – hiện tượng mà các nhà nghiên cứu gọi là lost in the middle. Khi cửa sổ quá tải, AI bắt đầu đọc lướt thay vì đọc kỹ, dẫn đến việc bỏ lỡ các chi tiết quan trọng mà người dùng vừa cung cấp chỉ vài phút trước đó. Việc hiểu rõ bản chất này sẽ thay đổi hoàn toàn cách chúng ta xây dựng và vận hành các hệ thống AI.
Bản chất của sự ghi nhớ và những lỗ hổng trong kiến trúc hệ thống
Để vượt qua giới hạn của cửa sổ ngữ cảnh, các nhà phát triển sử dụng phương pháp truy xuất dữ liệu (retrieval). Agent chuyển đổi các cuộc hội thoại cũ thành các embedding – dấu vân tay số của ý nghĩa – và lưu chúng vào cơ sở dữ liệu vector. Khi có yêu cầu mới, hệ thống tìm kiếm các đoạn văn bản có độ tương đồng cao nhất để dán vào prompt. Tuy nhiên, đây chỉ là một phép tính xác suất, không phải truy vấn dữ liệu chính xác. Một tìm kiếm vector không hiểu rằng tên của bạn là quan trọng; nó chỉ biết đoạn văn bản đó có điểm tương đồng cao hơn các đoạn khác dựa trên toán học. Điều này giải thích tại sao AI có thể nhớ size giày của bạn từ ba tháng trước nhưng lại quên mất yêu cầu “tôi ghét xuất file PDF” vừa nói cách đây vài phút.
Bên cạnh đó, việc tóm tắt văn bản (summarization) để tiết kiệm không gian thường dẫn đến tình trạng mất mát dữ liệu có hệ thống. Khi một đoạn hội thoại bị nén từ 40 tin nhắn xuống còn một đoạn văn, những chi tiết tinh tế sẽ biến mất vĩnh viễn. Để khắc phục, các công cụ như Mem0 đã bắt đầu kết hợp thêm đồ thị tri thức (graph database) để lưu giữ mối quan hệ giữa các thực thể, trong khi Letta phân cấp bộ nhớ thành ba tầng: bộ nhớ lõi, bộ nhớ truy hồi và bộ nhớ lưu trữ lâu dài. Ngay cả OpenAI cũng phải thừa nhận sự hạn chế này bằng cách triển khai quy trình dreaming – một tiến trình chạy ngầm để đọc lại và tổng hợp các cuộc hội thoại cũ, thay vì chỉ lưu trữ chồng chất dữ liệu mới lên dữ liệu cũ một cách thụ động.
Sai lầm lớn nhất của các đội ngũ phát triển là coi lỗi bộ nhớ là một “bug” cần vá, thay vì nhìn nhận đó là một quyết định kiến trúc ngay từ đầu. Nếu không thiết kế lộ trình lưu trữ và sàng lọc dữ liệu một cách chủ động, bạn đang mặc định sử dụng một hệ thống “mất trí nhớ” dần đều theo thời gian. Giải pháp thực tế không nằm ở việc chờ đợi các mô hình có cửa sổ ngữ cảnh lớn hơn, mà ở việc kết hợp giữa tìm kiếm vector với truy vấn có cấu trúc, định kỳ làm sạch dữ liệu cũ và kiểm thử nghiêm ngặt khả năng truy hồi trong các phiên làm việc dài. Hãy nhớ rằng, bộ nhớ của AI agent hiện nay vẫn chỉ là những mảnh ghép rời rạc được kết nối lại để mô phỏng sự ghi nhớ; hiểu rõ giới hạn này là bước đầu tiên để xây dựng những sản phẩm AI thực sự có khả năng đồng hành cùng người dùng.

Liên hệ qua Zalo