Quel est l'objectif principal de combiner une recherche sémantique (Vector Index) et une recherche lexicale (BM25) ?	Améliorer la précision du pipeline RAG en créant une approche hybride.
Quel rôle joue la classe `retriever` dans l'architecture de recherche ?	Elle enveloppe les différents index de recherche et est responsable de l'orchestration et de la fusion des résultats.
Quelle condition doit remplir chaque implémentation d'index (Vector Index, BM25) pour être facilement intégrée dans le `retriever` ?	Elles doivent posséder une API publique presque identique, notamment les méthodes `add document` et `search`.
Quelle technique est utilisée pour fusionner les résultats provenant de méthodologies de recherche différentes ?	La fusion par rang réciproque (Reciprocal Rank Fusion - RRF).
Quelle est la première étape pour appliquer la fusion par rang réciproque (RRF) ?	Rassembler tous les résultats de recherche et leurs rangs respectifs dans un tableau unique.
Comment est calculé le score pour un rang $r$ dans la formule de RRF ?	Le score est calculé par la formule $1 / (1 + r)$.
Quelle est l'étape finale après avoir calculé les scores via RRF ?	Trier le tableau des résultats en fonction du score, du plus grand au plus petit.
Quel avantage permet de concevoir chaque index de recherche avec une API cohérente ?	Cela permet d'ajouter facilement de nouvelles fonctionnalités de recherche sans modifier le `retriever`.
Quelles sont les deux fonctions principales du `retriever` lorsqu'il reçoit une requête utilisateur ?	Transmettre la requête à chaque index et fusionner les résultats reçus.
