
RAG: Retrieval Augmented Generation nâng cấp LLM
RAG (Retrieval Augmented Generation) là kỹ thuật kết hợp truy xuất tài liệu từ cơ sở tri thức bên ngoài với khả năng sinh văn bản của mô hình ngôn ngữ lớn (LLM). Thay vì chỉ dựa vào dữ liệu huấn luyện cố định, RAG cho phép LLM truy vấn tài liệu được cập nhật liên tục trước khi trả lời. Kỹ thuật này được giới thiệu năm 2020 và trở thành tiêu chuẩn trong AI doanh nghiệp (Wikipedia).
Vấn đề cốt lõi của LLM là hallucination — hiện tượng mô hình tự tạo thông tin sai lệch nhưng trình bày rất tự tin. Khi Google lần đầu giới thiệu Gemini, mô hình đưa ra thông tin sai về vũ trụ, góp phần giảm giá trị thị trường tới 100 tỷ USD. RAG giảm thiểu đáng kể hallucination bằng cách neo câu trả lời vào nguồn dữ liệu thực tế.

Quy trình hoạt động của RAG
Hệ thống RAG hoạt động qua ba giai đoạn chính: indexing (lập chỉ mục), retrieval (truy xuất), và generation (tạo sinh). Mỗi giai đoạn đóng vai trò then chốt trong việc đảm bảo chất lượng đầu ra.
Giai đoạn 1: Indexing — Lập chỉ mục tài liệu
Trước tiên, dữ liệu tham chiếu (tài liệu, cơ sở kiến thức, bài viết) được chuyển thành embeddings — các biểu diễn số học dưới dạng vectơ trong không gian nhiều chiều. Quá trình này sử dụng mô hình mã hóa (encoder) như text-embedding-3-small của OpenAI hoặc bge-large-en-v1.5 từ HuggingFace.
Các embeddings được lưu trữ trong cơ sở dữ liệu vectơ (vector database) như Pinecone, Qdrant, hoặc open-source như ChromaDB. Dữ liệu có thể ở dạng văn bản thuần (unstructured), bán cấu trúc, hoặc có cấu trúc.
# Ví dụ mã hóa văn bản thành embedding bằng Python
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("BAAI/bge-large-en-v1.5")
documents = ["Tài liệu 1...", "Tài liệu 2...", "Tài liệu 3..."]
embeddings = model.encode(documents)
# embeddings.shape: (3, 1024)
Giai đoạn 2: Retrieval — Truy xuất tài liệu liên quan
Khi người dùng gửi câu hỏi (query), hệ thống mã hóa query thành vector, sau đó tìm kiếm tương đồng (similarity search) trong cơ sở dữ liệu vectơ để tìm k tài liệu liên quan nhất. Các phương pháp phổ biến:
- Cosine Similarity: Đo góc giữa hai vector, phổ biến nhất
- Dot Product: Nhanh hơn, phù hợp cho vectơ chuẩn hóa
- Euclidean Distance: Đo khoảng cách trong không gian vectơ
- Approximate Nearest Neighbor (ANN): Thuật toán FAISS, HNSW — tối ưu hiệu năng cho kho dữ liệu lớn
# Tìm kiếm tương đồng với FAISS
import faiss
import numpy as np
index = faiss.IndexFlatIP(1024)
index.add(embeddings.astype("float32"))
query_vec = model.encode(["Làm thế nào để áp dụng RAG?"])
distances, indices = index.search(query_vec.astype("float32"), k=3)
print(f"Tài liệu liên quan nhất: {indices[0]}")
Kỹ thuật nâng cao là hybrid search — kết hợp tìm kiếm dense (dựa embedding) với tìm kiếm sparse (TF-IDF, BM25) cho độ chính xác cao hơn (Vendi-RAG paper).
Giai đoạn 3: Generation — Tổng hợp câu trả lời
Tài liệu được truy xuất ghép vào prompt gốc, tạo thành augmented prompt. LLM tổng hợp câu trả lời dựa trên cả query lẫn ngữ cảnh bổ sung. IBM mô tả: “Trong giai đoạn tạo sinh, LLM rút trích từ prompt đã tăng cường và biểu diễn nội bộ từ dữ liệu huấn luyện để tổng hợp câu trả lời” (IBM).

