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.
Optional learning community: https://t.me/GyaanSetuAi
