Nội dung này phục vụ mục đích giáo dục. Ví dụ chỉ dùng mã và tài liệu giả; không đưa PII, bí mật hoặc dữ liệu khác tenant vào truy vấn/nhật ký.

Trả lời ngắn: Hybrid RAG là quy trình lấy tài liệu bằng nhiều tín hiệu—thường gồm tìm từ khóa và tìm vector—rồi lọc, hợp nhất, xếp hạng lại và kiểm nguồn trước khi đưa vào context. Nó cần thiết vì từ khóa bắt mã chính xác tốt, vector bắt cách diễn đạt gần nghĩa tốt, nhưng cả hai đều có thể lấy nhầm.

Đọc xong, bạn sẽ hiểu:

  • Sparse, dense, bộ lọc metadata, fusion và rerank làm việc gì.
  • RRF hợp hai bảng xếp hạng ra sao mà không cộng điểm gốc.
  • Vì sao tìm thấy chưa chắc liên quan, liên quan chưa chắc đúng và hệ phải biết dừng.

1. Hybrid RAG là gì, và vì sao một kiểu tìm kiếm chưa đủ?

a. RAG không bắt đầu ở câu trả lời

RAG (Retrieval-Augmented Generation) lấy tài liệu bên ngoài làm context trước khi mô hình sinh câu trả lời. Bài nghiên cứu của Lewis và cộng sự kết hợp bộ nhớ tham số với bộ nhớ phi tham số qua bộ truy xuất. Đây không phải bảo đảm hệ thực tế sẽ hết bịa thông tin. Lewis et al. — RAG

Một RAG thực dụng phải trả lời ba câu trước khi sinh câu:

  • tài liệu nào được phép tìm;
  • tài liệu nào liên quan;
  • bằng chứng có đủ để trả lời không.

Nếu bước truy xuất sai, mô hình có thể viết rất trôi chảy từ tài liệu sai.

b. Sparse giữ chữ, dense giữ quan hệ

Tìm sparse hay tìm từ khóa ưu tiên từ xuất hiện và độ hiếm của từ. BM25 là hàm xếp hạng phổ biến cho tìm toàn văn. Nó mạnh với mã lỗi, số hiệu, tên riêng và cụm chính xác.

Tìm dense hay tìm vector ưu tiên khoảng cách giữa embeddings. Nó mạnh khi query và tài liệu diễn đạt cùng ý bằng chữ khác.

Với truy vấn ERR_CONN_RESET khi login SSO:

  • sparse giữ chắc ERR_CONN_RESETSSO;
  • dense có thể nối login với đăng nhập;
  • metadata phải khóa tenant A, status=active và đúng phiên bản sản phẩm.

Chỉ dùng dense có thể kéo bài “khắc phục mất kết nối” nhưng bỏ tài liệu chứa đúng error code. Chỉ dùng sparse có thể hụt bài viết tiếng Việt dùng “đăng nhập một lần”.

c. Hybrid không phải cộng hai score

BM25 score và cosine score đến từ hai cơ chế, thang điểm khác nhau. Cộng 12,4 + 0,83 rồi gọi là hybrid không có ý nghĩa ổn định.

Hybrid RAG tạo nhiều bảng xếp hạng, hợp bằng fusion, có thể rerank danh sách ngắn, rồi qua read gate. Đây là quy trình kiểm soát, không phải phép cộng tùy tiện.

2. Sparse + dense + filter + fusion chạy thế nào?

Hình 1 — Hybrid RAG hợp nhiều tín hiệu nhưng chỉ đưa tài liệu qua cổng bằng chứng vào context.

a. Khóa phạm vi trước

Trước hai nhánh retrieval, tạo điều kiện:

tenant = A
permission contains support_agent
status = active
product = identity
effective_at <= now

Bộ lọc metadata là điều kiện phạm vi, quyền, loại, trạng thái và thời gian. Một đoạn tenant B dù đứng top-1 cũng không phải ứng viên hợp lệ.

Lọc quá muộn làm danh sách hợp lệ thiếu vì tài liệu cấm chiếm chỗ, đồng thời đưa dữ liệu sai quyền đi quá xa. Bộ lọc không thay kiểm soát quyền ở tầng dữ liệu.

b. Chạy hai nhánh

