Conversation Memory: Cách AI nhớ cuộc hội thoại
Khám phá cách AI 'nhớ' cuộc hội thoại: từ Sliding Window đơn giản đến kiến trúc 3 tầng của Claude Code. Memory trong AI thực chất chỉ là illusion được engineer.
Định nghĩa
Conversation Memory là kỹ thuật tạo ra ảo giác rằng AI đang "nhớ" cuộc trò chuyện bằng cách đưa lịch sử hội thoại vào Context Window ở mỗi lượt gọi API. AI thực chất không lưu trữ gì cả — mọi thứ bạn thấy đều là kịch bản được lập trình cẩn thận.
Giải thích chi tiết
Sự thật về trí nhớ của AI
AI là hệ thống stateless. Mỗi khi bạn gửi tin nhắn, đó là một HTTP request độc lập. Server xử lý xong, trả về response, và... quên sạch. Không có database nào lưu "tâm trạng" của AI cả. Để AI trả lời có liên tục, ứng dụng (như ChatGPT) phải gửi kèm toàn bộ lịch sử chat vào trong prompt — đó chính là Conversation Memory.
Pattern 1: Sliding Window (Buffer Memory)
Cách đơn giản nhất: chỉ giữ lại N lượt trò chuyện gần nhất (ví dụ 10 turns). Khi chat dài hơn, lượt cũ nhất bị xóa. Giống như bộ nhớ RAM chỉ chứa được 10 cửa sổ — cái cũ bị đè khi mở cái mới.
Khi nào dùng: Chat ngắn, Q&A đơn giản, tương tác dưới 20 lượt. Dễ implement, tiết kiệm token.
Pattern 2: Conversation Summarization
Khi conversation quá dài, thay vì giữ nguyên văn bản "User: bla bla | AI: bla bla", ta dùng một model (hoặc cùng model) tóm tắt lại thành: "User đã yêu cầu viết code Python xử lý CSV, tôi đã đề xuất dùng pandas. User sau đó hỏi về performance..." rồi xóa bỏ conversation gốc.
Ưu điểm: Giảm token usage xuống constant, không tăng dài vô hạn. Nhược điểm: Mất chi tiết (nuance), có thể mất thông tin quan trọng nếu tóm tắt kém.
Pattern 3: Hybrid — Kiến trúc 3 tầng của Claude Code
Claude Code (công cụ coding agent của Anthropic) dùng cách tiếp cận lai: kết hợp Recent Context + Rolling Summary + Key Facts.
- Recent Context: 5-10 lượt trò chuyện gần nhất (giữ chi tiết tươi)
- Rolling Summary: Tóm tắt của phần còn lại của session (nén lịch sử xa)
- Key Facts: Trích xuất thông tin quan trọng (tên biến, yêu cầu business logic) lưu vào "bảng ghi chú" riêng
Kết quả: AI vừa nhớ chuyện vừa xảy ra (sửa file nào), vừa nắm được bối cảnh dự án (project dùng framework gì), mà không bị ngộp token.
Entity Extraction — Nhớ những gì quan trọng
Thay vì lưu cả câu "Tôi tên là Nguyễn Văn A, sinh năm 1990, thích màu xanh", ta trích xuất thành JSON: {"name": "Nguyễn Văn A", "birth_year": 1990, "color": "blue"}. Sau này chỉ cần inject vào system prompt: "User tên là Nguyễn Văn A, thích màu xanh".
Ví dụ thực tế
Cấu hình Sliding Window trong ứng dụng Chat
// Giữ chỉ 6 lượt gần nhất (3 cặp hỏi-đáp)
const MAX_HISTORY = 6;
function sendMessage(userInput) {
// Cắt bớt history nếu quá dài
if (conversationHistory.length > MAX_HISTORY) {
conversationHistory = conversationHistory.slice(-MAX_HISTORY);
}
const payload = {
messages: [
{role: "system", content: "Bạn là trợ lý ảo."},
...conversationHistory, // Inject memory
{role: "user", content: userInput}
]
};
// Gọi API...
}Khi chat vượt quá 6 lượt, phần đầu tiên bị mất. User sẽ thấy AI "quên" mình hỏi gì ở đầu buổi nói chuyện.
Trigger Summarization khi đạt ngưỡng
# Khi conversation đạt 20 messages, tóm tắt lại
if len(messages) >= 20:
summary = model.generate("Tóm tắt ngắn gọn cuộc trò chuyện: " + str(messages))
# Thay thế 20 messages cũ bằng 1 message summary
messages = [
{"role": "system", "content": f"Tóm tắt cuộc trò chuyện trước: {summary}"},
messages[-1] # Giữ lại message cuối cùng để giữ context gần nhất
]Cách này giúp chatbot chăm sóc khách hàng có thể trò chuyện 100 lượt mà không tốn quá nhiều token.
Claude Code Memory Architecture
Trong Claude Code, khi bạn làm việc 3 tiếng liên tục:
- Tầng 1: Nó nhớ rõ bạn vừa sửa file
app.pyở dòng 45 (Recent Context) - Tầng 2: Nó biết bạn đang làm feature "authentication" (Rolling Summary của 30 phút trước)
- Tầng 3: Nó nhớ project này dùng FastAPI không phải Flask (Key Facts từ đầu session)
Khi bạn hỏi "sửa tiếp cái đó đi", nó hiểu "cái đó" là file app.py và liên kết với feature authentication.
Ứng dụng
Sinh viên học lập trình: Khi dùng ChatGPT/Claude để debug code trong 2 tiếng, hiểu rằng nếu bạn mở tab mới, AI "quên" sạch project của bạn. Hãy paste lại context quan trọng hoặc dùng tool có memory như Claude Code.
Người làm nội dung (Content Writer): Dùng chatbot có Sliding Window bằng 10 để brainstorm. Nếu brainstorm quá dài, AI sẽ quên ý tưởng đầu tiên của bạn. Hãy tự tóm tắt lại bằng bullet points và paste lên đầu conversation mới.
Developer xây dựng chatbot: Đừng lưu infinite history. Implement BufferMemory với k=5 cho FAQ bot, dùng ConversationSummaryMemory cho counseling bot cần nhớ câu chuyện dài.
Doanh nghiệp triển khai AI Agent: Thiết kế kiến trúc 3 tầng như Claude Code cho các agent xử lý task phức tạp (hỗ trợ kỹ thuật, lập trình). Phân biệt rõ "nhớ ngắn hạn" (session) và "nhớ dài hạn" (database facts).
So sánh
| Đặc điểm | Sliding Window | Conversation Summary | Hybrid (Claude Code) |
|---|---|---|---|
| Cơ chế | Giữ N lượt gần nhất | Tóm tắt toàn bộ thành 1 đoạn | Gần + Tóm tắt + Key facts |
| Token usage | Tăng tuyến tính | Ổn định (thấp) | Kiểm soát được |
| Độ chính xác chi tiết | Cao (gần), Không (xa) | Trung bình (mất nuance) | Cao (giữ được facts quan trọng) |
| Độ phức tạp code | Dễ (array slice) | Trung bình (cần summarization) | Phức tạp (multi-layer) |
| Khi nào dùng | Chat ngắn dưới 20 lượt | Chat rất dài, ít cần chi tiết cũ | Agent phức tạp, coding, business |
Kết luận: Không có pattern tối ưu cho mọi trường hợp. Chat 5 phút thì Sliding Window đủ tốt. Lập trình 3 tiếng liên tục thì cần Hybrid. Hệ thống production nên kết hợp Summary cho phần cũ + Buffer cho phần mới.
Bài viết liên quan
Cùng cụm
Short-term vs Long-term Memory
Phân biệt rõ hai loại memory trong AI systems và cách triển khai cụ thể
Thiết kế kiến trúc Memory
Đi sâu vào cách lưu trữ, index và truy xuất memory hiệu quả
Multi-turn Strategy
Kỹ thuật quản lý hội thoại dài nhiều lượt không bị rối
Context Pruning & Summarization
Cắt tỉa và tóm tắt context thông minh khi vượt quá giới hạn
Đọc tiếp
Quản lý Context Window
Hiểu rõ cách quản lý context window trước khi thiết kế memory patterns
State & Session Management
Memory là bước đệm để hiểu state management trong AI agent systems phức tạp
Harness Engineering Fundamentals
Thiết kế hệ thống lớn hơn cho AI agents, vượt ra khỏi phạm vi conversation
Reranking & Filtering: Lọc và xếp hạng context trước khi đưa vào
Hướng dẫn tối ưu RAG pipeline bằng Reranking và Filtering. Học cách loại bỏ nhiễu và chọn đúng context cho AI, thay vì nhồi nhét tất cả vào prompt.
Short-term vs Long-term Memory trong AI
Phân biệt Short-term Memory (context window) và Long-term Memory (RAG, database) trong AI. Hiểu đúng cách AI thực sự nhớ để thiết kế trải nghiệm conversation...