Skip to content

RAG: Retrieval-Augmented Generation

Mở đầu

Tại sao ChatGPT đôi khi "tự tin bịa chuyện"? Knowledge của LLM lấy từ training data, nhưng training data có cutoff date và không gồm doc nội bộ công ty bạn. RAG (Retrieval-Augmented Generation) là tech core giải vấn đề này — cho AI "tra tài liệu" trước khi trả lời.

Bạn sẽ học:

  • Hiểu khái niệm: RAG là gì, sao cần, giải vấn đề "hallucination"
  • Workflow đầy đủ: load doc → chunk → vectorize → retrieve → generate
  • Năng lực chọn tech: chiến lược chunking, retrieval, biết chọn theo scenario
  • Evolution: Naive → Advanced → Modular RAG
  • Năng lực quyết định: khi nào dùng RAG, khi nào fine-tune
ChươngNội dung
1Flow cơ bản: index, retrieve, generate
2Strategy chunking text
3Tech retrieval
4Evolution architecture
5RAG vs fine-tuning

0. Toàn cảnh: tại sao LLM cần "tra tài liệu"?

Tưởng tượng bạn là 1 giáo sư uyên bác, đọc vô số sách. Nhưng nếu ai hỏi "data bán hàng hôm qua của công ty bạn", chắc chắn không trả lời được — info này không có trong sách.

LLM cũng tình cảnh tương tự:

  • Knowledge có cutoff date: GPT-4 training data cut tại 1 point, sau đó không biết
  • Thiếu knowledge riêng: doc nội bộ, manual product, customer data — model chưa thấy
  • Dễ hallucinate: khi model không chắc, có xu hướng "bịa" answer trông hợp lý

Ý tưởng core RAG

Trước khi model trả lời, giúp nó tìm tài liệu reference liên quan. Giống thi mở sách — không cần nhớ hết, chỉ cần biết tra ở đâu.

RAG = Retrieval + Augmented + Generation


1. Flow cơ bản: index, retrieve, generate

2 giai đoạn: offline indexingonline query.

Offline = library cataloging. Online = reader vào library tra tài liệu.

选择问题:
💬
用户提问
我们公司的年假政策是什么?
🔍
语义检索
📋
上下文组装
🤖
LLM 生成
返回结果
用户提问 — 详细说明
用户向系统提出一个自然语言问题。这个问题会被转化为向量表示,用于后续的语义检索。
1 / 5

3 giai đoạn core

  1. Indexing: load doc gốc, clean, chunk, qua embedding model → vector → lưu vector DB. One-time prep.
  2. Retrieval: user hỏi, convert question thành vector, search vector DB tìm fragment similar nhất.
  3. Generation: ghép fragment + question thành Prompt, đưa LLM gen answer.
Giai đoạnInputOutputTech
IndexDoc gốcVector DBChunking, embedding
RetrieveCâu hỏi userTop-K fragmentVector similarity, rerank
GenerateQuestion + contextAnswer cuốiPrompt engineering, LLM

2. Text chunking: bỏ voi vào tủ lạnh

Chunking là khâu hay bị bỏ quên nhất nhưng ảnh hưởng effect lớn nhất. Sao cần chunk? Vì LLM context window có hạn, không nhồi cả sách vào được. Quan trọng hơn: chất lượng chunk quyết định trực tiếp chất lượng retrieval.

输入文本
固定大小
按照固定的字符数切分文本,是最简单直接的分块方式。通常会设置一定的重叠区域(overlap),避免在切分边界丢失上下文。
块大小: 80 字符重叠: 20 字符
分块结果 共 0 个块
请输入文本后查看分块结果
策略优点缺点适用场景
📏 固定大小实现简单,块大小均匀可能在句子中间截断结构化程度低的长文本
📝 按句子保持句子完整性块大小不均匀文章、报告等自然文本
🧠 语义分块主题连贯,语义完整计算成本高,需要嵌入模型多主题混合的复杂文档
🔄 递归分块兼顾结构与大小实现较复杂通用场景,推荐默认选择

Chọn strategy chunking

  • Fixed size: cắt theo char/token, đơn giản nhưng có thể break semantic
  • Recursive: cắt theo paragraph trước, dài quá thì câu, giữ semantic
  • Semantic: dùng embedding model detect semantic boundary, cắt ở chỗ similarity break
  • Document structure: dùng heading Markdown, tag HTML

Không có "best", chỉ có "phù hợp data của bạn". Khuyến nghị start với recursive chunking, size 200-500 tokens, overlap 10-20%.


3. Tech retrieval: cách tìm content liên quan nhất

Sau chunking, vấn đề: user hỏi 1 câu, làm sao tìm vài fragment liên quan nhất từ hàng nghìn?

Giống tìm sách trong library lớn. Bạn có thể search title (keyword), mô tả nội dung muốn (semantic), hoặc kết hợp cả (hybrid).

