Một agent quên hết mọi thứ sau mỗi cuộc trò chuyện giống như một đồng nghiệp bị mất trí nhớ. Bộ nhớ biến các agent từ công cụ chỉ dùng một lần thành trợ lý bền bỉ, xây dựng kiến thức theo thời gian.
🔄 Tóm tắt nhanh: Trong bài học trước, bạn đã tìm hiểu về các mô hình điều phối multi-agent. Một thách thức chính trong các hệ thống multi-agent là mất ngữ cảnh khi chuyển giao. Quản lý bộ nhớ giải quyết vấn đề này - đảm bảo các agent giữ lại thông tin chính xác vào đúng thời điểm.
Thách thức về bộ nhớ
Các mô hình LLM có một hạn chế cơ bản: Cửa sổ ngữ cảnh hữu hạn. Ngay cả với 128K hoặc 200K token, một agent xử lý tài liệu, kết quả công cụ và lịch sử cuộc trò chuyện có thể nhanh chóng lấp đầy cửa sổ đó. Khi đầy, thông tin cũ hơn sẽ bị cắt bớt - và cùng với đó, có thể là ngữ cảnh quan trọng.
Quản lý bộ nhớ là tập hợp các chiến lược để quyết định giữ lại cái gì, tóm tắt cái gì và lưu trữ cái gì bên ngoài.
Mô hình bộ nhớ 1: Bộ nhớ buffer
Mô hình đơn giản nhất - giữ lại toàn bộ lịch sử cuộc trò chuyện.
System: Bạn là trợ lý nghiên cứu.
User: Tìm cho tôi các bài báo về tác động của biến đổi khí hậu đối với nông nghiệp.
Agent: [tìm kiếm, trả về 5 bài báo]
User: Tập trung vào bài thứ ba - bài về năng suất trồng lúa mì.
Agent: [vẫn nắm được toàn bộ ngữ cảnh, biết bài báo nào là "thứ ba"]
Khi nào sử dụng: Các cuộc hội thoại ngắn, agent đơn giản, nhiệm vụ dưới 20 lượt.
Biến thể cửa sổ trượt
Chỉ giữ lại N tin nhắn cuối cùng:
Message 1-10: [bị loại bỏ]
Message 11-20: [trong ngữ cảnh]
User: "Bài báo đầu tiên bạn tìm thấy là gì?"
Agent: "Tôi không có thông tin đó trong ngữ cảnh hiện tại."
Sự đánh đổi: Tiết kiệm token nhưng mất ngữ cảnh ban đầu. Tốt nhất cho các nhiệm vụ mà thông tin gần đây quan trọng nhất.
Mẫu bộ nhớ 2: Bộ nhớ tóm tắt
Định kỳ nén cuộc hội thoại thành một bản tóm tắt:
Toàn bộ cuộc hội thoại (2000 token):
Người dùng hỏi về các bài báo về khí hậu → tìm thấy 5 bài → tập trung vào
bài báo về năng suất lúa mì của Chen và cộng sự → thảo luận về phương pháp luận
→ người dùng muốn tái tạo lại nghiên cứu
Tóm tắt (200 token):
"Người dùng đang nghiên cứu tác động của biến đổi khí hậu đến năng suất lúa mì.
Bài báo quan trọng: Chen và cộng sự (2024) về sự suy giảm năng suất lúa mì.
Người dùng muốn tái tạo lại phương pháp luận.
Ràng buộc chính: giới hạn ở dữ liệu vùng Trung Tây Hoa Kỳ."
Agent chuyển tiếp bản tóm tắt, giải phóng không gian cho nội dung mới.
Ưu điểm: Tiết kiệm token đáng kể, giữ lại thông tin quan trọng.
Nhược điểm: Bản tóm tắt mất đi chi tiết - agent biết "Chen và cộng sự" rất quan trọng nhưng có thể quên giá trị p chính xác đã được thảo luận.
✅ Kiểm tra nhanh: Một agent tóm tắt 50 tin nhắn thành một bản tóm tắt 3 câu. Người dùng sau đó hỏi "Số cụ thể mà tôi đã đề cập trong tin nhắn số 12 là số nào?". Agent không thể trả lời vì bản tóm tắt không bao gồm chi tiết đó. Làm thế nào để khắc phục điều này?
Câu trả lời: Phương pháp kết hợp - giữ bản tóm tắt để cung cấp ngữ cảnh chung VÀ lưu trữ toàn bộ cuộc hội thoại vào bộ nhớ ngoài (cơ sở dữ liệu hoặc kho lưu trữ vector). Khi người dùng hỏi về các chi tiết cụ thể, agent có thể tìm kiếm toàn bộ lịch sử. Bản tóm tắt cung cấp ngữ cảnh tổng quát; bộ nhớ ngoài cung cấp độ chính xác. Không bao giờ chỉ dựa vào bản tóm tắt cho các tác vụ yêu cầu khả năng nhớ lại cụ thể.
Mẫu bộ nhớ 3: Bộ nhớ lưu trữ vector
Lưu trữ các ký ức dưới dạng nhúng vector để truy xuất ngữ nghĩa.
Cách thức hoạt động
1. Lưu trữ: Chuyển đổi mỗi bộ nhớ thành một vector nhúng và lưu lại
Bộ nhớ: "Người dùng thích định dạng gạch đầu dòng cho báo cáo"
→ Nhúng: [0.23, -0.45, 0.67, ...] (768 chiều)
→ Được lưu trữ trong cơ sở dữ liệu vector
2. Truy xuất: Khi có tin nhắn mới đến, tìm các bộ nhớ có ngữ nghĩa tương tự
Tin nhắn mới: "Tạo bản tóm tắt kết quả quý 3"
→ Truy vấn nhúng: [0.21, -0.43, 0.65, ...]
→ Kết quả phù hợp nhất: "Người dùng thích định dạng gạch đầu dòng cho báo cáo"
→ Agent sử dụng định dạng gạch đầu dòng
Tại sao tìm kiếm vector hiệu quả với bộ nhớ?
Các vector nhúng nắm bắt ý nghĩa, không chỉ là từ ngữ. Điều này có nghĩa là:
Tìm "ngân sách tiếp thị" cho thấy cả "phân bổ 50.000 USD cho các chiến dịch"
Tìm "ghi chú cuộc họp tuần trước" cho thấy cả "tóm tắt cuộc họp giao ban thứ Ba"
Tìm "điều chúng ta đã thảo luận về giá cả" cho thấy cả "đề xuất tăng giá 15% cho quý 2"
Kiến trúc
Thông điệp người dùng → Mô hình nhúng → Vector truy vấn
↓
Tìm kiếm cơ sở dữ liệu vector
↓
Những ký ức tương tự Top-K
↓
Chèn vào ngữ cảnh agent
↓
Các tiến trình agent có bộ nhớ
Mẫu bộ nhớ 4: Bộ nhớ thực thể
Trích xuất và duy trì thông tin có cấu trúc về các thực thể:
Lượt hội thoại 1:
"Sarah đã đề cập rằng ngân sách là 50.000 USD"
→ Thực thể: Sarah | Ngân sách: 50.000 USD
Lượt hội thoại 5:
"Nhóm của Sarah đã tăng lên 12 người"
→ Thực thể: Sarah | Ngân sách: 50.000 USD, quy mô nhóm: 12
Lượt hội thoại 12:
"Ngân sách đã được tăng lên 75.000 USD"
→ Thực thể: Sarah | Ngân sách: 75.000 USD, quy mô nhóm: 12
Bộ nhớ thực thể duy trì một "hồ sơ" có cấu trúc cho mỗi thực thể, cập nhật khi có thông tin mới.
Khi nào sử dụng: CRM agent, quản lý dự án, bất kỳ lĩnh vực nào có các thực thể tích lũy thuộc tính theo thời gian.
✅ Kiểm tra nhanh: Hệ thống bộ nhớ thực thể lưu trữ "Khách hàng: Acme Corp, hợp đồng: 100.000 USD/năm, gia hạn: tháng 3 năm 2026". Hiện tại là tháng 2 năm 2026. Agent có nên chủ động đề cập đến việc gia hạn sắp tới không?
Câu trả lời: Có - đây là nơi trí nhớ biến đổi các agent từ phản ứng thụ động sang chủ động. Âgent nên kiểm tra bộ nhớ của thực thể ở đầu mỗi tương tác để tìm thông tin nhạy cảm về thời gian. "Tôi nhận thấy hợp đồng của Acme Corp sắp được gia hạn vào tháng Ba. Bạn có muốn tôi chuẩn bị các tài liệu gia hạn không?" Hành vi chủ động dựa trên trí nhớ này là điều khiến các agent mang lại cảm giác thực sự hữu ích.
Quản lý trạng thái
Ngoài việc ghi nhớ các cuộc trò chuyện trước đó, các agent cần theo dõi trạng thái hiện tại của một nhiệm vụ.
Nếu tác vụ bị gián đoạn (hết thời gian chờ, lỗi, người dùng rời đi), nó có thể tiếp tục từ trạng thái đã lưu thay vì bắt đầu lại từ đầu.
Lưu tiến độ
Đối với các tác vụ kéo dài, hãy lưu tiến độ tại các mốc quan trọng:
Bước 1: Thu thập dữ liệu ✓ [đã lưu điểm kiểm tra]
Bước 2: Phân tích dữ liệu ✓ [đã lưu điểm kiểm tra]
Bước 3: Tạo hình ảnh trực quan → [lỗi: hết thời gian chờ thư viện biểu đồ]
→ Tiếp tục từ điểm kiểm tra Bước 3 thay vì khởi động lại
Chọn chiến lược bộ nhớ phù hợp
Kịch bản
Mẫu được đề xuất
Nhiệm vụ ngắn (< 20 lượt)
Bộ nhớ Buffer
Những cuộc trò chuyện dài
Tóm tắt + kho lưu trữ vector
Profile/tùy chọn người dùng
Bộ nhớ thực thể (lưu trữ lâu dài)
Phân tích tài liệu
Kho lưu trữ vector có chức năng theo dõi nguồn
Tác vụ đa phiên
Lưu trạng thái + bộ nhớ dài hạn
Hỗ trợ khách hàng
Bộ nhớ thực thể + bộ nhớ tóm tắt
Bài tập thực hành
Thiết kế một chiến lược bộ nhớ cho agent trợ lý cá nhân hỗ trợ các công việc hàng ngày
Những gì được lưu trữ trong bộ nhớ ngắn hạn? Bộ nhớ dài hạn? Bộ nhớ thực thể?
Bạn sẽ xử lý như thế nào nếu người dùng nói "Hãy nhớ rằng tôi không bao giờ muốn được lên lịch trước 9 giờ sáng"?
Những điểm chính cần ghi nhớ
Bộ nhớ Buffer (toàn bộ lịch sử) là đơn giản nhất nhưng lấp đầy cửa sổ ngữ cảnh nhanh nhất
Bộ nhớ tóm tắt nén lịch sử, lưu các token nhưng mất những chi tiết cụ thể
Bộ nhớ lưu trữ vectơ cho phép truy xuất ngữ nghĩa - tìm kiếm thông tin quá khứ có liên quan theo ý nghĩa, không chỉ bằng từ khóa
Bộ nhớ thực thể duy trì các profile có cấu trúc được cập nhật khi có thông tin mới
Quản lý trạng thái với checkpoint cho phép các agent tiếp tục những tác vụ bị gián đoạn
Các hệ thống tốt nhất kết hợp nhiều mô hình: Tóm tắt cho ngữ cảnh rộng, vector để nhớ lại cụ thể, thực thể cho dữ liệu có cấu trúc
Câu 1:
Một agent sử dụng bộ nhớ lưu trữ vector. Khi người dùng hỏi "Chúng ta đã quyết định gì về ngân sách tiếp thị?", agent sẽ truy xuất 5 bộ nhớ có ý nghĩa tương tự. Nhưng quyết định liên quan được diễn đạt là "Chúng ta sẽ phân bổ 50.000 USD cho các chiến dịch quý 2" - câu này không chứa từ "ngân sách". Liệu tìm kiếm vector có tìm thấy nó không?
GIẢI THÍCH:
Đây chính xác là lý do tại sao tìm kiếm vector vượt trội hơn tìm kiếm từ khóa trong việc truy xuất bộ nhớ. Các mô hình nhúng chuyển đổi văn bản thành những vector đa chiều, trong đó sự tương đồng về ngữ nghĩa = sự gần gũi của vector. "Ngân sách tiếp thị" và "50.000 USD cho các chiến dịch quý 2" đều nói về cùng một chủ đề - chi tiêu tiếp thị - vì vậy những vector của chúng sẽ gần nhau trong không gian nhúng, ngay cả khi không có sự trùng lặp từ nào. Quá trình truy xuất tìm thấy bộ nhớ liên quan dựa trên ý nghĩa, không phải từ ngữ chính xác.
Câu 2:
Bạn đang xây dựng một agent hỗ trợ khách hàng. Agent này cần ghi nhớ rằng khách hàng Jane thích giao tiếp qua email (thông tin đã biết cách đây 3 tuần) và cô ấy có một yêu cầu hỗ trợ đang mở về vấn đề thanh toán (cách đây 2 ngày). Loại bộ nhớ nào sẽ xử lý từng trường hợp?
GIẢI THÍCH:
Các thông tin khác nhau có vòng đời khác nhau. Tùy chọn email của Jane là ổn định - nó hiếm khi thay đổi và áp dụng cho tất cả các tương tác. Hãy lưu trữ nó trong bộ nhớ dài hạn (cơ sở dữ liệu profile người dùng). Yêu cầu thanh toán đang mở của cô ấy là tạm thời - nó sẽ được giải quyết và trở nên không còn liên quan. Hãy lưu trữ nó trong bộ nhớ làm việc hoặc truy xuất nó từ hệ thống khi cần. Việc trộn lẫn các vòng đời trong cùng một bộ nhớ sẽ gây ra dữ liệu lỗi thời (các yêu cầu cũ được đánh dấu là 'đang mở') và sự phình to (mọi tùy chọn đều lấp đầy cửa sổ ngữ cảnh).
Câu 3:
Một agent có cửa sổ ngữ cảnh 128.000 token. Sau 50 lần gọi công cụ với kết quả chi tiết, số token còn lại là 120.000. Người dùng đặt câu hỏi về một điều gì đó từ lần gọi công cụ thứ 3. Rủi ro là gì?
GIẢI THÍCH:
Nghiên cứu cho thấy các mô hình LLM có hiệu ứng 'biến mất ở giữa chừng': Chúng chú ý mạnh nhất đến đầu và cuối cửa sổ ngữ cảnh, với sự chú ý giảm dần đến phần giữa. Ở mức 120.000 token, thông tin từ lệnh gọi công cụ #3 (đầu cuộc hội thoại) có thể bị chôn vùi ở giữa ngữ cảnh. Agent có thể bỏ sót, nhớ sai hoặc ảo tưởng về thông tin đó. Giải pháp: Tóm tắt ngữ cảnh trước đó, sử dụng truy xuất vector cho các tìm kiếm cụ thể hoặc triển khai bộ nhớ cửa sổ trượt.
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây: