J'ai ajouté un reranker à mon pipeline RAG — et cela a tout cassé
J'ai ajouté un reranker à mon pipeline RAG. Cela a immédiatement fait échouer mes tests.
Dans la version 2, j'utilisais la recherche hybride avec FAISS et BM25. Elle avait réussi mes 19 questions de test. Ensuite, j'ai ajouté un reranker cross-encoder pour améliorer la précision.
La théorie est simple :
- Étape 1 : Utiliser une recherche rapide pour obtenir un large ensemble de candidats.
- Étape 2 : Utiliser un reranker intelligent pour sélectionner les meilleurs.
L'implémentation a pris 20 minutes. Elle a immédiatement échoué à 2 de mes 19 tests.
L'échec est survenu à cause du format des données. Mes données contiennent des segments (chunks) denses et tabulaires comme celui-ci : "Company: Zentara Robotics | CEO: Iris Kallas | Employees: 287"
Le modèle cross-encoder a été entraîné sur des paragraphes en langage naturel. Lorsqu'il a vu une ligne de tableau, il lui a attribué un score très bas. Il a considéré que le segment était non pertinent.
La recherche hybride avait trouvé la réponse, mais le reranker l'a écartée.
J'ai essayé 7 méthodes différentes pour corriger cela :
- Utiliser un pool de candidats plus large.
- Combiner les scores du reranker et du retriever.
- Utiliser le rank fusion.
Aucune n'a fonctionné. Le score du reranker était si négatif qu'il l'emportait sur tout le reste. Le modèle ne se contentait pas de classer plus bas ; il rejetait activement le format tabulaire.
J'ai arrêté d'essayer de corriger les mathématiques et j'ai changé la structure.
Au lieu de laisser le reranker tout décider, j'ai protégé mes meilleurs résultats. J'ai utilisé une stratégie de « slot garanti » :
- Si vous voulez les 3 meilleurs résultats, conservez les 2 premiers de la première étape.
- Utilisez le reranker pour ne choisir que le 3e résultat.
Cela garantit que les résultats de la recherche hybride restent dans la liste finale. Le reranker n'améliore que les emplacements restants.
Le résultat : 19/19 tests réussis.
Leçons apprises :
- Les rerankers ne sont pas des améliorations instantanées. Ils peuvent nuire aux performances sur des données structurées ou tabulaires.
- Votre ensemble d'évaluation est votre filet de sécurité. Sans mes 19 tests, j'aurais déployé un système défectueux.
- Protégez ce qui fonctionne. Si votre recherche de première étape est bonne, ne laissez pas un reranker l'écraser.
Construisez un retriever solide avant de vous tourner vers un reranker.
Communauté d'apprentissage optionnelle: https://t.me/GyaanSetuAi
