Dodałem reranker do mojego potoku RAG — i wszystko się posypało

Dodałem reranker do mojego potoku RAG. Natychmiast spowodowało to błędy w moich testach.

W wersji 2 używałem hybrydowego wyszukiwania (hybrid retrieval) z FAISS i BM25. Przeszedł on wszystkie 19 pytań testowych. Następnie dodałem reranker typu cross-encoder, aby poprawić precyzję.

Teoria jest prosta:

  • Etap 1: Użyj szybkiego wyszukiwania, aby uzyskać szeroki zestaw kandydatów.
  • Etap 2: Użyj inteligentnego rerankera, aby wybrać najlepsze wyniki.

Implementacja zajęła 20 minut. Natychmiast spowodowało to niepowodzenie w 2 z 19 testów.

Błąd wystąpił z powodu formatu danych. Moje dane zawierają gęste, tabelaryczne fragmenty (chunks), takie jak ten: "Company: Zentara Robotics | CEO: Iris Kallas | Employees: 287"

Model cross-encoder był trenowany na akapitach w języku naturalnym. Gdy napotkał wiersz tabeli, przyznał mu bardzo niski wynik. Uznał, że ten fragment jest nieistotny.

Hybrydowe wyszukiwanie znalazło odpowiedź, ale reranker ją odrzucił.

Próbowałem 7 różnych sposobów na naprawienie tego:

  • Użycie większej puli kandydatów.
  • Łączenie wyników (scores) z rerankera i retrievera.
  • Użycie rank fusion.

Żaden z nich nie zadziałał. Wynik z rerankera był tak niski, że przyćmił wszystko inne. Model nie tylko nadawał niższy ranking. On aktywnie odrzucał format tabelaryczny.

Przestałem próbować naprawiać matematykę i zmieniłem strukturę.

Zamiast pozwalać rerankerowi decydować o wszystkim, zabezpieczyłem moje najlepsze wyniki. Zastosowałem strategię „gwarantowanego miejsca” (guaranteed slot):

  • Jeśli chcesz 3 najlepsze wyniki, zachowaj 2 najlepsze z pierwszego etapu.
  • Użyj rerankera tylko do wybrania trzeciego wyniku.

To zapewnia, że wyniki hybrydowego wyszukiwania pozostaną na końcowej liście. Reranker poprawia jedynie pozostałe miejsca.

Wynik: 19/19 zaliczonych testów.

Wyciągnięte lekcje:

  • Rerankery nie są natychmiastowym ulepszeniem. Mogą pogorszyć wydajność w przypadku danych ustrukturyzowanych lub tabelarycznych.
  • Twój zestaw ewaluacyjny to Twoja siatka bezpieczeństwa. Bez moich 19 testów wypuściłbym wadliwy system.
  • Chroń to, co działa. Jeśli wyszukiwanie w pierwszym etapie jest dobre, nie pozwól, aby reranker je nadpisał.

Zbuduj solidny retriever, zanim sięgniesz po reranker.

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

Optional learning community: https://t.me/GyaanSetuAi