Quel est le rôle de la classe `Retriever` dans un système de recherche hybride ?	Elle enveloppe les différents index (ex: Vector Index, BM25) et gère le processus de recherche et de fusion des résultats.
Pourquoi est-il crucial que les index (Vector Index, BM25) possèdent une API publique similaire ?	Cela permet de les encapsuler facilement dans la classe `Retriever` et de les traiter de manière uniforme.
Quelle technique est utilisée pour fusionner les résultats provenant de différentes méthodologies de recherche ?	La Fusion de Rang Réciproque (Reciprocal Rank Fusion - RRF).
Décrivez brièvement le processus de la Fusion de Rang Réciproque (RRF).	On collecte les rangs de tous les résultats, on applique une formule de score (basée sur $1/(1+rank)$), puis on trie les résultats par score décroissant.
Quel est l'avantage principal de concevoir chaque index de recherche comme une classe séparée avec une API cohérente ?	Cela permet d'ajouter facilement de nouvelles fonctionnalités de recherche (nouveaux index) au pipeline hybride.
Qu'est-ce que le "rang" (rank) dans le contexte de la fusion des résultats ?	C'est la position de sortie d'un document dans le résultat d'un index spécifique (ex: rang 1, 2, 3).
Quel était l'objectif principal de l'approche hybride (combinaison Vector/BM25) ?	Améliorer la précision et la pertinence des résultats de recherche en combinant les forces de différentes techniques.
Quelles sont les deux méthodes de recherche mises en œuvre dans cet exemple ?	La recherche sémantique (Vector Index) et la recherche lexicale (BM25 Index).
