📚 Bài 7: RAG & Context Engineering — Cấp Cho AI "Bộ Nhớ Dài Hạn"
📋 Agenda
Thời gian đọc ước tính: ~35 phút
Sau bài này, bạn sẽ:
- ✅ Hiểu vấn đề knowledge cutoff và context window của LLM
- ✅ Giải thích RAG pipeline từ Retrieve → Augment → Generate
- ✅ Thiết kế Context Engineering cho AI Agents
- ✅ Chọn đúng giữa RAG, Fine-tuning, và Prompt Engineering
Prerequisites:
- 🔹 Đã đọc Bài 6 (ReAct & Reflexion)
❓ Vấn đề & Giải pháp
Hai vấn đề cốt lõi của LLM trong production:
🚫 Vấn đề 1 — Knowledge Cutoff:
LLM được train đến một thời điểm nhất định.
GPT-4 cutoff: Tháng 4/2023 → Không biết gì sau đó.
→ Hỏi về sự kiện gần đây → Hallucinate hoặc từ chối
🚫 Vấn đề 2 — Thiếu Private Knowledge:
LLM không biết thông tin nội bộ của công ty bạn.
→ "Chính sách nghỉ phép của công ty chúng tôi là gì?" → AI không biết
Giải pháp: RAG (Retrieval-Augmented Generation) — Cấp thêm context có liên quan vào prompt ngay tại runtime.
📖 WHAT — RAG là gì?
Retrieval-Augmented Generation (RAG) là kiến trúc kết hợp giữa Information Retrieval (tìm kiếm thông tin) và Text Generation (sinh văn bản): trước khi generate response, hệ thống tự động tìm kiếm và đưa các đoạn thông tin liên quan nhất vào context của LLM.
— Lewis et al., 2020 — "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks"
RAG giải quyết vấn đề gì so với alternatives?
| Vấn đề | Standard Prompt | Fine-tuning | RAG |
|---|---|---|---|
| Knowledge cutoff | ❌ | ❌ (phải re-train) | ✅ |
| Private knowledge | ❌ | ✅ (tốn kém) | ✅ |
| Real-time data | ❌ | ❌ | ✅ (với live retrieval) |
| Chi phí cập nhật | Rẻ | Rất đắt | Rẻ (chỉ cập nhật DB) |
| Transparency | Thấp | Thấp | Cao (có thể cite sources) |
🔨 HOW — RAG Pipeline chi tiết
Bước 1: Chunking — Chia tài liệu thành đoạn nhỏ
Tại sao cần chunking?
- LLM có context window giới hạn → Không thể nhét toàn bộ tài liệu
- Semantic search hiệu quả hơn trên đoạn nhỏ
Các chunking strategies:
# Strategy 1: Fixed-size chunking (đơn giản nhất)
chunk_size = 512 # tokens
overlap = 50 # tokens overlap giữa chunks
# Strategy 2: Semantic chunking (tốt hơn)
# Chia theo paragraph, section, hoặc semantic boundary
# Strategy 3: Hierarchical chunking
# Chunk lớn cho context, chunk nhỏ cho retrieval
Trade-off:
- Chunk nhỏ → Search chính xác hơn, nhưng thiếu context
- Chunk lớn → Nhiều context hơn, nhưng search kém chính xác hơn
- Best practice: Chunk 256-512 tokens với 10-20% overlap