Top 5 RAG
01 · Cơ bản → Trung cấp

Hybrid RAG

Vector dày gặp keyword thưa.

Khi nào dùng

Khi câu hỏi vừa cần hiểu ngữ nghĩa, vừa cần khớp đúng từ khoá/mã/tên riêng (SKU, error code, tên hàm, số version, viết tắt) — và là lựa chọn MẶC ĐỊNH khi vector-only RAG hay bỏ sót kết quả chứa đúng từ khoá. ❌ Chưa cần nếu corpus nhỏ và truy vấn toàn ngôn ngữ tự nhiên: vector thuần đã đủ.

Ví dụ thực tế

  • Tìm kiếm tài liệu nội bộ / wiki công ty: vừa hiểu ý câu hỏi, vừa khớp đúng tên file, mã quy trình.
  • Hỗ trợ kỹ thuật: tra cứu theo mã lỗi chính xác ("ERR_2043") kèm mô tả triệu chứng bằng lời.
  • Sàn thương mại điện tử: tìm sản phẩm theo SKU/mã model lẫn mô tả tự nhiên ("áo khoác chống nước").
  • Tra cứu tài liệu code/API: khớp đúng tên hàm/biến nhưng vẫn hiểu mô tả công dụng.

Sơ đồ

Sơ đồ minh hoạ luồng xử lý; xem mô tả từng bước ở mục Luồng hoạt động bên dưới.

Luồng hoạt động

  1. 1Query
  2. 2Nhánh dày: Embedding Model → Vector DB → Dense Results
  3. 3Nhánh thưa: BM25 Index → Sparse Results
  4. 4Reciprocal Rank Fusion (RRF) gộp 2 danh sách
  5. 5Top-K Chunks → LLM → Answer

Hiểu nôm na

Như tra cứu trong thư viện bằng HAI thủ thư cùng lúc: một người hiểu Ý bạn muốn gì (ngữ nghĩa), một người thuộc lòng mã số sách trên kệ (từ khoá chính xác). Mỗi người đưa danh sách của họ, rồi bạn gộp lại — cuốn nào được CẢ HAI xếp cao thì gần như chắc đúng.

Khái niệm A–Z

RAG cơ bản chỉ dùng vector embedding (dense) — giỏi hiểu Ý NGHĨA ("ô tô" ≈ "xe hơi") nhưng dễ trượt khi người dùng gõ đúng một mã lỗi, tên hàm, hay SKU mà embedding "làm mờ" đi. Hybrid RAG chạy SONG SONG 2 cách tìm: (1) dense — so khoảng cách vector ngữ nghĩa; (2) sparse — BM25, thuật toán xếp hạng từ khoá kinh điển (kiểu Elasticsearch), khớp chính xác token. Rồi gộp 2 bảng xếp hạng bằng Reciprocal Rank Fusion. Kết quả: bao phủ cả "hiểu ý" lẫn "khớp chữ" → recall cao hơn hẳn chỉ-vector, gần như miễn phí về độ phức tạp.

Cách hoạt động

Hai nhánh tìm kiếm

Cùng một query đi vào 2 nhánh độc lập rồi mới gộp lại.

  • Dense: query → embedding → ANN search (Approximate Nearest Neighbor — tìm vector gần nhất gần-đúng, rất nhanh; đo bằng cosine/dot) trong Vector DB (pgvector, Qdrant, Pinecone...). Bắt ngữ nghĩa, đồng nghĩa, diễn đạt khác.
  • Sparse: BM25 trên inverted index (bảng tra ngược "từ → các tài liệu chứa từ đó"). Bắt khớp chính xác từ hiếm/đặc thù; token càng hiếm điểm càng cao (IDF — inverse document frequency).
  • Mỗi nhánh trả về top-N riêng (vd N=50) — CHƯA cắt xuống K cuối.

Gộp bằng Reciprocal Rank Fusion (RRF)

Hai nhánh cho điểm theo thang KHÁC nhau (cosine 0–1 vs BM25 không chặn trên) → không cộng thẳng được. RRF chỉ dùng THỨ HẠNG: score(d) = Σ 1/(k + rank_i(d)), với k≈60. Doc xếp cao ở cả hai nhánh sẽ lên đầu; không cần chuẩn hoá điểm, rất bền.

Rerank + cắt Top-K

Sau RRF nên thêm một bước rerank bằng cross-encoder (cohere-rerank, bge-reranker) — loại model đọc CẶP (query, tài liệu) cùng một lượt nên chấm độ liên quan THẬT chính xác hơn embedding (đổi lại chậm hơn) — rồi mới lấy Top-K (3–8) đưa vào prompt. Rerank tăng precision rõ rệt mà chi phí nhỏ.

Nội dung chuyên sâu 5 mô hình RAG

Mở khoá phần Thực hành (code), Mẹo thực chiến, Lưu ý bảo mật, Áp dụng dự án thật, Lỗi thường gặp và Thuật ngữ — dành cho gói Senior trở lên.

Cần đăng nhập + gói Senior trở lên

Đã có tài khoản gói phù hợp? Đăng nhập để mở khoá ngay.

Kiến trúc liên quan

Luyện phỏng vấn AI/RAG thực chiến

Hàng nghìn câu hỏi phỏng vấn IT + lộ trình — học nhanh, đi làm sớm.

Bắt đầu luyện