Nhánh sparse nhận truy vấn chữ và xếp theo từ. Nhánh dense tạo embedding truy vấn rồi xếp theo vector similarity. Azure AI Search chạy tìm toàn văn và vector song song, sau đó hợp bằng RRF. Đây là ví dụ riêng sản phẩm. Azure AI Search — Hybrid overview

Hai nhánh nên dùng cùng ảnh chụp corpus, phạm vi và thời điểm. Nếu chỉ mục dense chưa cập nhật, fusion đang trộn hai thế giới.

c. Fusion bằng RRF

Fusion là hợp nhiều danh sách xếp hạng. Reciprocal Rank Fusion (RRF) dùng vị trí thay vì điểm gốc:

RRF(d) = Σ 1 / (k + rank_i(d))

Demo dùng k=60. Tài liệu xuất hiện cao ở cả hai bảng nhận hai phần điểm. Azure và Elastic mô tả RRF bằng tổng nghịch đảo thứ hạng. Đây không phải tham số tối ưu chung. Azure — RRF ranking, Elastic — RRF

3. RRF, rerank và ba lớp “gần nhưng chưa chắc đúng”

Rủi ro lớn nhất là biến điểm truy xuất thành kết luận mà chưa kiểm bằng chứng.

Hình 2 — RRF gộp vị trí xếp hạng, không cộng trực tiếp BM25 score với cosine score.

a. Retrieved chưa chắc relevant

Tài liệu được lấy về có thể chỉ trùng SSO nhưng nói về cài đặt, không nói lỗi reset connection. Retrieval score đo ranking signal, không đo câu trả lời đúng.

Rerank là chấm lại danh sách ngắn bằng tín hiệu sâu hơn, thường đọc truy vấn và đoạn cùng lúc. Nó có thể giữ đúng mã lỗi, nhưng bộ rerank vẫn có giới hạn, chi phí và thiên lệch.

b. Relevant chưa chắc true hoặc current

Một policy cũ có thể rất liên quan nhưng đã hết hiệu lực. Một forum post có thể mô tả đúng triệu chứng nhưng không phải nguồn được duyệt. Provenance là nguồn gốc tài liệu: source ID, owner, version, timestamp và trạng thái.

Read gate chỉ cho passage vào context khi:

  • đúng tenant/permission;
  • nguồn được phép;
  • còn hiệu lực;
  • đủ liên quan sau rerank;
  • không xung đột nguồn ưu tiên hơn;
  • có citation ID để truy ngược.

c. Context chưa chắc tạo đáp án an toàn

Model vẫn có thể suy diễn quá passage. Vì vậy output contract cần:

  • trả lời kèm nguồn cho claim quan trọng;
  • nói rõ phần chưa biết;
  • abstain, tức không trả lời, khi evidence không đủ;
  • không biến RRF/rerank score thành confidence.

Ba tầng không được gộp:

  1. retrieved: hệ tìm thấy;
  2. relevant: tài liệu có liên quan câu hỏi;
  3. grounded/true: claim được evidence hiện hành hỗ trợ.

Hybrid cải thiện cơ hội lấy đúng tài liệu. Nó không tự hoàn thành tầng 2 và 3.

4. Checklist thiết kế và đánh giá Hybrid RAG

Hình 3 — Một hệ retrieval tốt phải qua từng lát truy vấn và biết dừng khi thiếu bằng chứng.

a. Thiết kế theo thứ tự

  1. Chốt corpus, source owner và update/delete path.
  2. Khóa tenant, permission, status, date và type.
  3. Dựng sparse baseline.
  4. Dựng dense baseline bằng cùng corpus.
  5. Hợp bằng RRF hoặc fusion được mô tả rõ.
  6. Rerank một shortlist có giới hạn.
  7. Read gate và provenance trước context.
  8. Answer-with-sources hoặc abstain.

Đừng bật mọi lớp cùng lúc rồi chỉ nhìn vài câu “có vẻ hay”. Cần biết lớp nào cải thiện query nào và lớp nào làm latency/cost tăng.

b. Eval theo query slices

Tạo bộ đánh giá có ít nhất năm lát:

  • exact code/name: mã lỗi, SKU, điều khoản;
  • paraphrase: cùng ý, khác chữ;
  • time/version: bản hiện hành so với bản cũ;
  • permission: tài liệu gần nhưng sai tenant/quyền;
  • no-answer: không có evidence đủ.

So bốn cấu hình trên cùng tập: sparse-only, dense-only, hybrid và hybrid+rerank. Đo recall@k cho retrieval, precision của shortlist, citation correctness và abstain accuracy. Không chọn bằng một average che mất permission leak.

