TROISINH
Context EngineeringRetrieval & Knowledge

Reranking & Filtering: Lọc và xếp hạng context trước khi đưa vào

Hướng dẫn tối ưu RAG pipeline bằng Reranking và Filtering. Học cách loại bỏ nhiễu và chọn đúng context cho AI, thay vì nhồi nhét tất cả vào prompt.

Định nghĩa

Reranking và Filtering là hai bước "làm sạch" dữ liệu sau giai đoạn Retrieval ban đầu, giúp loại bỏ kết quả trùng lặp, lỗi thời hoặc không liên quan thực sự đến câu hỏi, chỉ giữ lại top thông tin chất lượng cao nhất để đưa vào Context Window cho LLM xử lý.

Giải thích chi tiết

Vấn đề thực tế của Vector Search đơn thuần

Vector Search tìm kiếm theo "độ tương đồng ngữ nghĩa" (cosine similarity), không phải "độ liên quan thực tế". Ví dụ: người dùng hỏi cách "sửa lỗi 404", hệ thống có thể trả về cả tài liệu "hướng dẫn tạo ra lỗi 404 để test" vì cùng chứa cụm từ "lỗi 404". Ngoài ra, Chunking thường tạo ra các đoạn chồng chéo (overlap) 50-80% nội dung, dẫn đến việc đưa cùng một thông tin lặp đi lặp lại vào prompt, tốn token vô ích.

Reranking: Chọn lại người vào vòng trong

Thay vì tin ngay top-10 từ Vector Search, ta dùng mô hình "mạnh hơn, chậm hơn" (thường là Cross-Encoder thay vì Bi-Encoder) đọc lại câu hỏi và từng đoạn văn bản đã retrieval, rồi chấm điểm lại độ liên quan thực sự. Cross-Encoder nhìn cả query và document cùng lúc nên hiểu mối quan hệ sâu hơn, dù tốn thời gian hơn Bi-Encoder dùng ở bước đầu. Sau Reranking, chỉ top 3-5 đoạn được chọn để đưa vào prompt cuối cùng.

Filtering: Loại rác trước khi vào bếp

Filtering áp dụng các quy tắc cứng nhắc để loại bỏ nhiễu trước hoặc sau Reranking:

  • Metadata Filtering: Chỉ lấy tài liệu có status: "published", year: 2024, hoặc department: "engineering". Loại trừ bản nháp (draft) và tài liệu hết hiệu lực.
  • Deduplication: Dùng thuật toán similarity để phát hiện các chunk trùng lặp nội dung, chỉ giữ lại một đại diện.
  • Relevance Threshold: Sau Reranking, bỏ các kết quả có điểm số thấp hơn ngưỡng (ví dụ dưới 0.3), tránh đưa thông tin "gần giống nhưng sai trọng tâm" vào Context.

Maximum Marginal Relevance (MMR)

Đôi khi bạn muốn kết quả không chỉ "liên quan" mà còn "đa dạng". MMR là kỹ thuật cân bằng giữa độ liên quan (relevance) và độ khác biệt (diversity). Ví dụ khi tìm "Machine Learning", thay vì trả về 5 bài đều là "Giới thiệu ML cơ bản", MMR sẽ chọn bài 1 (giới thiệu), bài 2 (ML trong y tế), bài 3 (ML trong tài chính), đảm bảo Context đa chiều cho câu trả lời phong phú.

Ví dụ thực tế

Hệ thống tra cứu văn bản pháp luật

Tình huống: Công ty luật xây dựng RAG để tra cứu luật và nghị định. Người dùng hỏi về "thuế thu nhập cá nhân 2024".

Vấn đề: Vector Search trả về cả văn bản hết hiệu lực từ năm 2020 và văn bản mới nhất, cùng với các văn bản hướng dẫn chi tiết chỉ liên quan gián tiếp.

Giải pháp:

  • Filtering: Lọc metadata effective_date >= 2024-01-01status == "active" ngay sau retrieval, loại bỏ luật cũ.
  • Reranking: Dùng Cohere Rerank hoặc BGE-Reranker để ưu tiên điều khoản liên quan trực tiếp đến thuế TNCN, đẩy các điều khoản về thuế doanh nghiệp xuống dưới.
  • Kết quả: Chỉ đưa 3 đoạn pháp lý chính xác nhất vào Context, giảm 70% token so với việc nhồi nhét top-10 ban đầu.

Chatbot tài liệu kỹ thuật (Developer Docs)

Tình huống: Startup có 10.000 trang API documentation. Người dùng hỏi "cách xử lý lỗi timeout khi gọi API thanh toán".

Vấn đề: Retrieval trả về 20 đoạn từ 5 bài viết khác nhau, trong đó 8 đoạn là nội dung lặp lại từ phần "Giới thiệu chung về API" (header và footer template giống nhau).

