Điều quan trọng về tất cả những gì bạn đã học trong Bài 4 — tất cả cấu trúc XML tuyệt vời đó, những prompt hệ thống được thiết kế cẩn thận, những ví dụ ngắn gọn hoàn hảo đó? Chúng biến mất ngay khi bạn đóng cửa sổ trò chuyện.
🔄 Tóm tắt nhanh: Bài học trước, bạn đã học cách cấu trúc ngữ cảnh trong một phiên duy nhất bằng cách sử dụng thẻ XML, prompt hệ thống và các ví dụ ngắn gọn. Điều đó rất mạnh mẽ — nhưng nó chỉ hoạt động khi cuộc trò chuyện đang diễn ra. Hôm nay, chúng ta sẽ giải quyết vấn đề gì xảy ra khi bạn cần AI ghi nhớ mọi thứ giữa các phiên.
Vấn đề về bộ nhớ
Mọi cuộc trò chuyện với AI đều bắt đầu từ con số không. Mở một cuộc trò chuyện mới với Claude, ChatGPT hoặc Gemini, và nó không hề biết bạn tồn tại. Nó không biết bạn thích Python hơn JavaScript. Nó không biết bạn đang làm việc cho một công ty khởi nghiệp về chăm sóc sức khỏe. Nó không biết bạn đã có một bước đột phá ngày hôm qua mà nên được sử dụng cho công việc hôm nay.
Đây là vấn đề về bộ nhớ. Và đó không phải là lỗi — đó là một ràng buộc kiến trúc cơ bản.
Hãy nhớ phép ẩn dụ của Karpathy từ Bài 1? Cửa sổ ngữ cảnh chính là RAM. Và giống như RAM, nó sẽ được xóa khi phiên làm việc kết thúc. Trí tuệ nhân tạo của bạn không có ổ cứng. Ít nhất là không phải theo mặc định.
Vậy làm thế nào để cung cấp cho nó một cái?
Phiên làm việc và Bộ nhớ: Hai khái niệm khác nhau
Hãy làm rõ thuật ngữ, vì mọi người thường xuyên nhầm lẫn giữa hai khái niệm này.
Ngữ cảnh phiên làm việc là tất cả mọi thứ trong cuộc trò chuyện hiện tại - prompt hệ thống, các tin nhắn qua lại, bất kỳ tài liệu nào bạn đã dán vào. Nó chỉ tồn tại khi cuộc trò chuyện đang mở. Khi bạn bắt đầu một cuộc trò chuyện mới, nó sẽ biến mất.
Bộ nhớ dài hạn là thông tin tồn tại xuyên suốt các phiên làm việc. Nó yêu cầu một hệ thống bên ngoài — một file, một cơ sở dữ liệu, một cấu hình — được load vào các phiên làm việc mới.
Đây là một cách đơn giản để hiểu về nó:
Loại
Tuổi thọ
Kích thước
Ví dụ
Ngữ cảnh phiên
Một cuộc trò chuyện
Bị giới hạn bởi cửa sổ ngữ cảnh
"Chúng tôi đã thảo luận 3 phương án giải quyết lỗi đăng nhập"
Bộ nhớ dài hạn
Không xác định
Bị giới hạn bởi dung lượng lưu trữ
"Người dùng ưa thích TypeScript, làm việc tại Acme Corp, chú trọng đến khả năng truy cập"
Toàn bộ thách thức của bộ nhớ AI xoay quanh một câu hỏi: Làm thế nào để đưa bộ nhớ dài hạn phù hợp vào ngữ cảnh phiên hiện tại?
✅ Kiểm tra nhanh: Nếu bạn nói với Claude điều gì đó quan trọng trong một cuộc trò chuyện, liệu nó có nhớ điều đó trong một cuộc trò chuyện mới vào ngày mai không?
Câu trả lời: Không. Nếu không có hệ thống bộ nhớ bên ngoài, mỗi phiên mới sẽ bắt đầu lại từ đầu. Cửa sổ ngữ cảnh chỉ tồn tại trong suốt cuộc trò chuyện đang diễn ra. Bạn cần phải chuyển tiếp thông tin một cách rõ ràng thông qua các file, cấu hình hoặc hệ thống RAG.
RAG: Người bạn tốt nhất của chuyên gia tạo ngữ cảnh
RAG là viết tắt của Retrieval-Augmented Generation. Hãy bỏ qua cái tên hoa mỹ — đây là những gì nó thực sự làm:
Bạn có một đống tài liệu (cơ sở kiến thức, các cuộc trò chuyện trước đây, ghi chú, bất cứ thứ gì)
Khi bạn đặt câu hỏi, hệ thống sẽ tìm kiếm trong đống tài liệu đó các đoạn thông tin liên quan
Những đoạn thông tin đó được đưa vào cửa sổ ngữ cảnh
AI tạo ra câu trả lời bằng cách sử dụng cả câu hỏi của bạn và ngữ cảnh đã được truy xuất
Chỉ vậy thôi! RAG không làm cho AI thông minh hơn. Nó không huấn luyện lại mô hình. Đây hoàn toàn là kỹ thuật xử lý ngữ cảnh — bạn chỉ đang tự động hóa kỹ thuật "chọn" từ Bài học 3. Thay vì bạn tự tay chọn thông tin cần dán, hệ thống tìm kiếm sẽ làm điều đó cho bạn.
Cách thức hoạt động của tìm kiếm
Hầu hết các hệ thống RAG sử dụng tìm kiếm vector (còn gọi là tìm kiếm ngữ nghĩa). Đây là phiên bản không chuyên ngành:
Mỗi đoạn văn bản được chuyển đổi thành một danh sách các số (một "vector") thể hiện ý nghĩa của nó.
Câu hỏi của bạn cũng được chuyển đổi thành một vector.
Hệ thống tìm các đoạn văn bản có vector tương tự nhất với vector của câu hỏi của bạn.
"Tương tự" ở đây có nghĩa là tương tự về mặt ngữ nghĩa — "Làm thế nào để khắc phục lỗi này?" sẽ khớp với một tài liệu về "các chiến lược gỡ lỗi" mặc dù chúng chỉ có một vài từ chung.
Điều này khác với tìm kiếm từ khóa. Nếu tìm kiếm "sửa lỗi" bằng từ khóa, bạn sẽ bỏ sót một tài liệu có tiêu đề "Khắc phục sự cố thường gặp". Tìm kiếm vector sẽ tìm thấy tài liệu đó vì ý nghĩa trùng lặp.
Một ví dụ cụ thể
Giả sử bạn đang xây dựng một bot hỗ trợ khách hàng cho một sản phẩm SaaS. Bạn có:
500 bài viết trợ giúp
200 cuộc hội thoại hỗ trợ trước đây
50 trang tài liệu sản phẩm
Nếu không có RAG, bạn sẽ phải tự tay dán các tài liệu liên quan vào từng cuộc hội thoại. Với RAG:
Khách hàng hỏi: "Làm thế nào để xuất dữ liệu của tôi sang CSV?"
Hệ thống tìm kiếm trong cơ sở kiến thức của bạn → tìm thấy bài viết trợ giúp về xuất dữ liệu, tài liệu API liên quan và 3 yêu cầu hỗ trợ tương tự trước đây
Những thông tin này được đưa vào cửa sổ ngữ cảnh cùng với câu hỏi của khách hàng
Các công ty sử dụng RAG để hỗ trợ khách hàng nhận thấy tỷ lệ lỗi giảm đáng kể. Một công ty bảo hiểm đã báo cáo giảm 80% số câu trả lời không chính xác sau khi triển khai RAG — không phải vì AI trở nên thông minh hơn, mà vì cuối cùng nó đã có ngữ cảnh phù hợp.
✅ Kiểm tra nhanh: Sự khác biệt giữa RAG và việc tinh chỉnh mô hình AI là gì?
Đáp án: RAG không thay đổi mô hình mà chỉ thay đổi nội dung trong cửa sổ ngữ cảnh. Việc tinh chỉnh (fine-tuning) thực chất là sửa đổi trọng số của mô hình thông qua quá trình huấn luyện bổ sung. RAG là một kỹ thuật thiết kế ngữ cảnh; tinh chỉnh là một kỹ thuật thiết kế mô hình. RAG thiết lập nhanh hơn, cập nhật dễ dàng hơn và không yêu cầu chuyên môn về Machne Learning.
Bộ nhớ phân cấp: Bộ nhớ làm việc, bộ nhớ theo sự kiện và bộ nhớ ngữ nghĩa
Đây là điểm thú vị. Bộ nhớ con người không phải là một thứ duy nhất — nó được phân lớp. Và các hệ thống bộ nhớ AI tốt nhất phản ánh sự phân lớp đó.
Bộ nhớ làm việc = cửa sổ ngữ cảnh hiện tại. Những gì AI đang nghĩ đến ngay bây giờ. Nhỏ, nhanh, tạm thời.
Bộ nhớ theo sự kiện = bản ghi về các tương tác cụ thể trong quá khứ. "Vào ngày 5 tháng 3, người dùng đã hỏi về việc di chuyển cơ sở dữ liệu và chúng tôi đã xem xét ba tùy chọn". Những thông tin này được lập chỉ mục theo thời gian, chủ đề hoặc người dùng.
Bộ nhớ ngữ nghĩa = kiến thức và sự kiện tổng quát. "Ngăn xếp công nghệ của người dùng là React + PostgreSQL. Họ thích lập trình hàm. Công ty của họ có 50 nhân viên". Đây là những sự kiện bền vững, không gắn liền với một cuộc trò chuyện cụ thể.
Một hệ thống bộ nhớ được thiết kế tốt sẽ sử dụng cả ba loại:
📍 Nơi dán: Mở ChatGPT (chat.openai.com), Claude (claude.ai) hoặc Gemini (gemini.google.com) và bắt đầu một cuộc trò chuyện mới.
📋 Cách sao chép prompt này: Nhấp chuột vào bất kỳ đâu bên trong khối màu xám, nhấn Cmd+A rồi Cmd+C (Mac) hoặc Ctrl+A rồi Ctrl+C (Windows). Hoặc sử dụng biểu tượng sao chép xuất hiện.
┌─────────────────────────────────────┐
│ Bộ nhớ làm việc (Phiên) │
│ Cuộc trò chuyện hiện tại + đã truy xuất │
│ ngữ cảnh từ các lớp bên dưới │
├─────────────────────────────────────┤
│ Bộ nhớ theo từng giai đoạn (RAG) │
│ Tóm tắt các cuộc trò chuyện trước đây, │
│ được lập chỉ mục theo chủ đề/ngày/người dùng │
├─────────────────────────────────────┤
│ Bộ nhớ ngữ nghĩa (Cấu hình) │
│ Sở thích người dùng, thông tin dự án, │
│ kiến thức chuyên môn │
└─────────────────────────────────────┘
✏️ Cách điền thông tin chi tiết: Thay thế mỗi dấu ngoặc vuông [] và trình giữ chỗ trong ngoặc bằng thông tin cụ thể từ tình huống thực tế của bạn. Thông tin không rõ ràng sẽ tạo ra kết quả không rõ ràng — hãy nêu cụ thể.
👀 Những gì bạn sẽ thấy: Trong vòng vài giây, AI sẽ trả về một phản hồi có cấu trúc dựa trên prompt ở trên. Hãy đọc kỹ và coi đó là bản nháp, không phải câu trả lời cuối cùng.
📌 Nên làm gì với kết quả: Lưu phản hồi vào file Notes. Chọn gợi ý có hiệu quả cao nhất và thực hiện nó trong tuần này — đừng cố gắng làm tất cả cùng một lúc.
⚠️ Nếu kết quả không ổn: Nếu các gợi ý có vẻ chung chung, hãy dán nội dung sau: "Hãy cụ thể hơn với ngữ cảnh thực tế của tôi. Bỏ những lời khuyên chung chung". Nếu nó bỏ qua các chi tiết quan trọng bạn đã cung cấp, hãy hỏi: "Bạn đã bỏ sót [X] trong ngữ cảnh của tôi — hãy thực hiện lại với điều đó làm ràng buộc chính".
Khi một phiên mới bắt đầu, hệ thống sẽ load bộ nhớ ngữ nghĩa (luôn liên quan), truy xuất bộ nhớ sự kiện (liên quan đến tình huống) và kết hợp chúng vào bộ nhớ làm việc.
Các mẫu bộ nhớ thực tế
Hãy đi vào chi tiết. Dưới đây là 3 mẫu bộ nhớ bạn có thể sử dụng ngay hôm nay — không cần cơ sở dữ liệu vector.
Mẫu 1: File CLAUDE.md
Nếu sử dụng Claude Code, bạn đã có một hệ thống bộ nhớ mà có thể bạn không nhận ra. File CLAUDE.md trong thư mục gốc dự án của bạn là bộ nhớ ngữ nghĩa — nó cho Claude biết về dự án của bạn, các tùy chọn và quy ước của bạn. Mỗi phiên làm việc mới đều tự động load file này.
# Dự án: Acme Dashboard
- Ngăn xếp: React 18 + TypeScript + Tailwind
- Luôn sử dụng các thành phần chức năng với hooks
- Kiểm thử bằng Vitest, không phải Jest
- Cơ sở dữ liệu: PostgreSQL thông qua Prisma ORM
- Ưu tiên các kiểu dữ liệu tường minh hơn là `any`
Đây là kỹ thuật ngữ cảnh ở dạng đơn giản nhất. Bạn đang thiết kế những gì AI biết trước khi cuộc trò chuyện bắt đầu.
Mẫu 2: Tóm tắt cuộc trò chuyện
Sau một cuộc trò chuyện quan trọng, hãy yêu cầu AI tóm tắt các quyết định chính, những mục hành động và ngữ cảnh. Lưu bản tóm tắt đó. Bắt đầu phiên làm việc tiếp theo bằng cách dán nội dung này vào.
Đây là những gì chúng ta đã làm hôm qua:
- Quyết định sử dụng PostgreSQL thay vì MongoDB cho dịch vụ người dùng
- Xác định 3 bước di chuyển: thiết kế lược đồ → di chuyển dữ liệu → cập nhật API
- Trở ngại: cần xử lý các trường JSON cũ trong bảng người dùng
- Bước tiếp theo: thiết kế lược đồ mới
Đây là bộ nhớ theo từng giai đoạn được thực hiện thủ công. Nó hiệu quả một cách đáng ngạc nhiên — và chỉ tốn khoảng 100 token để đưa vào.
Mẫu 3: File cơ sở kiến thức
Đối với các tác vụ định kỳ, hãy duy trì một file cơ sở kiến thức được cập nhật theo thời gian:
# Cơ sở kiến thức hỗ trợ khách hàng
## Các vấn đề thường gặp
- Lỗi đăng nhập: 90% do token OAuth hết hạn. Giải pháp: xóa cookie
- Xuất dữ liệu chậm: các file trên 10MB kích hoạt xử lý không đồng bộ. Hãy bảo khách hàng kiểm tra email
- Dữ liệu bị thiếu: thường là do không khớp múi giờ. Kiểm tra cài đặt múi giờ của người dùng
## Quy tắc leo thang
- Tranh chấp hóa đơn > 500 USD: chuyển cho nhóm tài chính
- Báo cáo mất dữ liệu: chuyển ngay cho bộ phận kỹ thuật
- Mối quan ngại về bảo mật: chuyển đến security@company.com
Hãy load đoạn này vào đầu mỗi cuộc trò chuyện hỗ trợ. AI giờ đây đã có kiến thức chuyên môn.
✅ Kiểm tra nhanh: Một lập trình viên sử dụng Claude Code cho một dự án nhưng cảm thấy khó chịu khi phải giải thích lại các quy ước lập trình của dự án trong mỗi phiên làm việc mới. Mô hình bộ nhớ nào sẽ giải quyết vấn đề này?
Đáp án: Mô hình 1 — một file CLAUDE.md. Đặt các quy ước lập trình, công nghệ sử dụng và tùy chọn vào file CLAUDE.md của dự án. Claude Code sẽ tự động load file này khi bắt đầu mỗi phiên làm việc. Đây là bộ nhớ ngữ nghĩa — các sự kiện bền vững luôn luôn có liên quan.
Thiết kế chiến lược bộ nhớ của bạn
Dưới đây là một khung sườn nhanh để quyết định loại bộ nhớ mà AI của bạn cần:
Bước 1: AI cần thông tin gì mà nó không thể nhận được từ một prompt duy nhất?
Bước 2: Phân loại thông tin:
Luôn cần thiết → Bộ nhớ ngữ nghĩa (file cấu hình, luôn được load)
Thỉnh thoảng cần thiết → Bộ nhớ theo từng giai đoạn (RAG, được truy xuất theo yêu cầu)
Chỉ cần thiết ngay bây giờ → Bộ nhớ làm việc (chỉ cần nhập vào prompt)
Bước 3: Chọn phương thức lưu trữ:
Dự án đơn giản → File Markdown (CLAUDE.md, tài liệu cơ sở tri thức)
Dự án trung bình → File có cấu trúc + truy xuất thủ công
Dự án phức tạp → Cơ sở dữ liệu Vector + RAG tự động
Bước 4: Thiết kế chiến lược load:
Những gì được load tự động mỗi phiên?
Những gì được truy xuất dựa trên truy vấn của người dùng?
Ngân sách token tối đa cho bộ nhớ là bao nhiêu?
Đừng thiết kế quá phức tạp! Hầu hết mọi người cần Mẫu 1 (file cấu hình) và Mẫu 2 (tóm tắt cuộc hội thoại). Bạn chỉ cần một hệ thống RAG đầy đủ khi cơ sở tri thức của bạn quá lớn để hiển thị trong cửa sổ ngữ cảnh.
Bài tập: Thiết kế chiến lược bộ nhớ
Chọn một tác vụ AI thường xuyên bạn thực hiện — đánh giá code, viết nội dung, phân tích dữ liệu, hỗ trợ khách hàng, bất cứ việc gì.
Liệt kê 5 điều mà AI cần biết mà hiện tại bạn đang phải giải thích lại trong mỗi phiên làm việc.
Phân loại mỗi điều là ngữ nghĩa (luôn luôn liên quan) hoặc theo từng giai đoạn (đôi khi liên quan).
Viết cấu hình bộ nhớ — những gì được lưu trong file cấu hình so với những gì được truy xuất theo yêu cầu?
Ước tính chi phí token — lớp bộ nhớ của bạn sẽ thêm bao nhiêu token vào mỗi phiên làm việc?
Để được điểm thưởng, hãy thực sự tạo file cấu hình và sử dụng nó trong phiên làm việc AI tiếp theo của bạn. Đo lường xem chất lượng đầu ra có được cải thiện hay không.
Những điểm chính cần ghi nhớ
Cửa sổ ngữ cảnh chỉ là tạm thời — chúng sẽ tự động xóa giữa các phiên, khiến AI mặc định không có bộ nhớ nào
RAG tự động hóa kỹ thuật "chọn" bằng cách tìm kiếm trong cơ sở tri thức và chèn các đoạn thông tin liên quan vào cửa sổ ngữ cảnh
Bộ nhớ có ba lớp: Bộ nhớ hoạt động (phiên hiện tại), bộ nhớ theo sự kiện (các tương tác trong quá khứ) và bộ nhớ ngữ nghĩa (những sự kiện bền vững)
Bạn không cần cơ sở dữ liệu vector để bắt đầu — các file CLAUDE.md, tóm tắt cuộc hội thoại và tài liệu cơ sở tri thức là những hệ thống bộ nhớ thực tế mà bạn có thể sử dụng ngay hôm nay
Thiết kế bộ nhớ bằng cách phân loại thông tin: Luôn cần thiết (cấu hình), đôi khi cần thiết (RAG) hoặc chỉ cần thiết ngay bây giờ (prompt)
Mục tiêu không phải là ghi nhớ mọi thứ — mà là đưa đúng thông tin vào đúng phiên vào đúng thời điểm
Câu 1:
Bạn đang xây dựng một bot hỗ trợ khách hàng cần ghi nhớ các tương tác trước đó. Phương pháp ghi nhớ nào hoạt động tốt nhất?
GIẢI THÍCH:
Bộ nhớ theo sự kiện lưu trữ các tương tác cụ thể dưới dạng những bản ghi có thể truy xuất. Khi khách hàng quay lại, bạn sẽ truy xuất lịch sử giao dịch của họ — nhưng là bản tóm tắt, chứ không phải bản ghi đầy đủ. Bản ghi đầy đủ sẽ tiêu tốn ngân sách token của bạn ngay lập tức. Và việc yêu cầu AI "ghi nhớ" cũng không có tác dụng gì — nó không có khả năng lưu trữ dữ liệu lâu dài. Bộ nhớ theo từng sự kiện cung cấp cho bạn bối cảnh về mối quan hệ với chi phí token hợp lý. Điều này giúp AI hiểu rõ hơn về mối quan hệ mà không cần phải phát lại toàn bộ bản ghi.
Câu 2:
RAG (Retrieval-Augmented Generation) thực sự làm gì?
GIẢI THÍCH:
RAG không thay đổi mô hình hoặc đào tạo nó. Đó là một kỹ thuật tạo ngữ cảnh: Tìm kiếm trong cơ sở kiến thức của bạn, lấy các phần liên quan, đưa chúng vào cửa sổ ngữ cảnh, sau đó để AI tạo ra. Bản thân AI không thay đổi — bạn chỉ đang cung cấp cho nó ngữ cảnh tốt hơn để làm việc.
Câu 3:
Tại sao chatbot AI thông thường lại quên hết mọi thứ giữa các phiên giao tiếp?
GIẢI THÍCH:
Cửa sổ ngữ cảnh được thiết kế để tồn tại tạm thời. Hãy nghĩ về chúng như bộ nhớ RAM — khi bạn đóng ứng dụng, RAM sẽ được xóa. AI không 'chọn' cách quên; nó thực sự không có cơ chế nào để duy trì thông tin nếu không có các hệ thống bộ nhớ ngoài như RAG, tóm tắt cuộc trò chuyện hoặc những file cấu hình. Một khi phiên giao tiếp kết thúc, bộ nhớ làm việc đó sẽ biến mất. Nếu không có hệ thống bộ nhớ ngoài, AI sẽ bắt đầu lại từ đầu mỗi lần
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: