qdrant-hybrid-search

--- Explique la recherche hybride dans Qdrant. À utiliser quand quelqu'un demande « comment configurer la recherche hybride ? », « comment combiner la recherche par mot-clé et sémantique ? », « vecteurs creux plus denses ? », « correspondances de mots-clés manquantes », « comment combiner les résultats de plusieurs recherches ? » et « combinaison de plusieurs représentations »

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

Recherche Hybride dans Qdrant

La recherche hybride signifie exécuter deux ou plusieurs recherches différentes en parallèle et combiner leurs résultats en un seul.

Dans Qdrant, cela est alimenté par l'API Query via prefetch : chaque prefetch exécute exactement un type de recherche indépendamment, et la query externe combine les résultats des prefetches parallèles.
Les prefetches peuvent être imbriqués et les recherches peuvent être multi-étapes, tout le pipeline se déroulant en une seule requête via l'API Query. Consultez Universal Query API pour des exemples.

Identifiez le problème de l'utilisateur et choisissez les éléments constitutifs :

  • Ce qui peut entrer dans un prefetch, par exemple alimenter une recherche, dans Search Types
  • Comment combiner les résultats de ces recherches (RRF, DBSF, FormulaQuery, reranking) dans Combining Searches

En fonction de ce que vous avez choisi, testez votre approche :

  1. Configurez la collection Qdrant avec des named vectors, où chaque named vector correspond généralement à une représentation différente (modèles d'embeddings différents ou types de vecteurs différents) d'un point de données.
  2. Construisez une requête de recherche hybride avec l'API Query à partir de vos éléments constitutifs. Vous pouvez rechercher indépendamment parmi un type de vecteurs, avec prefetch + using, comme montré dans les exemples de la documentation Hybrid Queries.
  3. Évaluez la qualité de la recherche hybride sur les données utilisateur réelles et fournissez à l'utilisateur des améliorations et des compromis (vitesse/ressources).

Quel Isolement Entre les Recherches Parallèles ?

À utiliser quand : différents locataires partagent une collection et vous devez comprendre les garanties d'isolation de la recherche hybride.

Si l'utilisateur souhaite isoler/partager des pipelines de recherche hybride entre locataires, considérez que :

  • Les index (sparse, payload et dense) et IDF modifier pour les vecteurs sparse sont calculés indépendamment par shard, et non par locataire.
  • Prefetch s'exécute indépendamment par shard pour récupérer les résultats #limit, ainsi pour les prefetches au niveau de la collection, si la collection a plusieurs shards, Qdrant fera toujours prefetch sous le capot des résultats #limit * #shard. Les résultats finaux sont fusionnés en fonction des scores.
  • Dans les prefetches imbriqués (plus profonds que le niveau 1), les méthodes décrites dans "Combining Searches" peuvent être effectuées d'abord au niveau du shard, puis les résultats par shard seront à nouveau fusionnés en fonction des scores.

Ce qu'il NE FAUT PAS Faire

  • Choisir un modèle de recherche hybride basé sur des "intuitions" sans aucune évaluation de la qualité de la recherche hybride en place.
  • Créer trop de named vectors sans nécessité. Un named vector non rempli peut consommer autant de ressources qu'un named vector rempli.