TROISINH
Context EngineeringMemory & Conversation

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.

  1. Recent Context: 5-10 lượt trò chuyện gần nhất (giữ chi tiết tươi)
  2. Rolling Summary: Tóm tắt của phần còn lại của session (nén lịch sử xa)
  3. 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ểmSliding WindowConversation SummaryHybrid (Claude Code)
Cơ chếGiữ N lượt gần nhấtTóm tắt toàn bộ thành 1 đoạnGần + Tóm tắt + Key facts
Token usageTăng tuyến tínhỔn định (thấp)Kiểm soát được
Độ chính xác chi tiếtCao (gần), Không (xa)Trung bình (mất nuance)Cao (giữ được facts quan trọng)
Độ phức tạp codeDễ (array slice)Trung bình (cần summarization)Phức tạp (multi-layer)
Khi nào dùngChat ngắn dưới 20 lượtChat 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

On this page