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ặcdepartment: "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-01vàstatus == "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_roletrướ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ố
recencycho 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) | Reranking | Filtering |
|---|---|---|---|
| Mục đích chính | Tìm nhanh các ứng viên có khả năng liên quan | Xá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 records | Chậm (chạy trên tập nhỏ 20-100 items) | Rất nhanh, xử lý song song |
| Độ chính xác | Trung 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, Weaviate | Cohere Rerank, BGE-Reranker, ColBERT | Python 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
RAG là gì? Retrieval-Augmented Generation giải thích đơn giản
Nắm vững kiến trúc tổng thể của RAG trước khi đi sâu vào tối ưu từng bước
Embedding và Vector Search
Hiểu sâu cơ chế tìm kiếm ngữ nghĩa ở bước retrieval trước khi áp dụng rerank
Chunking Strategies: Chia tài liệu thế nào cho AI đọc tốt?
Cách chia nhỏ văn bản ảnh hưởng trực tiếp đến chất lượng input cho reranking
Đọc tiếp: Quản lý Context nâng cao
Sau khi đã lọc và xếp hạng, học cách quản lý Context Window hiệu quả cho hệ thống production
Đọc tiếp: Memory & Conversation
Khi cần lưu trữ lịch sử hội thoại dài hạn thay vì chỉ xử lý context one-time
Knowledge Graph: Tổ chức kiến thức có cấu trúc cho AI
Knowledge Graph giúp AI hiểu mối quan hệ giữa các thực thể thay vì chỉ tìm kiếm từ khóa. Khám phá cách tổ chức dữ liệu có cấu trúc để RAG thông minh hơn.
Conversation Memory: Cách AI nhớ cuộc hội thoại
Khám phá cách AI 'nhớ' cuộc hội thoại: từ Sliding Window đơn giản đến kiến trúc 3 tầng của Claude Code. Memory trong AI thực chất chỉ là illusion được engineer.