Module 1: FastAPI
- Bài 1: Vì sao FastAPI thay vì Flask / Django cho AI
- Bài 2: Cài đặt FastAPI và endpoint đầu tiên
- Bài 3: Pydantic models — validate request và response
- Bài 4: Async endpoint — vì sao quan trọng cho AI inference
- Bài 5: Load model 1 lần khi startup (lifespan event)
- Bài 6: Endpoint inference — nhận data, trả kết quả prediction
- Bài 7: Upload file (image, PDF) và xử lý
- Bài 8: Streaming response cho LLM API
Module 2: Demo và Frontend cho AI Model
- Bài 9: Gradio — demo UI trong vài dòng code
- Bài 10: Streamlit — dashboard và data app
- Bài 11: Khi nào dùng Gradio, khi nào dùng Streamlit
- Bài 12: Deploy demo lên Hugging Face Spaces
Module 3: Vector Database
- Bài 13: Vector DB là gì? Sự khác biệt với SQL / NoSQL
- Bài 14: ChromaDB — local vector DB cho prototype
- Bài 15: Pinecone — managed vector DB cho production
- Bài 16: Qdrant và Weaviate — alternatives open source
- Bài 17: Index types: HNSW vs IVF vs Flat
- Bài 18: Metadata filtering — kết hợp vector search với điều kiện
Module 4: LangChain
- Bài 19: LangChain — orchestration framework cho LLM
- Bài 20: LCEL (LangChain Expression Language) — chuỗi component với pipe operator
- Bài 21: Document Loaders — load PDF, web, Notion, ...
- Bài 22: Text Splitters — chia document thành chunk
- Bài 23: Retrievers — abstract layer trên vector DB
- Bài 24: Memory — lưu lịch sử conversation
- Bài 25: Tools và Toolkits — gắn function vào agent
Module 5: LangGraph — Stateful Agent
- Bài 26: Vì sao cần LangGraph khi đã có LangChain
- Bài 27: State, Node, Edge — 3 khái niệm cốt lõi
- Bài 28: Xây Agent đầu tiên với LangGraph
- Bài 29: Conditional edge — branching logic
- Bài 30: Human-in-the-loop — pause để con người duyệt
- Bài 31: Multi-agent system intuition
Module 6: Containerization và Deployment
- Bài 32: Docker cơ bản — image, container, Dockerfile
- Bài 33: Dockerfile cho ứng dụng AI Python — best practices
- Bài 34: Multi-stage build — giảm kích thước image
- Bài 35: Docker Compose — quản lý multi-service (API + DB + Vector DB)
- Bài 36: Deploy lên Render — đơn giản nhất cho starter
- Bài 37: Deploy lên Railway và Fly.io
- Bài 38: Deploy lên AWS / GCP (overview, không deep)
Module 7: MLOps Cơ bản
- Bài 39: MLOps là gì? Khác biệt với DevOps truyền thống
- Bài 40: Experiment Tracking với MLflow
- Bài 41: Experiment Tracking với Weights & Biases (W&B)
- Bài 42: Model Registry — versioning model artifact
- Bài 43: Data Versioning với DVC
- Bài 44: CI/CD cho ML — GitHub Actions cho pipeline test/train/deploy
Module 8: Monitoring và Maintenance
- Bài 45: Logging cho AI app — gì cần log, gì không
- Bài 46: Metrics — latency, throughput, error rate
- Bài 47: Data Drift — khi distribution input thay đổi
- Bài 48: Concept Drift — khi quan hệ input/output thay đổi
- Bài 49: Monitoring với Prometheus + Grafana
Module 9: Tối ưu hóa Production
- Bài 50: Caching — Redis cho LLM response cache
- Bài 51: Batching — gom nhiều request để inference 1 lần
- Bài 52: Rate Limiting — bảo vệ API khỏi abuse
- Bài 53: API Key management — không hard-code, dùng env / secret manager
- Bài 54: Prompt Injection — defense cơ bản
- Bài 55: Model Quantization — INT8 / INT4 để giảm RAM và tăng tốc
- Bài 56: ONNX và TensorRT — export model cho inference tối ưu
- Bài 57: Knowledge Distillation — model nhỏ học từ model lớn
