Fine-tuning, RAG hay Prompt? Cách Tùy Biến LLM 2026
Posted on: 6/14/2026 1:18:03 AM
Table of contents
Prototype vừa chạy được, sếp ghé tai: "Mình fine-tune luôn cái model cho nó chuẩn nhỉ?". Đây là phản xạ phổ biến nhất — và cũng tốn kém nhất — trong các đội làm sản phẩm AI. Phần lớn vấn đề mà người ta định "fine-tune để giải quyết" thực ra được xử lý gọn hơn, rẻ hơn và an toàn hơn nhiều bằng prompt hoặc RAG. Fine-tuning là một con dao sắc, nhưng không phải vết cắt nào cũng cần đến nó.
Bài viết này dựng lại một khung quyết định rõ ràng cho năm 2026: chiếc thang Prompt → RAG → Fine-tune → Distill. Chúng ta sẽ tách bạch bản chất của từng cách, chỉ ra đâu là ranh giới thật sự để biết khi nào bước lên nấc thang tiếp theo, và vì sao "hybrid" — kết hợp truy xuất với fine-tune — mới là chuẩn mực của các hệ thống production hiện nay.
Ba câu hỏi, ba con đường
Khi một mô hình ngôn ngữ chưa làm đúng ý bạn, gần như luôn rơi vào một trong ba nhóm nguyên nhân — và mỗi nhóm có một cách chữa khác nhau:
- Mô hình chưa hiểu bạn muốn gì → đây là vấn đề chỉ dẫn. Chữa bằng prompting: diễn đạt lại, thêm ví dụ, ràng buộc định dạng.
- Mô hình thiếu thông tin để trả lời → đây là vấn đề kiến thức. Chữa bằng RAG: nạp đúng tài liệu vào ngữ cảnh tại thời điểm chạy.
- Mô hình hiểu và đủ thông tin, nhưng vẫn hành xử sai kiểu → đây là vấn đề hành vi: sai giọng điệu, sai định dạng cố hữu, hay quá chậm/quá đắt ở quy mô lớn. Đây mới là lúc fine-tuning tỏa sáng.
Sai lầm kinh điển là dùng nhầm thuốc: cố nhồi kiến thức vào trọng số bằng fine-tune (việc của RAG), hoặc cố ép hành vi nhất quán chỉ bằng prompt dài dằng dặc (việc của fine-tune). Phân loại đúng nguyên nhân trước khi chọn công cụ là một nửa của lời giải.
Bản chất khác nhau ở đâu?
Cả ba đều "tùy biến" mô hình, nhưng tác động lên những lớp hoàn toàn khác nhau của hệ thống:
| Tiêu chí | Prompting | RAG | Fine-tuning |
|---|---|---|---|
| Thay đổi cái gì | Chỉ dẫn đầu vào | Kiến thức nạp lúc chạy | Trọng số mô hình (hành vi) |
| Cập nhật kiến thức | Tức thì | Tức thì — chỉ đổi nguồn | Phải huấn luyện lại |
| Trích dẫn nguồn | Không | Có — truy vết được | Không |
| Chi phí khởi tạo | Gần như 0 | Thấp – trung bình | Trung bình – cao |
| Độ trễ khi chạy | Thấp | Cộng thêm bước truy xuất | Thấp nhất (gọn ngữ cảnh) |
| Cần dữ liệu gán nhãn | Không | Không | Có — và phải chất lượng |
| Hợp nhất khi | Luôn thử đầu tiên | Kiến thức động, cần dẫn nguồn | Hành vi/định dạng/giọng điệu, độ trễ |
Một phép so sánh dễ nhớ
Prompting là ra đề bài rõ ràng hơn cho nhân viên. RAG là đưa cho họ đúng cuốn cẩm nang để tra cứu khi làm. Fine-tuning là cho họ đi học một khóa đào tạo để thay đổi thói quen làm việc. Bạn không gửi người đi học nghề chỉ để họ biết số điện thoại mới của khách hàng — đó là việc của cẩm nang.
Chiếc thang quyết định
Quy tắc vận hành tốt nhất năm 2026 là leo thang theo thứ tự chi phí và độ phức tạp tăng dần. Chỉ bước lên nấc tiếp theo khi nấc hiện tại đã chạm trần — và bạn đo được điều đó, chứ không phải đoán.
flowchart TD
A["Vấn đề cần giải quyết"] --> B{"Prompt tốt hơn
đã đủ chưa?"}
B -->|"Đủ"| P["✅ Dừng ở Prompting
Rẻ nhất, nhanh nhất"]
B -->|"Chưa"| C{"Thiếu kiến thức
hoặc dữ liệu mới?"}
C -->|"Đúng"| R["RAG · Truy xuất tri thức"]
C -->|"Không"| D{"Cần hành vi nhất quán,
định dạng chặt,
độ trễ/chi phí thấp?"}
R --> D
D -->|"Đúng"| F["Fine-tuning
LoRA / QLoRA"]
D -->|"Chưa rõ"| RF["Kết hợp RAG + Fine-tune"]
F --> DS{"Volume rất lớn,
chạy thật liên tục?"}
RF --> DS
DS -->|"Đúng"| DI["Distill → mô hình nhỏ
Rẻ & nhanh khi serve"]
DS -->|"Không"| OP["Vận hành & đo lường liên tục"]
classDef stop fill:#4CAF50,stroke:#fff,color:#fff;
classDef act fill:#e94560,stroke:#fff,color:#fff;
classDef cond fill:#f8f9fa,stroke:#e94560,color:#2c3e50;
classDef dist fill:#2c3e50,stroke:#fff,color:#fff;
class P,OP stop;
class R,F,RF act;
class B,C,D,DS cond;
class DI dist;
Nấc 1 — Prompting: nơi 70% bài toán kết thúc
Trước khi nghĩ tới GPU và tập dữ liệu, hãy vắt kiệt prompting. Mô hình frontier 2026 (Claude Opus 4.x, các dòng GPT-5.x, Gemini 3) đủ mạnh để xử lý phần lớn tác vụ chỉ với chỉ dẫn tốt. Bốn đòn bẩy đáng thử trước:
- Few-shot examples: 3–5 ví dụ đầu vào/đầu ra chuẩn thường dạy được "khuôn" tốt hơn cả một đoạn mô tả dài.
- Structured output: ràng buộc JSON Schema/grammar để ép định dạng — thứ mà nhiều người tưởng phải fine-tune mới làm được.
- Phân rã & chỉ dẫn rõ vai trò: tách yêu cầu phức tạp thành các bước, nêu rõ tiêu chí thành công.
- Context engineering: đưa đúng thông tin vào ngữ cảnh, đúng lượng, đúng thời điểm.
Nguyên tắc
Nếu bạn chưa thử nghiêm túc few-shot và structured output mà đã muốn fine-tune, gần như chắc chắn bạn đang đốt tiền. Prompting có chi phí khởi tạo gần bằng 0 và vòng lặp thử nghiệm tính bằng phút, không phải bằng ngày.
Nấc 2 — RAG: khi vấn đề là kiến thức
Khi mô hình trả lời sai vì không biết — dữ liệu nội bộ, tài liệu mới, thông tin thay đổi từng giờ — thì fine-tune là sai thuốc. Nhồi kiến thức vào trọng số vừa đắt, vừa "đóng băng" tại thời điểm train, lại không truy vết được nguồn. RAG (Retrieval-Augmented Generation) giải quyết tận gốc: nạp đúng đoạn tài liệu vào ngữ cảnh ngay lúc suy luận.
Chọn RAG khi: kiến thức lớn hoặc động; cần trích dẫn/nguồn gốc để tuân thủ, kiểm toán; quản trị dữ liệu đòi hỏi tách rời nguồn khỏi mô hình; hoặc bạn chưa có dữ liệu gán nhãn và cần ra mắt nhanh. Một huyền thoại cần dập tắt: cửa sổ ngữ cảnh 1M token không khai tử RAG. Nhồi cả kho tài liệu vào mỗi lượt gọi đắt hơn 20–24 lần so với truy xuất có chọn lọc ở quy mô lớn, và "context rot" khiến mô hình loãng tín hiệu khi ngữ cảnh phình to.
Nấc 3 — Fine-tuning: khi vấn đề là hành vi
Fine-tuning thật sự xuất sắc ở những thứ prompt và RAG chật vật: hành vi nhất quán (giọng thương hiệu, phong cách trả lời cố định), định dạng phi tiêu chuẩn mà prompt không ép nổi ổn định, độ trễ (gói toàn bộ "luật chơi" vào trọng số, ngữ cảnh gọn lại), và chi phí ở quy mô lớn (một mô hình nhỏ đã fine-tune có thể rẻ hơn nhiều lần so với gọi API frontier mỗi request).
LoRA & QLoRA — vì sao fine-tune đã rẻ đi
Thời "full fine-tune" cập nhật toàn bộ hàng tỷ tham số đã qua. Năm 2026, với 90% nhu cầu, lựa chọn đúng là LoRA (Low-Rank Adaptation): đóng băng trọng số gốc, chỉ chèn vào vài ma trận thấp hạng nhỏ xíu để học phần "delta" của hành vi. Số tham số phải huấn luyện rớt xuống còn một vài phần trăm.
flowchart LR
X(["Đầu vào x"]) --> W["Trọng số gốc W
❄️ ĐÓNG BĂNG"]
X --> A["Ma trận A
(r × d) · nhỏ"]
A --> Bm["Ma trận B
(d × r) · nhỏ"]
W --> S((" + "))
Bm --> S
S --> Y(["h = Wx + B·A·x"])
classDef frozen fill:#2c3e50,stroke:#fff,color:#fff;
classDef train fill:#e94560,stroke:#fff,color:#fff;
classDef io fill:#f8f9fa,stroke:#e94560,color:#2c3e50;
class W frozen;
class A,Bm train;
class X,Y,S io;
QLoRA đẩy hiệu quả đi xa hơn: nạp mô hình gốc ở dạng lượng tử hóa 4-bit rồi mới gắn adapter LoRA lên trên. Kết quả: tiết kiệm 75–80% bộ nhớ so với LoRA 16-bit, đủ để fine-tune một mô hình 65 tỷ tham số trên đúng một GPU 48GB, mà chất lượng nhiều trường hợp ngang ngửa full fine-tune. Đây chính là lý do fine-tuning từ "đặc quyền của big tech" trở thành thứ một đội nhỏ cũng làm được.
SFT hay RFT?
Có hai trường phái huấn luyện cần phân biệt:
| Phương pháp | Cách học | Mạnh ở | Lưu ý |
|---|---|---|---|
| SFT (Supervised Fine-Tuning) | Bắt chước cặp đầu vào/đầu ra mẫu | Định dạng, giọng điệu, phong cách | Đơn giản, rẻ, đủ cho phần lớn nhu cầu |
| RFT (Reinforcement Fine-Tuning) | Thưởng cho kết quả kiểm chứng được là đúng | Suy luận, toán, code — nơi đúng/sai rạch ròi | Phức tạp hơn; chỉ đáng khi tính đúng đắn đo được |
Đừng mặc định RFT "xịn hơn". Với đa số tác vụ định dạng và phong cách, SFT vẫn đơn giản, rẻ và đủ tốt. RFT chỉ tỏa sáng khi bạn có một hàm thưởng kiểm chứng được (test pass, đáp án đúng) — gắn liền với xu hướng RLVR cho tác vụ agentic.
Một ví dụ cấu hình LoRA tối giản với thư viện PEFT — tinh thần là rất ít tham số phải học:
from peft import LoraConfig, get_peft_model
config = LoraConfig(
r=16, # hạng adapter: cao hơn = học được nhiều hơn
lora_alpha=32, # hệ số scale
target_modules=["q_proj", "v_proj"], # chỉ chèn vào lớp attention
lora_dropout=0.05,
task_type="CAUSAL_LM",
)
model = get_peft_model(base_model, config)
model.print_trainable_parameters()
# -> trainable params: ~0.2% tổng số tham số
Sự thật 2026: Hybrid mới là chuẩn
Câu hỏi "fine-tune hay RAG" thực ra là một câu hỏi sai. Hệ thống production tốt năm 2026 gần như luôn dùng cả hai, mỗi thứ một việc:
Công thức ROI cao nhất
Một adapter LoRA/QLoRA mỏng trên nền một base model mạnh để định hình hành vi, kết hợp với RAG để cấp kiến thức — chứ không phải thay thế nhau. Retrieval lo phần sự thật và cập nhật; fine-tune lo phần giọng điệu, định dạng và quyết định.
Và một sự thật về chi phí mà nhiều đội bỏ qua: tiền không nằm ở compute để train. Chi phí thật của fine-tuning là đánh giá (eval), làm sạch & tuyển chọn dữ liệu, và vòng đời sở hữu mô hình — phải retrain khi base model nâng cấp, phải canh chừng drift, phải đo regression. Một LoRA train trong 2 giờ nhưng kéo theo cái đuôi vận hành dài hàng tháng.
Lộ trình triển khai thực tế
Một dự án AI khỏe mạnh nên đi theo trình tự này, dừng lại ngay khi đạt chất lượng mục tiêu:
Sai lầm phổ biến
Bốn cái bẫy hay gặp
- Fine-tune để nhồi kiến thức. Đó là việc của RAG. Trọng số là nơi tồi để lưu sự thật hay thay đổi và không truy vết được nguồn.
- Bỏ qua eval. Không có bộ đánh giá khách quan, bạn không biết fine-tune giúp ích hay làm hỏng (catastrophic forgetting) — chỉ "cảm thấy" tốt hơn.
- Nhảy thẳng tới fine-tune. Bỏ qua hai nấc rẻ tiền phía dưới là sai lầm tốn kém nhất, cả về tiền lẫn thời gian.
- Fine-tune ngay trên model frontier khi một mô hình nhỏ là đủ. Ở quy mô lớn, một SLM đã fine-tune thường vừa rẻ vừa nhanh hơn nhiều.
Kết luận
"Fine-tune hay không" không phải câu hỏi đúng. Câu hỏi đúng là: vấn đề của tôi nằm ở chỉ dẫn, ở kiến thức, hay ở hành vi? Trả lời được điều đó, bạn sẽ tự biết nên dừng ở nấc nào trên chiếc thang Prompt → RAG → Fine-tune → Distill.
Quy tắc vàng để mang về
- Luôn bắt đầu từ nấc rẻ nhất và đo lường trước khi leo cao hơn.
- RAG cho kiến thức, fine-tune cho hành vi — và hệ thống tốt thường dùng cả hai.
- Với 90% trường hợp, LoRA/QLoRA trên base model mạnh là đủ; để dành full fine-tune cho ngoại lệ.
- Chi phí thật của fine-tuning là eval + dữ liệu + vòng đời, không phải compute. Hãy tính cả cái đuôi đó trước khi bắt đầu.
Bắt đầu hôm nay rất đơn giản: dựng một bộ eval nhỏ cho bài toán của bạn, ép prompting tới giới hạn, rồi chỉ leo lên nấc tiếp theo khi con số — chứ không phải cảm giác — bảo bạn rằng đã đến lúc.
Nguồn tham khảo:
- Fine-Tuning LLMs in 2026: When RAG Isn't Enough (and When It Still Is) — BigData Boutique
- Fine-Tuning vs. RAG: When to Use Each [2026] — Atlan
- RAG vs Fine-Tuning for LLMs (2026): What Actually Works in Production — DEV Community
- Efficient Fine-Tuning with LoRA: A Guide to Optimal Parameter Selection — Databricks
Disclaimer: The opinions expressed in this blog are solely my own and do not reflect the views or opinions of my employer or any affiliated organizations. The content provided is for informational and educational purposes only and should not be taken as professional advice. While I strive to provide accurate and up-to-date information, I make no warranties or guarantees about the completeness, reliability, or accuracy of the content. Readers are encouraged to verify the information and seek independent advice as needed. I disclaim any liability for decisions or actions taken based on the content of this blog.