Saya Menambahkan Reranker ke Pipeline RAG Saya — Semuanya Menjadi Kacau

Saya menambahkan reranker ke pipeline RAG saya. Hal ini langsung merusak semua pengujian saya.

Pada versi 2, saya menggunakan hybrid retrieval dengan FAISS dan BM25. Versi tersebut berhasil melewati semua 19 pertanyaan uji saya. Kemudian, saya menambahkan cross-encoder reranker untuk meningkatkan presisi.

Teorinya sederhana:

  • Tahap 1: Gunakan retrieval cepat untuk mendapatkan sekumpulan kandidat yang luas.
  • Tahap 2: Gunakan reranker cerdas untuk memilih yang terbaik.

Implementasinya hanya memakan waktu 20 menit. Namun, hal itu langsung membuat 2 dari 19 pengujian saya gagal.

Kegagalan tersebut terjadi karena format data. Data saya berisi chunk tabular yang padat seperti ini: "Company: Zentara Robotics | CEO: Iris Kallas | Employees: 287"

Model cross-encoder dilatih menggunakan paragraf bahasa alami. Ketika ia melihat baris tabel, ia memberikan skor yang sangat rendah. Ia menganggap chunk tersebut tidak relevan.

Hybrid retrieval berhasil menemukan jawabannya, tetapi reranker justru membuangnya.

Saya mencoba 7 cara berbeda untuk memperbaikinya:

  • Menggunakan pool kandidat yang lebih besar.
  • Mencampur skor dari reranker dan retriever.
  • Menggunakan rank fusion.

Tidak ada satu pun yang berhasil. Skor reranker sangat negatif sehingga menutupi segalanya. Model tersebut tidak hanya memberikan peringkat yang lebih rendah, tetapi secara aktif menolak format tabel tersebut.

Saya berhenti mencoba memperbaiki matematikanya dan beralih mengubah strukturnya.

Alih-alih membiarkan reranker memutuskan segalanya, saya melindungi hasil terbaik saya. Saya menggunakan strategi "guaranteed slot":

  • Jika Anda menginginkan 3 hasil teratas, pertahankan 2 hasil teratas dari tahap pertama.
  • Gunakan reranker hanya untuk memilih hasil ke-3.

Hal ini memastikan hasil pencarian hybrid tetap ada dalam daftar akhir. Reranker hanya meningkatkan kualitas slot yang tersisa.

Hasilnya: 19/19 pengujian berhasil.

Pelajaran yang dipetik:

  • Reranker bukanlah peningkatan instan. Mereka dapat merusak performa pada data terstruktur atau tabular.
  • Set evaluasi Anda adalah jaring pengaman Anda. Tanpa 19 pengujian saya, saya pasti sudah merilis sistem yang rusak.
  • Lindungi apa yang sudah berfungsi. Jika retrieval tahap pertama Anda sudah bagus, jangan biarkan reranker menimpanya.

Bangun retriever yang kuat sebelum Anda menggunakan reranker.

Sumber: https://dev.to/santanu_mohanta_29/i-added-a-reranker-to-my-rag-pipeline-it-broke-everything-then-i-fixed-it-1c9i

Komunitas pembelajaran opsional: https://t.me/GyaanSetuAi