Giải pháp:

  • Deduplication: Chạy thuật toán similarity nội bộ, phát hiện 8 đoạn trùng lặp và chỉ giữ 1 đoạn đại diện.
  • Reranking: Dùng mô hình chuyên biệt cho domain technical (ví dụ CodeBERT) để đánh giá độ chính xác kỹ thuật, ưu tiên đoạn code example thực tế hơn đoạn giải thích lý thuyết.
  • Context cuối: Chỉ giữ 3 đoạn thực sự chứa solution cho lỗi timeout, giúp LLM trả lời chính xác thay vì lan man.

Nền tảng học trực tuyến (Content Discovery)

Tình huống: Hệ thống gợi ý tài liệu học về "Deep Learning cho xử lý ảnh y tế".

Vấn đề: Nếu chỉ lấy top-5 Vector Search, cả 5 đều là bài "Giới thiệu CNN cơ bản", thiếu các góc độ chuyên sâu như "Data augmentation cho ảnh X-quang" hoặc "HIPAA compliance khi dùng AI y tế".

Giải pháp MMR:

  • Dùng Maximum Marginal Relevance với tham số lambda = 0.5 (cân bằng relevance và diversity).
  • Đoạn 1: Giới thiệu CNN (liên quan nhất).
  • Đoạn 2: Ứng dụng CNN trong chẩn đoán ung thư (liên quan + khác biệt với đoạn 1).
  • Đoạn 3: Quy định bảo mật dữ liệu y tế (liên quan + khác biệt với cả 2 đoạn trên).
  • Kết quả: Context đa chiều giúp AI đưa ra câu trả lời toàn diện hơn.

Ứng dụng

Dành cho Developer xây dựng RAG Pipeline

  • Best practice: Luôn đặt ngưỡng similarity (ví dụ cosine similarity > 0.75) ở bước retrieval để giảm tải cho Reranker, nhưng đừng quá cao (0.9+) kẻo mất thông tin hữu ích.
  • Trade-off awareness: Reranking tốn compute (Cross-Encoder chậm hơn Bi-Encoder 10-100 lần), nên chỉ chạy trên 20-50 kết quả đầu từ Vector Search, không phải toàn bộ cơ sở dữ liệu.
  • Hybrid approach: Kết hợp kết quả từ Keyword Search (BM25) và Vector Search rồi dùng Reranking để xếp hạng lại toàn bộ (Reciprocal Rank Fusion).

Dành cho Doanh nghiệp triển khai Internal Knowledge Base

  • Phân quyền qua Filtering: Lọc metadata user_role trước khi Rerank, đảm bảo nhân viên cấp dưới không thấy tài liệu "Confidential" dù nội dung có liên quan.
  • Time-decay Reranking: Trong công thức tính điểm Reranking, thêm trọng số recency cho các lĩnh vực thay đổi nhanh (marketing, lập trình), ưu tiên tài liệu mới hơn dù độ tương đồng ngữ nghĩa thấp hơn một chút.
  • Cost saving: Bằng cách lọc kỹ trước khi đưa vào LLM, doanh nghiệp giảm 50-70% token input, tiết kiệm chi phí API đáng kể cho hệ thống scale lớn.

Dành cho Sinh viên và Researcher

  • Baseline: Khi benchmark RAG pipeline, luôn đo hiệu quả với và không có Reranking để chứng minh giá trị thêm vào.
  • Domain adaptation: Nếu dùng mô hình Reranking có sẵn (Cohere, Jina AI), fine-tune trên 100-200 cặp query-document chuyên ngành của bạn (luật, y học, kỹ thuật) để tăng độ chính xác 15-30%.
  • Filtering heuristics: Với dữ liệu tiếng Việt, lọc các chunk có độ dài quá ngắn (dưới 50 ký tự) hoặc quá dài (trên 2000 ký tự) thường cho kết quả tốt hơn vì tránh nhiễu từ header/footer hoặc chunk bị cắt ngang câu.

So sánh

Tiêu chíInitial Retrieval (Vector Search)RerankingFiltering
Mục đích chínhTìm nhanh các ứng viên có khả năng liên quanXác định chính xác ai là "tốt nhất"Loại bỏ rác, trùng lặp và lỗi thời
Cơ chếBi-Encoder (so sánh vector đã index sẵn)Cross-Encoder (đọc query+doc cùng lúc)Rules, Metadata queries, Heuristics
Tốc độ xử lýCực nhanh (miliseconds), scale triệu recordsChậm (chạy trên tập nhỏ 20-100 items)Rất nhanh, xử lý song song
Độ chính xácTrung bình (dễ bị nhiễu ngữ nghĩa)Cao (hiểu ngữ cảnh câu hỏi cụ thể)Phụ thuộc chất lượng quy tắc đặt ra
Ví dụ công cụFAISS, Pinecone, Chroma, WeaviateCohere Rerank, BGE-Reranker, ColBERTPython script, Elasticsearch filters, Pandas

Kết luận: Ba giai đoạn tạo thành pipeline "Thô → Tinh → Sạch". Không có Filtering, bạn đốt token vào việc AI đọc đi đọc lại cùng một nội dung hoặc thông tin đã lỗi thời. Không có Reranking, RAG dễ bị "ngộ độc context" (context poisoning) bởi các đoạn văn tương tự nhưng sai trọng tâm câu hỏi.

Bài viết liên quan

On this page