Tính nổi bật không phải là Giá trị duy trì
Hầu hết mọi người đều xây dựng bộ nhớ cho agent sai cách.
Họ tập trung vào lưu trữ. Họ sử dụng vector stores hoặc các bộ tóm tắt thông minh. Họ nghĩ rằng nếu lưu lại mọi thứ, agent sẽ biết mọi thứ.
Họ đã lầm.
Khi bạn có hàng trăm phiên làm việc (sessions), bạn không thể đọc hết tất cả. Nếu agent bắt đầu một phiên mới từ con số không (cold start), nó sẽ lãng phí thời gian. Nếu nó bắt đầu với quá nhiều nhiễu (noise), nó sẽ mắc lỗi.
Vấn đề nằm ở sự lựa chọn. Hầu hết mọi người đều nhầm lẫn giữa tính nổi bật (salience) và giá trị duy trì (carry value).
- Tính nổi bật (salience) cho bạn biết điều gì đã gây chú ý mạnh mẽ trong phiên trước.
- Giá trị duy trì (carry value) cho bạn biết phiên tiếp theo cần gì để hoạt động.
Một cuộc tranh luận gay gắt về tên biến có tính nổi bật cao. Nhưng nếu cái tên đó không ảnh hưởng đến mã nguồn trong tương lai, nó có giá trị duy trì bằng không. Nếu bạn mang nó theo, bạn chỉ đang thêm nhiễu vào hệ thống.
Tôi vận hành một pipeline bộ nhớ dựa trên các quy tắc sau:
Ưu tiên tính nổi bật cơ học (mechanical salience) trước. Sử dụng một bộ chấm điểm xác định (deterministic scorer) để tìm các thời điểm quan trọng. Ưu tiên trọng số cho các phần chỉnh sửa cao hơn là các bình luận đơn thuần. Mọi điểm nhấn (highlight) phải liên kết ngược lại với bản ghi chép (transcript) gốc. Đừng để mô hình tự bịa ra các sự thật mà không có nguồn dẫn.
Tổng hợp là bước thứ hai. Chỉ sử dụng LLM để thêm một lớp ý nghĩa vào các điểm nhấn. Nếu các điểm nhấn của bạn kém, bản tóm tắt sẽ chỉ là những điều vô nghĩa nhưng đầy tự tin.
Sử dụng một bản tóm tắt tại thời điểm truy xuất (retrieval-time brief). Xây dựng một tệp như
INDEX.mdcho mỗi dự án. Agent sẽ đọc tệp này khi bắt đầu một phiên. Không mô hình nào được phép tự tạo ra bản tóm tắt này một cách tùy tiện. Nó phải là một tệp văn bản thuần túy mà bạn có thể mở và chỉnh sửa thủ công.
Để xây dựng bộ nhớ tốt hơn, bạn cần nhiều hơn là chỉ một danh sách các điều quan trọng. Bạn cần:
- Hai chỉ số: Một cho mức độ gây chú ý (salience) và một cho mức độ quan trọng về sau (carry value).
- Các lớp bộ nhớ (memory classes): Phân tách các quyết định đang thực hiện, các ràng buộc vận hành và các vòng lặp chưa hoàn thành (open loops).
- Ngày hết hạn: Mọi mảnh bộ nhớ đều phải có lý do để biến mất. Nếu không có thời hạn hết hạn, ngữ cảnh sẽ làm tắc nghẽn hệ thống của bạn.
- Trình kích hoạt (Triggers): Xác định chính xác khi nào một mảnh bộ nhớ nên xuất hiện.
Mục tiêu là giảm thiểu chi phí phục hồi (recovery cost).
Chi phí phục hồi là số lượng token hoặc số phút mà một agent cần để bắt kịp tiến độ nơi nó đã dừng lại. Nếu pipeline bộ nhớ của bạn chỉ là hình thức, chi phí phục hồi của bạn sẽ vẫn ở mức cao.
Đừng xây dựng kho lưu trữ lớn hơn nữa. Hãy bắt đầu xây dựng khả năng lựa chọn tốt hơn.
Source: https://dev.to/jugeni/salience-is-not-carry-value-notes-from-a-running-session-memory-pipeline-4dda
Optional learning community: https://t.me/GyaanSetuAi
