Saya Menambah Reranker ke dalam Pipeline RAG Saya — Ia Merosakkan Segalanya

Saya menambah reranker ke dalam pipeline RAG saya. Ia serta-merta merosakkan ujian saya.

Dalam versi 2, saya menggunakan hybrid retrieval dengan FAISS dan BM25. Ia melepasi kesemua 19 soalan ujian saya. Kemudian, saya menambah cross-encoder reranker untuk meningkatkan ketepatan.

Teorinya mudah:

  • Peringkat 1: Gunakan retrieval yang pantas untuk mendapatkan set calon yang luas.
  • Peringkat 2: Gunakan reranker yang pintar untuk memilih yang terbaik.

Ia mengambil masa 20 minit untuk dilaksanakan. Ia serta-merta gagal dalam 2 daripada 19 ujian saya.

Kegagalan itu berlaku disebabkan format data. Data saya mengandungi chunk berbentuk jadual yang padat seperti ini: "Company: Zentara Robotics | CEO: Iris Kallas | Employees: 287"

Model cross-encoder dilatih menggunakan perenggan bahasa tabii. Apabila ia melihat baris jadual, ia memberikan skor yang sangat rendah. Ia menganggap chunk tersebut tidak relevan.

Hybrid retrieval menemui jawapannya, tetapi reranker membuangnya.

Saya telah mencuba 7 cara berbeza untuk membetulkannya:

  • Menggunakan kumpulan calon (candidate pool) yang lebih besar.
  • Mencampurkan skor daripada reranker dan retriever.
  • Menggunakan rank fusion.

Tiada satu pun yang berjaya. Skor reranker adalah terlalu negatif sehingga ia mengatasi segala-galanya yang lain. Model tersebut bukan sekadar memberikan ranking yang lebih rendah. Ia secara aktif menolak format jadual tersebut.

Saya berhenti cuba membetulkan matematik dan menukar strukturnya.

Daripada membiarkan reranker menentukan segalanya, saya melindungi keputusan terbaik saya. Saya menggunakan strategi "guaranteed slot":

  • Jika anda mahukan 3 keputusan teratas, kekalkan 2 teratas daripada peringkat pertama.
  • Gunakan reranker hanya untuk memilih keputusan ke-3.

Ini memastikan keputusan carian hybrid kekal dalam senarai akhir. Reranker hanya menambah baik slot yang berbaki.

Hasilnya: 19/19 ujian lulus.

Pengajaran yang diperoleh:

  • Reranker bukanlah peningkatan segera. Ia boleh menjejaskan prestasi pada data berstruktur atau berbentuk jadual.
  • Set penilaian anda adalah jaring keselamatan anda. Tanpa 19 ujian saya, saya pasti telah melancarkan sistem yang rosak.
  • Lindungi apa yang berfungsi. Jika retrieval peringkat pertama anda sudah baik, jangan biarkan reranker mengatasinya.

Bina 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

Komuniti pembelajaran pilihan: https://t.me/GyaanSetuAi