qdrant-hybrid-search-combining

À utiliser quand quelqu'un demande « RRF ou DBSF ? », « comment combiner sparse et dense », « comment combiner les scores de plusieurs recherches ? », « fusion personnalisée », ou « la fusion ne produit pas de bons résultats »

npx skills add https://github.com/qdrant/skills --skill qdrant-hybrid-search-combining

Fusion des résultats de préfetch

La requête externe fusionne les listes classées de candidats de tous les préfetches parallèles en une seule liste classée de résultats. Les méthodes de fusion diffèrent selon qu'elles utilisent le rang, le score ou directement les représentations vectorielles des candidats (leur similarité avec la requête externe) et selon que le score final incorpore les métadonnées du payload. Toutes les méthodes supportent les structures de préfetch plates (une étape de fusion) et imbriquées (multi-étapes).

Les scores ne sont pas comparables d'un préfetch à l'autre & vous voulez une baseline simple

À utiliser quand : les recherches produisent des scores sur des échelles différentes, comme BM25 et cosinus sur des embeddings denses.

RRF

  • RRF (Reciprocal Rank Fusion) — basé sur le rang, ignore l'ampleur des scores, un bon défaut par lequel commencer.
  • Ajustez k pour contrôler la sensibilité du rang dans la fusion RRF.
  • Ajoutez des poids par préfetch quand une recherche doit dominer, en utilisant Weighted RRF. Les poids doivent être personnalisés par collection et distributions de scores des retrievers !

DBSF

  • DBSF (Distribution-Based Score Fusion) — normalise les distributions de scores par préfetch avant de les fusionner, utilise pour cela la moyenne ± 3 déviations sur la liste des scores du préfetch au lieu du min-max. Évitez de vous fier aux scores absolus résultants, car les scores en DBSF sont normalisés par préfetch (c'est-à-dire par liste de résultats de recherche récupérée) et peuvent être incomparables entre les requêtes.

Fusion personnalisée requise

À utiliser quand : la récence, la popularité ou d'autres valeurs de payload doivent affecter le classement fusionné aux côtés des scores des candidats ou vous avez besoin d'une fusion personnalisée.

Avec formula query, accédez au score de chaque préfetch et, si souhaité, aux valeurs des champs de payload.

Si vous voulez implémenter une fusion personnalisée sur le score de chaque préfetch :

  • Utilisez la décroissance ou toute autre expression disponible pour normaliser les distributions de scores avant de les fusionner.
  • Les paramètres de ces expressions doivent être basés sur les distributions de scores de la collection & du retriever (par exemple, en ajustant ces paramètres sur un sous-ensemble de requêtes réelles).
  • Formula query ne peut pas fournir les rangs pour les fusions personnalisées.

Bon classement des candidats fusionnés requis et prêt à dépenser plus de ressources

À utiliser quand : vous voulez utiliser la similarité entre la requête et les représentations vectorielles des candidats comme combineur et classeur simultané des préfetches. Plus lourd en ressources que les fusions basées sur score/rang, mais peut être nécessaire en raison des exigences du cas d'usage ou du besoin d'une haute précision top-K des résultats (quand les préfetches parallèles ont globalement un bon rappel des candidats récupérés).

Vous pouvez utiliser n'importe quel type de vecteur comme requête externe sur les préfetches, pour effectuer la fusion côté serveur en une seule requête QueryAPI : sparse, dense, multivecteur. Pour cela, les mêmes types de représentations vectorielles pour les documents doivent être stockés comme vecteurs nommés par point.

Au lieu d'utiliser la fusion côté client via cross-encoders, une option populaire est la fusion basée sur les modèles Late interaction, via le re-ranking sur multivecteurs (par ex. ColBERT pour le texte, ColPali et ColQwen pour les images).

  • La plus précise mais avec la plus grande utilisation de calcul/ressources.
  • Configurez les multivecteurs utilisés pour la fusion via le re-ranking avec HNSW désactivé comme dans le tutoriel Hybrid Search with Reranking.

Ce qu'il ne faut PAS faire

  • Utiliser la fusion pondérée linéaire sur des plages de scores incomparables. Pourquoi pas.
  • Utiliser des poids "au feeling" dans RRF pondéré. Les poids doivent être affinés par dataset et pipelines de récupération.
  • Choisir un type de fusion sans expériences comparatives.
  • Utiliser les multivecteurs Late interaction pour la fusion sans évaluer les alternatives moins coûteuses, par exemple MUVERA. Plus d'informations dans le cours de recherche multi-vecteur Qdrant

Skills similaires