选择查询:
1
查询编码
2
向量搜索
3
重排序
4
Top-K 选择
查询编码
将用户的自然语言查询通过嵌入模型(如 text-embedding-ada-002)转化为高维向量表示。这个向量捕捉了查询的语义信息。
查询文本
如何申请年假?
↓ 嵌入模型编码
查询向量
0.12-0.450.780.33-0.210.560.89-0.14
Cách retrieveNguyên lýƯuNhược
Keyword (BM25)Term frequency + inverse doc frequencyMatch chính xác, nhanhKhông hiểu semantic, fail với synonym
Vector retrievalCosine similarity embeddingHiểu semantic, fuzzy matchKém với proper noun
HybridFuse keyword + vectorCân bằng chính xác và semanticPhải tune weight, phức tạp

Reranking

Sau initial retrieval, thường cần "rerank". Initial retrieval theo recall (tìm hết), rerank theo precision (xếp lên trên). Rerank model phổ biến: Cohere Rerank, BGE Reranker. Dùng cross-encoder cho fine-grained scoring.


4. Evolution architecture: từ đơn giản tới thông minh

RAG evolve qua 3 generation trong 2 năm, mỗi gen giải pain point gen trước.

最基础的 RAG 架构,流程简单直接:索引 → 检索 → 生成。适合快速原型验证,但在复杂场景下效果有限。
📄
文档加载
✂️
文本分块
🔢
向量化
🔍
检索
🤖
生成
点击流程节点查看详细说明
架构特点
实现简单,上手快
适合结构化知识库
⚠️检索质量依赖分块策略
无法处理复杂查询
架构演进路线
Naive RAG
2023
Advanced RAG
2024
Modular RAG
2025

So sánh 3 gen

  • Naive RAG (2023): flow cơ bản "index → retrieve → generate". Đơn giản nhưng effect hạn chế.
  • Advanced RAG (2024): thêm query rewrite, hybrid retrieval, rerank, context compression. Tăng đáng kể precision.
  • Modular RAG (2025): chia thành module pluggable, support routing, adaptive retrieval, self-reflection. Dynamic chọn flow tối ưu theo query type.

5. RAG vs fine-tuning: chọn cái nào?

Khi muốn LLM nắm knowledge lĩnh vực cụ thể, 2 đường: RAG và fine-tuning. Không exclusive, mà bổ sung nhau.

So sánh: fine-tuning = cho học sinh đi học bồi dưỡng, nội hoá knowledge vào não. RAG = phát sách tham khảo, thi có thể tra. Mỗi cách có ưu nhược.

RAG 检索增强生成
VS
Fine-tuning 微调
知识更新速度
实时更新,修改文档即生效
需要重新训练,周期长
实施成本
搭建检索系统,成本适中
💰
需要 GPU 资源和标注数据
回答风格控制
依赖 Prompt 工程
🎨
可深度定制输出风格
幻觉控制
有据可查,可追溯来源
🎯
仍可能产生幻觉
推理延迟
需要额外的检索步骤
⏱️
直接生成,无额外开销
私有数据安全
数据留在本地,不进入模型
🔒
数据融入模型权重
一句话总结
RAG 像是给模型配了一个实时更新的参考书库,适合知识频繁变化的场景; 微调像是让模型上了一门专业课,适合需要特定风格或领域深度的场景。 实际项目中,两者常常结合使用。
ChiềuRAGFine-tuning
Update knowledgeReal-time, sửa doc là xongPhải train lại
CostThấp (không cần GPU train)Cao (cần training resource)
ExplainabilityCao (trace source được)Thấp (knowledge nội hoá weights)
ScenarioKB Q&A, doc retrievalStyle transfer, task tuning
Hallucination controlTốt hơn (có reference)Trung bình (vẫn hallucinate được)

Khuyến nghị thực hành

Hầu hết scenario, thử RAG trước. Ưu: không train, knowledge update real-time, answer trace được. Chỉ khi cần đổi "behavior pattern" của model (output format, language style, reasoning) mới fine-tune. Phương án mạnh nhất thường là RAG + fine-tuning combo.


Tổng kết

RAG là tech thực dụng nhất để land LLM hiện tại. Giá trị core: answer có dẫn chứng, knowledge update real-time, hallucination control được.

Điểm key:

  1. RAG giải: knowledge LLM outdated, thiếu private data, dễ hallucinate
  2. 3 stage: index (offline) → retrieve (online find) → generate (synthesize answer)
  3. Chunking là nền: chất lượng chunk quyết định chất lượng retrieval
  4. Retrieval là key: hybrid + rerank = combo tốt nhất hiện tại
  5. Architecture evolve: Naive → Modular, ngày càng thông minh
  6. RAG + fine-tuning bổ sung: scenario thường thử RAG trước

2026 update

  • Anthropic Contextual Retrieval (10/2024): inject context trước embedding → -49% retrieval failure
  • GraphRAG (Microsoft) cho multi-hop reasoning
  • Multimodal RAG: text + image trong cùng vector space
  • Agentic RAG: agent quyết khi nào retrieve, retrieve gì
  • Long context không thay RAG: Gemini 2.5 1M token context vẫn dùng RAG vì cost, latency, control
  • Stack VN 2026: Qwen3-Embedding + Cohere Rerank 3 + Claude Sonnet 5 + Qdrant

Đọc thêm