Bộ nhớ agent AI là thứ cho phép một agent mang một điều gì đó từ bước này, hay phiên này, sang bước kế tiếp. Một mô hình ngôn ngữ đứng riêng không nhớ gì giữa các lần gọi. Bất cứ điều gì nó có vẻ nhớ đều do mã của bạn đặt lại vào prompt. Cách bạn lưu và truy xuất chất liệu đó quyết định agent có thể nhớ lại điều gì, nhanh đến đâu và với chi phí bao nhiêu cho mỗi lượt.
Tóm lại. Agent cần bốn loại bộ nhớ: một cửa sổ hội thoại ngắn, các dữ kiện dài hạn được tìm theo ý nghĩa, một bản nháp cho tác vụ đang làm và một nhật ký về những gì đã xảy ra. Mỗi loại có hình dạng, vòng đời và cách tra cứu khác nhau, nên một bảng bộ nhớ duy nhất không phù hợp với loại nào trong số đó. HotKV lưu cả bốn trong một engine in-memory với các lệnh
AMEM.*. Chúng tôi đã đo caching và tìm kiếm vector của HotKV, chưa đo bộ nhớ agent, nên bài viết này giải thích thiết kế và không tuyên bố mức tăng tốc nào.
Vì sao cửa sổ ngữ cảnh không phải là bộ nhớ
Cửa sổ ngữ cảnh là đoạn văn bản bạn gửi kèm mỗi yêu cầu. Nó có giới hạn kích thước, bạn trả token đầu vào cho mọi thứ trong đó ở mỗi lượt, và nó biến mất khi phiên kết thúc. Nó cũng không thể tìm kiếm. Nếu một agent cần một dữ kiện từ ba tuần trước, dán cả lịch sử vào không phải là câu trả lời.
Bộ nhớ là tầng quyết định điều gì sẽ đi vào cửa sổ tiếp theo. Nó giữ các lượt gần đây và tìm ra vài dữ kiện cũ hơn có ý nghĩa. Nó giữ trạng thái của tác vụ hiện tại và ghi lại những gì agent đã làm. Các nhà nghiên cứu mô tả agent theo những thuật ngữ tương tự. Khung CoALA của Sumers, Yao, Narasimhan và Griffiths tách bộ nhớ làm việc khỏi bộ nhớ dài hạn gồm tình tiết, ngữ nghĩa và thủ tục.
Bốn loại bộ nhớ agent AI
Bốn kho nhớ của HotKV bao phủ phần lớn cùng một phạm vi, được điều chỉnh theo những gì một ứng dụng phải xây dựng. Bộ nhớ thủ tục, tức là bí quyết nằm trong mã và prompt của agent, thường nằm trong kho mã hoặc một sổ đăng ký prompt của bạn và không phải là một kho riêng.
Bộ nhớ hội thoại
Đây là bản ghi ngắn hạn của một phiên. Tin nhắn mang một vai trò (system, user, assistant hoặc tool). Chúng nằm trong một cửa sổ trượt có giới hạn, nên các lượt cũ nhất rơi ra ngoài khi chạm giới hạn. Nó trả lời một câu hỏi. Gần đây đã nói gì? Trong HotKV đó là AMEM.CONV.CREATE, AMEM.CONV.APPEND và AMEM.CONV.WINDOW.
Bộ nhớ ngữ nghĩa
Bộ nhớ ngữ nghĩa là tri thức dài hạn được lưu dưới dạng các dữ kiện kèm một vector embedding. Agent gợi nhớ chúng theo ý nghĩa, không theo khóa. Nó dựa trên một chỉ mục vector HNSW, cùng loại cung cấp sức mạnh cho tìm kiếm vector. AMEM.SEM.STORE lưu một dữ kiện và AMEM.SEM.RECALL trả về các kết quả khớp hàng đầu kèm điểm tương đồng. Đây là nơi dành cho tài liệu, sở thích người dùng và các chỉnh sửa đã học.
Bộ nhớ làm việc
Bộ nhớ làm việc là bản nháp cho một tác vụ đang làm, một tập phẳng các khóa và giá trị gắn với một phiên. Nó giữ bước hiện tại, phiếu đang xử lý hoặc một kết quả dở dang. Nó nên biến mất khi tác vụ kết thúc. AMEM.WORK.SET nhận một thời gian sống chính vì lý do đó.
Bộ nhớ tình tiết
Bộ nhớ tình tiết là một nhật ký chỉ ghi nối thêm của các sự kiện có dấu thời gian, như một hành động đã thực hiện, một quan sát đã ghi nhận hay một quyết định đã đạt được. Nó cho phép một agent, hoặc người rà soát nó, hỏi điều gì đã xảy ra và khi nào. AMEM.EPIS.LOG ghi một sự kiện và AMEM.EPIS.QUERY đọc lại chúng theo loại và khoảng thời gian.
Bộ nhớ agent AI trong thực tế
Hai điều quan trọng trong thực tế. Cách bạn ghi vào bộ nhớ, và những gì bạn đọc lại ở mỗi lượt.
Lưu bộ nhớ bằng lệnh
Sau đây là một agent hỗ trợ xử lý một cuộc hội thoại. Văn bản chính sách hư cấu và các vector ba số chỉ để minh họa. Một mô hình embedding thật tạo ra vector gồm 768 hoặc 1,536 số, và bạn tạo namespace với số chiều đó.
AMEM.CONV.CREATE session-42 WINDOW 50 TTL 86400
AMEM.CONV.APPEND session-42 user "My invoice shows the wrong VAT number."
AMEM.WORK.SET session-42 ticket "INV-1932" TTL 3600
AMEM.EPIS.LOG agent-support action "Looked up invoice INV-1932"
AMEM.SEM.CREATE support-kb 3
AMEM.SEM.STORE support-kb vat-policy "VAT details can be corrected within 30 days." 0.1 0.2 0.3
AMEM.SEM.RECALL support-kb 3 0.1 0.2 0.3
AMEM.CONV.WINDOW session-42 10
Ở mỗi lượt, agent đọc cửa sổ gần đây và gợi nhớ vài dữ kiện khớp với câu hỏi. Nó kiểm tra ghi chú làm việc và dựng prompt từ những mảnh đó. Sau khi hành động, nó ghi nhật ký sự kiện. Không điều gì trong vòng lặp đó cần toàn bộ lịch sử.
Đọc bộ nhớ ở mỗi lượt
Lưu bộ nhớ là nửa dễ. Kỹ năng nằm ở việc quyết định đọc lại gì, vì mọi thứ bạn đọc đều đi vào prompt và tốn token đầu vào. Một vòng lặp hợp lý đọc một nhúm thứ theo thứ tự cố định. Các lượt gần đây đi trước, rồi vài dữ kiện khớp với câu hỏi, rồi trạng thái của tác vụ. Sau đây là nó với client Python chính thức, kèm hàm embedding và mẫu prompt của riêng bạn.
import hotkv
r = hotkv.from_url("hotkv://localhost:6379")
MIN_SIMILARITY = 0.8 # tune on your own data
def start_session(session: str) -> None:
r.amem_conv_create(session, window=50, ttl=86400) # create once, before the first append
def build_context(session: str, question: str) -> str:
r.amem_conv_append(session, "user", question)
turns = r.amem_conv_window(session, 10)
facts = r.amem_sem_recall("support-kb", 3, embed(question))
facts = [f for f in facts if f["similarity"] >= MIN_SIMILARITY]
ticket = r.amem_work_get(session, "ticket")
return render(turns, facts, ticket) # your prompt template
def finish_turn(session: str, agent: str, reply: str) -> None:
r.amem_conv_append(session, "assistant", reply)
r.amem_epis_log(agent, "action", "Answered a billing question")
r.amem_work_set(session, "last_step", "answered")
Ngưỡng cắt theo độ tương đồng do bạn tinh chỉnh. Một giá trị phù hợp với một mô hình embedding và một tập dữ kiện sẽ sai với tập khác, nên hãy kiểm tra khả năng gợi nhớ trên những câu hỏi mà bạn biết đáp án. Loại bỏ các kết quả khớp yếu quan trọng hơn vẻ ngoài của nó, vì một dữ kiện kém trong prompt còn tệ hơn không có dữ kiện nào.
Phần ổn định của prompt này, như các chỉ dẫn hệ thống, cũng chính là phần mà prompt caching phía nhà cung cấp làm cho rẻ hơn. Hãy đặt bộ nhớ bạn đọc ở cuối, sau phần văn bản ổn định, để việc thay đổi nó không làm mất hiệu lực của cache đó.
Bản tóm tắt thay cho cửa sổ ngày càng dài
Một cửa sổ bỏ hoàn toàn các lượt cũ. Điều đó ổn với trò chuyện phiếm và tệ với một tác vụ dài, nơi lượt 3 có thể vẫn quan trọng ở lượt 300. Bản tóm tắt cuộn là câu trả lời thường dùng. Sau mỗi đoạn hội thoại, agent, hoặc một mô hình rẻ hơn, ghi lại những gì đã học được, và bản tóm tắt thay thế các lượt cũ trong prompt.
HotKV giữ một bản tóm tắt cho mỗi agent với AMEM.SUMMARY.SET, AMEM.SUMMARY.APPEND và AMEM.SUMMARY.GET. SET thay thế văn bản còn APPEND thêm một dòng. Mỗi lần cập nhật tăng một số phiên bản, nên một thành phần khác có thể biết rẻ rằng bản tóm tắt đã thay đổi và khi nào.
Một bản tóm tắt làm mất thông tin, và tóm tắt một bản tóm tắt thì mỗi lần mất thêm. Hãy giữ các giá trị chính xác như định danh, số tiền và ngày tháng ngoài văn xuôi, trong bộ nhớ làm việc hoặc các dữ kiện ngữ nghĩa, nơi chúng tồn tại. Dùng bản tóm tắt cho hình dạng của công việc, như sở thích, quyết định đã đưa ra và những gì còn lại.
Quy tắc thiết kế và lưu giữ
Bộ nhớ lớn lên không giới hạn nếu bạn không chặn nó, nên hãy đặt giới hạn trước lần ghi đầu tiên.
Những quy tắc giữ cho bộ nhớ hữu ích
- Giới hạn mọi thứ. Đặt một
WINDOWcho hội thoại và mộtTTLcho phiên và giá trị làm việc. Với hội thoại, giá trị làm việc và dữ kiện, HotKV ghi lại thời điểm hết hạn cho tệp chỉ ghi nối thêm và các replica, nên một mục đã hết hạn không quay lại khi tệp được phát lại sau khi khởi động lại. - Lưu dữ kiện, không phải bản ghi hội thoại. Hãy tóm tắt trước khi ghi vào bộ nhớ ngữ nghĩa. Một dữ kiện dễ gợi nhớ hơn một trang đối thoại.
- Tách các agent ra. Dùng định danh hoặc namespace riêng cho mỗi agent và mỗi tenant, để bộ nhớ của một khách hàng không bao giờ bị gợi nhớ cho khách hàng khác.
- Gợi nhớ ít, không nhiều. Lấy ba đến năm kết quả khớp hàng đầu và bỏ những kết quả yếu theo điểm tương đồng trước khi chúng vào prompt.
- Giữ bí mật ra ngoài. Bộ nhớ được đọc lại vào prompt, nên đừng bao giờ lưu mật khẩu, khóa hay dữ liệu bạn sẽ không cho mô hình xem.
Giữ mỗi loại bao lâu
Các vòng đời này là đề xuất của chúng tôi, không phải mặc định. Hãy chọn vòng đời của bạn dựa trên tốc độ thay đổi của các dữ kiện nền và những gì bạn được phép giữ.
| Loại bộ nhớ | Vòng đời đề xuất | Điều khiển trong HotKV |
|---|---|---|
| Hội thoại | Phiên, hoặc một khoảng cố định như một ngày | WINDOW và TTL trên AMEM.CONV.CREATE |
| Làm việc | Tác vụ, sau đó xóa | TTL trên AMEM.WORK.SET, và AMEM.WORK.CLEAR |
| Ngữ nghĩa | Cho đến khi dữ kiện không còn đúng | TTL trên AMEM.SEM.STORE, và AMEM.SEM.FORGET |
| Tình tiết | Lâu bằng nhu cầu kiểm toán hoặc hỗ trợ của bạn | AMEM.EPIS.QUERY theo khoảng thời gian, và AMEM.EPIS.CLEAR (sự kiện không có thời gian sống) |
Lưu giữ cũng là một vấn đề về quyền riêng tư. Nếu bộ nhớ chứa bất cứ điều gì về một con người, vòng đời bạn chọn là một phần của điều bạn hứa với họ, nên hãy ghi nó ra.
Bộ nhớ agent hỏng như thế nào
Hầu hết lỗi bộ nhớ là lỗi chậm. Agent hoạt động tốt trong một tuần rồi bắt đầu tệ đi. Đây là những kiểu hỏng cần thiết kế để phòng tránh.
Các kiểu hỏng phổ biến
- Dữ kiện lỗi thời. Một dữ kiện đúng vào tháng Ba được gợi nhớ vào tháng Mười. Hãy cho dữ kiện một thời gian sống, hoặc lưu chúng dưới một khóa cho mỗi thực thể để giá trị mới ghi đè giá trị cũ.
- Mâu thuẫn. Hai dữ kiện đã lưu mâu thuẫn nhau, và agent chọn một cách ngẫu nhiên. Hãy ưu tiên một dữ kiện cho mỗi khóa hơn là thêm ghi chú mới bên cạnh ghi chú cũ.
- Gợi nhớ quá mức. Quá nhiều kết quả khớp làm đầy prompt bằng văn bản liên quan lỏng lẻo. Gợi nhớ ít, và bỏ các kết quả khớp yếu.
- Rò rỉ giữa người dùng. Bộ nhớ của một khách hàng bị gợi nhớ cho khách hàng khác. Dùng định danh hoặc namespace riêng cho mọi tenant, và kiểm tra trong mã trước mỗi lần đọc.
- Tăng trưởng không giới hạn. Không gì bao giờ hết hạn, nên các lần tra cứu chậm dần và chi phí tăng lặng lẽ. Mọi loại đều cần một vòng đời. Nơi HotKV không có thời gian sống, như với nhật ký tình tiết, hãy tự lên lịch xóa hoặc xuất dữ liệu.
- Trôi bản tóm tắt. Một bản tóm tắt của bản tóm tắt dần dần không còn khớp với những gì đã xảy ra. Hãy giữ nhật ký sự kiện làm nguồn sự thật và tạo lại các bản tóm tắt từ đó.
Hãy coi văn bản đã lưu là không đáng tin
Điểm cuối cùng đáng được chú ý hơn. Bất cứ điều gì agent ghi vào bộ nhớ đều có thể được đọc vào một prompt sau này. Điều đó gồm cả văn bản đến từ một trang web, một email hay một người dùng. Đó là dạng gián tiếp của prompt injection mà OWASP liệt kê là LLM01. Hãy lưu nguồn cùng mỗi dữ kiện. Tin ít hơn vào bộ nhớ được ghi từ nội dung bên ngoài, và đừng bao giờ để một ghi chú được gợi nhớ lấn át system prompt của bạn.
Những gì chúng tôi đã và chưa đo
Các benchmark đã công bố của HotKV bao gồm thông lượng lệnh, tìm kiếm vector và khoản tiết kiệm token của cache phản hồi. Bộ nhớ agent chưa có benchmark riêng. Chúng tôi không tuyên bố gì về độ trễ của nó hay về mức nó cải thiện chất lượng agent. Điều chúng tôi có thể nói thuộc về kiến trúc. Bốn kho nhớ chạy trong cùng tiến trình với cache và chỉ mục vector. Một lần tra cứu bộ nhớ là một lần gọi tới một hệ thống bạn đã vận hành.
Benchmark tiết kiệm token và phần so sánh prompt caching và semantic caching cho thấy phía đã đo. Trường hợp sử dụng bộ nhớ agent cho thấy các lệnh trong một kịch bản đầy đủ.
Dùng bộ nhớ agent từ Claude Code hoặc Cursor
Một trợ lý hỗ trợ Model Context Protocol có thể dùng một phần bộ nhớ này mà không cần mã tùy chỉnh. Máy chủ mã nguồn mở hotkv-mcp cung cấp bộ nhớ hội thoại, ghi chú làm việc, nhật ký sự kiện và bản tóm tắt cuộn dưới dạng công cụ. Nó có chế độ chỉ đọc và một namespace giới hạn agent. Nó không cung cấp bộ nhớ ngữ nghĩa, và các công cụ của nó không thể đặt cửa sổ hay thời gian sống, nên hãy dùng thư viện client cho những việc đó. Bài viết tiếp theo, máy chủ MCP cho bộ nhớ agent, cho thấy cách kết nối nó và các biện pháp bảo vệ của nó bao phủ những gì.
Câu hỏi thường gặp
Bộ nhớ agent AI là gì?
Bộ nhớ agent AI là tầng lưu trữ và truy xuất cho phép một agent giữ thông tin qua các bước và các phiên. Nó thường kết hợp một cửa sổ hội thoại gần đây, các dữ kiện dài hạn được tìm theo ý nghĩa, một bản nháp cho tác vụ hiện tại và một nhật ký sự kiện.
Khác biệt giữa bộ nhớ agent ngắn hạn và dài hạn là gì?
Bộ nhớ ngắn hạn giữ những gì đang diễn ra, như các lượt gần đây và trạng thái tác vụ, và có giới hạn và tạm thời. Bộ nhớ dài hạn giữ tri thức nên tồn tại lâu hơn một phiên, như dữ kiện, sở thích và các sự kiện đã qua, và được tìm kiếm khi cần.
Bản tóm tắt cuộn trong bộ nhớ agent là gì?
Bản tóm tắt cuộn là một mô tả ngắn, liên tục về những gì agent đã học hoặc quyết định cho đến nay, được cập nhật khi công việc tiếp tục. Nó thay thế các lượt cũ trong prompt để prompt không tiếp tục phình ra. HotKV lưu một bản cho mỗi agent và tăng số phiên bản sau mỗi lần cập nhật.
Tôi có cần cơ sở dữ liệu vector cho bộ nhớ agent không?
Chỉ cho bộ nhớ ngữ nghĩa, nơi dữ kiện được tìm theo ý nghĩa. Cửa sổ hội thoại, trạng thái làm việc và nhật ký sự kiện không cần vector. HotKV giữ cả bốn trong một engine, nên chỉ mục vector và các kho khác không phải là những hệ thống riêng.
Nên giữ bộ nhớ agent bao lâu?
Tùy loại. Bộ nhớ làm việc nên hết hạn khi tác vụ kết thúc, hội thoại sau phiên hoặc một khoảng nhất định, và nhật ký tình tiết lâu bằng nhu cầu kiểm toán của bạn. Dữ kiện trong bộ nhớ ngữ nghĩa nên được rà soát và xóa khi chúng không còn đúng.
Bộ nhớ agent có thể bị tấn công không?
Có. Văn bản được ghi vào bộ nhớ sau đó được đọc vào prompt, nên một ghi chú bị đầu độc có thể điều khiển agent. Hãy ghi lại nguồn của mỗi dữ kiện, tin ít hơn vào nội dung bên ngoài và giữ bộ nhớ được gợi nhớ ở dưới system prompt của bạn về thẩm quyền.
HotKV có lưu bộ nhớ agent trong RAM không?
HotKV là một engine in-memory, nên các lần đọc được phục vụ từ bộ nhớ. Theo tài liệu sản phẩm, các lần ghi vào bốn kho được ghi lại cho tệp chỉ ghi nối thêm và cho các replica, với thời điểm hết hạn được mang theo.



Tiếp tục cuộc trò chuyện
Bình luận
Có câu hỏi về phương pháp? Kết quả khác trên phần cứng của bạn? Hãy chia sẻ những gì bạn tìm thấy. Bình luận được duyệt trước khi hiển thị.