Thành phần kỹ thuật quan trọng
Chunking — Phân đoạn tài liệu
Văn bản dài cần chia thành đoạn ngắn (chunks) trước khi mã hóa. Kích thước chunk ảnh hưởng trực tiếp chất lượng retrieval. Chunk quá ngắn mất ngữ cảnh; chunk quá dài giảm độ chính xác. Kích thước phổ biến 256–512 token với overlap 50–100 token.
# Phân đoạn văn bản với LangChain
from langchain.text_splitter import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=512,
chunk_overlap=100,
separators=["nn", "n", ". ", " "]
)
chunks = splitter.split_documents(documents)
Encoder — Bộ mã hóa
Các mô hình encoder chuyển văn bản thành embeddings. Dense vectors mã hóa ý nghĩa semantic và có chiều thấp hơn; sparse vectors (như BM25) mã hóa danh tính từ vựng. Kết hợp cả hai (hybrid vector approach) tận dụng ưu điểm của từng phương pháp.
Reranking — Xếp hạng lại kết quả
Sau bước retrieval ban đầu, mô hình reranker (ví dụ: cross-encoder/ms-marco-MiniLM-L-6-v2) đánh giá lại chi tiết để chọn tài liệu chất lượng nhất. Kỹ thuật này tăng độ chính xác đáng kể so với retrieval đơn thuần.

Ứng dụng thực tiễn của RAG
- Chatbot doanh nghiệp: Truy cập dữ liệu nội bộ — chính sách, tài liệu HR, kho kiến thức kỹ thuật — không cần huấn luyện lại mô hình
- Hỗ trợ y tế: Bổ sung kiến thức y khoa mới nhất, giảm nguy cơ chẩn đoán sai trên dữ liệu cũ
- Hệ thống pháp luật: Truy xuất luật định, văn bản pháp lý để hỗ trợ phân tích vụ kiện (arXiv: RAG trong pháp luật Nhật Bản)
- Trợ lý lập trình: Truy xuất tài liệu API, code samples, best practices từ codebase riêng
- Công cụ tìm kiếm nâng cao: Tổng hợp thông tin từ nhiều nguồn, trả lời câu hỏi phức tạp thay vì chỉ liệt kê link
Một ưu điểm lớn: khi thông tin mới xuất hiện, thay vì huấn luyện lại toàn bộ mô hình (tốn hàng triệu USD), chỉ cần cập nhật cơ sở tri thức bên ngoài. RAG tách biệt khả năng tư duy (LLM) và kho kiến thức (hệ thống bên ngoài).
Cải tiến mới trong RAG
Các nhà nghiên cứu liên tục cải thiện pipeline RAG. Một số phương pháp đáng chú ý:
- Agentic RAG: AI agent tự quyết định khi nào cần truy xuất, nguồn nào, có cần truy xuất lại không
- Self-RAG: LLM tự đánh giá có cần thông tin bên ngoài, giảm truy xuất không cần thiết
- Corrective RAG (CRAG): Kiểm tra chất lượng tài liệu trước generation, loại bỏ thông tin không liên quan
- Query Expansion: Mở rộng câu hỏi gốc thành nhiều câu hỏi con để tăng bao phủ truy xuất
Thách thức và giới hạn
RAG không thuần túy là kỹ thuật truy xuất. Một số rủi ro:
- RAG poisoning: Dữ liệu trong cơ sở tri thức bị tấn công, LLM trả lời sai mà vẫn tự tin vì “nguồn” được coi đáng tin
- Quality of retrieval: Tài liệu không liên quan làm xấu chất lượng đầu ra
- Latency: Thêm bước retrieval tăng thời gian phản hồi so với LLM thuần túy
- Chunking: Phân đoạn sai có thể phá vỡ ngữ cảnh quan trọng
Hướng dẫn triển khai RAG cơ bản
Bắt đầu triển khai RAG cho dự án của bạn:
- Chuẩn bị dữ liệu: thu thập tài liệu, website, PDF — bất kỳ nguồn nào chứa kiến thức cần thiết
- Chọn mô hình embedding:
text-embedding-3-smallcho đa ngôn ngữ,bge-large-en-v1.5cho hiệu năng open-source - Thiết lập vector database: ChromaDB cho prototype, Pinecone/Qdrant cho production
- Xây dựng pipeline: indexing → retrieval → augmented prompt → generation
- Đánh giá và tối ưu: dùng framework như RAGAS hoặc LangSmith để theo dõi chất lượng
Lưu ý quan trọng: RAG không thay thế việc huấn luyện mô hình. Với tác vụ đặc thù (nhận diện y tế, phân tích tài liệu pháp lý), fine-tuning kết hợp RAG thường cho kết quả tốt nhất. RAG xử lý kiến thức thay đổi theo thời gian; fine-tuning xử lý behavior và format đầu ra nhất quán.
RAG đang định hình tương lai AI ứng dụng trong doanh nghiệp. Với khả năng kết nối LLM với dữ liệu thực tế an toàn và kiểm soát được, đây là giải pháp thiết yếu cho tổ chức muốn tận dụng AI mà không chấp nhận rủi ro hallucination.