c. Điểm dừng

Dừng triển khai nếu:

  • không có permission test;
  • query log chứa PII/secret không cần thiết;
  • sparse/dense dùng hai corpus version;
  • delete ở source nhưng index vẫn trả passage;
  • no-answer luôn bị ép trả lời;
  • không truy ngược claim về source ID.

Nếu hybrid không thắng baseline trên task thật, giữ baseline đơn giản. Hai retriever không mặc định tốt hơn một.

5. Bài tập 15 phút: hợp nhất hai bảng xếp hạng

Dùng spreadsheet miễn phí, không gọi API:

  • 3 phút nhập sparse list D1,D4,D2,D5 và dense list D2,D3,D1,D4.
  • 4 phút tính 1/(60+rank) cho mỗi lần xuất hiện.
  • 3 phút cộng theo ID và sắp giảm dần.
  • 3 phút xử lý tie D1/D2 bằng rule hoặc chuyển reranker.
  • 2 phút thêm D6 tenant B và loại trước fusion.

Mẫu đối chiếu đã điền

ID Sparse rank Dense rank RRF score Kết quả
D1 1 3 0,03227 tie #1
D2 3 1 0,03227 tie #1
D4 2 4 0,03175 #3
D3 2 0,01613 #4
D5 4 0,01563 #5
D6 1 1 loại: tenant B

Kiểm nhanh D1: 1/61 + 1/63 ≈ 0,03227. D1 và D2 tie vì hai rank bị đảo. Có thể dùng rule ưu tiên exact error code đã định trước hoặc đưa cả hai sang reranker; không được tự sửa score sau khi thấy đáp án.

Đây là dữ liệu giả để học fusion, không phải benchmark hoặc product score. Không dùng dữ liệu hay tiền thật.

6. Tổng kết và bài học tiếp theo

a. Năm ý chính

  • Hybrid RAG kết hợp nhiều retrieval signals và các cổng kiểm soát.
  • Sparse giữ exact term; dense giữ quan hệ diễn đạt.
  • Metadata filter khóa scope trước khi fusion.
  • RRF hợp ranks; rerank chấm shortlist, cả hai không đo truth.
  • Read gate, provenance, citation và abstain mới bảo vệ context/answer.

b. Câu hỏi tự kiểm tra

  • Sparse và dense mạnh ở hai loại query nào?
  • Vì sao không cộng BM25 score với cosine score?
  • RRF tie D1/D2 nên xử lý thế nào?
  • Khi nào hệ phải abstain?

c. Gợi ý đáp án

Xem gợi ý câu 1

Sparse mạnh exact term/mã; dense mạnh paraphrase và quan hệ embedding. → xem mục 1.

Xem gợi ý câu 2

Hai score khác cơ chế và thang; dùng fusion theo rank như RRF. → xem mục 2.

Xem gợi ý câu 3

Dùng rule xác định trước hoặc rerank cả hai; không chỉnh score tùy kết quả. → xem mục 5.

Xem gợi ý câu 4

Khi evidence thiếu, sai quyền, hết hiệu lực, xung đột hoặc không truy nguồn được. → xem mục 3–4.

d. Thuật ngữ cần nhớ

Thuật ngữ Giải thích ngắn
RAG Lấy tài liệu ngoài làm context trước generation.
Hybrid RAG RAG kết hợp nhiều retrieval signals và gates.
Sparse search Tìm theo term và độ hiếm.
Dense search Tìm theo khoảng cách embedding.
Metadata filter Khóa scope, quyền, trạng thái và thời gian.
Fusion Hợp nhiều ranked lists.
RRF Cộng reciprocal ranks từ nhiều lists.
Rerank Chấm lại shortlist sâu hơn.
Provenance Nguồn gốc và phiên bản evidence.
Abstain Không trả lời khi evidence không đủ.

e. Nguồn tham khảo

f. Học tiếp gì?

Bài trước là Embedding là gì trong AI? #10, nơi ta tạo vector. Bài tiếp theo là Context Optimization: Tối ưu ngữ cảnh #12, nơi ta chọn, nén và sắp tài liệu đã retrieval trước khi đưa vào model.

Nhắc lại: Nội dung chỉ phục vụ mục đích giáo dục, không phải lời khuyên đầu tư. Không coi retrieved là true, không vượt permission và phải abstain khi bằng chứng chưa đủ.