Tôi đã thêm một Reranker vào RAG Pipeline của mình — Và nó làm hỏng mọi thứ
Tôi đã thêm một bộ reranker vào RAG pipeline của mình. Nó ngay lập tức làm hỏng các bài kiểm tra của tôi.
Ở phiên bản 2, tôi sử dụng hybrid retrieval với FAISS và BM25. Nó đã vượt qua tất cả 19 câu hỏi kiểm tra của tôi. Sau đó, tôi đã thêm một cross-encoder reranker để cải thiện độ chính xác (precision).
Lý thuyết rất đơn giản:
- Giai đoạn 1: Sử dụng retrieval tốc độ cao để lấy ra một tập hợp các ứng viên (candidates) rộng.
- Giai đoạn 2: Sử dụng một reranker thông minh để chọn ra những kết quả tốt nhất.
Chỉ mất 20 phút để triển khai. Nhưng nó ngay lập tức làm thất bại 2 trong số 19 bài kiểm tra của tôi.
Sự thất bại xảy ra do định dạng dữ liệu. Dữ liệu của tôi chứa các chunk dạng bảng (tabular) dày đặc như thế này: "Company: Zentara Robotics | CEO: Iris Kallas | Employees: 287"
Mô hình cross-encoder được huấn luyện trên các đoạn văn ngôn ngữ tự nhiên. Khi nó thấy một dòng dữ liệu dạng bảng, nó đã đưa ra điểm số rất thấp. Nó nghĩ rằng chunk đó không liên quan.
Hybrid retrieval đã tìm thấy câu trả lời, nhưng reranker đã loại bỏ nó.
Tôi đã thử 7 cách khác nhau để khắc phục điều này:
- Sử dụng một pool ứng viên lớn hơn.
- Kết hợp (blending) điểm số từ reranker và retriever.
- Sử dụng rank fusion.
Không cách nào hiệu quả cả. Điểm số của reranker âm đến mức nó lấn át tất cả những thứ khác. Mô hình không chỉ xếp hạng thấp hơn, mà nó đang chủ động bác bỏ định dạng bảng.
Tôi ngừng cố gắng sửa các công thức toán học và thay đổi cấu trúc.
Thay vì để reranker quyết định mọi thứ, tôi đã bảo vệ các kết quả tốt nhất của mình. Tôi đã sử dụng chiến lược "guaranteed slot" (vị trí được đảm bảo):
- Nếu bạn muốn 3 kết quả hàng đầu, hãy giữ lại 2 kết quả đầu tiên từ giai đoạn một.
- Chỉ sử dụng reranker để chọn kết quả thứ 3.
Điều này đảm bảo các kết quả tìm kiếm hybrid vẫn nằm trong danh sách cuối cùng. Reranker chỉ giúp cải thiện các vị trí còn lại.
Kết quả: 19/19 bài kiểm tra đã vượt qua.
Bài học rút ra:
- Reranker không phải là một bản nâng cấp tức thì. Chúng có thể làm giảm hiệu suất trên dữ liệu có cấu trúc hoặc dữ liệu dạng bảng.
- Bộ dữ liệu đánh giá (evaluation set) chính là lưới an toàn của bạn. Nếu không có 19 bài kiểm tra đó, tôi đã tung ra một hệ thống lỗi.
- Hãy bảo vệ những gì đang hoạt động tốt. Nếu quá trình retrieval ở giai đoạn một đã tốt, đừng để reranker ghi đè lên nó.
Hãy xây dựng một retriever mạnh mẽ trước khi tìm đến reranker.
Optional learning community: https://t.me/GyaanSetuAi
