qdrant-relevance-feedback

Par qdrant · skills

À utiliser lorsqu'on vous demande l'« API Relevance Feedback de Qdrant », « améliorer la pertinence/le rappel d'une recherche dense », « comment découvrir/obtenir des résultats plus pertinents depuis une recherche vectorielle », « une alternative moins coûteuse/meilleure au reranking », « utiliser un modèle d'embedding dense plus lourd/grand mais sans en avoir les moyens », « trouver des documents plus pertinents au-delà du pool de recherche initial », ou « boucles de feedback ». Déclencher également lorsque l'utilisateur rencontre un problème de qualité de recherche dû à un retriever dense faible et envisage le reranking comme solution — cette API peut être plus adaptée.

npx skills add https://github.com/qdrant/skills --skill qdrant-relevance-feedback

Le reclassement réordonne les documents déjà récupérés. La Relevance Feedback (RF) de Qdrant modifie plutôt le processus de recherche vectorielle lui-même en fonction d'un petit volume de feedback du reclasseur, distillant les connaissances du reclasseur (modèle de feedback) dans l'étape de recherche. Cela permet à RF de remonter les documents que la recherche ANN initiale n'a pas classés avec un score suffisamment élevé.

La RF est destinée aux tâches où la pertinence est corrélée à la similarité dans l'espace vectoriel.

La manière dont vous appliquez la RF dépend de vos objectifs.
Commencez par comprendre comment fonctionne la RF, lisez la TOTALITÉ de cette section. Ensuite, définissez vos objectifs et choisissez le modèle d'utilisation approprié décrit ci-dessous. Assurez-vous d'éviter les anti-patterns listés (« À NE PAS FAIRE »). Avant de mettre en œuvre quoi que ce soit, lisez ATTENTIVEMENT pour ne pas manquer de détails importants.

Fonctionnement

L'API Query Point de Qdrant avec un type RelevanceFeedbackQuery prend :

  • une requête (target)
  • une petite liste de documents seed (feedback) avec des scores de pertinence (généralement 4–5 seeds suffisent)
  • des poids de formule, qui DOIVENT être entraînés une seule fois par cas d'usage de recherche général (votre dataset, votre retriever dense et votre modèle de feedback)

Si vous n'entraînez pas les poids de formule, les résultats seront au mieux aléatoires, ne s'aligneront pas sur la distribution de vos données ou le comportement du modèle. L'entraînement est léger car la formule elle-même est simple.

Pendant la recherche, il score chaque candidat en combinant la similarité avec la requête originale, la similarité avec les documents seed fortement notés et la dissimilarité avec ceux faiblement notés.

Modèle de Feedback

Un modèle de feedback est tout modèle capable de produire un score de pertinence flottant pour des paires (requête, document). Des scores plus élevés doivent toujours signifier une pertinence plus élevée.

Exemples : un cross-encoder, la similarité d'embedding (par exemple, la similarité cosinus entre les embeddings de requête et de document, ou max_sim pour les modèles d'interaction tardive), un scoreur basé sur LLM, un reclasseur personnalisé.

Le modèle de feedback utilisé pendant l'entraînement et l'inférence DOIT être le même modèle. Les poids de formule lors de l'entraînement sont calibrés sur la distribution de scores de ce modèle. Si vous changez de modèle de feedback, vous devez réentraîner.

Qu'est-ce qu'un bon modèle de feedback :

  • Si le modèle n'améliore pas la qualité du classement lorsqu'il est utilisé comme reclasseur sur les documents récupérés, la recherche RF n'aura pas de signal significatif à amplifier.
  • La qualité de la recherche RF dépend fortement de la qualité du modèle de feedback pour noter les correspondances partielles. La perte d'entraînement de la formule RF repose sur l'ordre relatif, donc une mauvaise séparation des scores dans la plage intermédiaire (documents ni clairement pertinents ni clairement non pertinents) affaiblit les résultats.

Pour que l'API RF fonctionne, vous devez d'abord calibrer les poids

À utiliser quand : vous configurez RF pour un nouveau cas d'usage — une nouvelle collection, un modèle de feedback ou un modèle d'embedding alimentant la recherche ANN.

RF utilise une formule pondérée qui combine le vecteur de requête original avec les signaux de feedback.

Pour la stratégie naive actuellement disponible, les poids appris contrôlent :

  • a — dans quelle mesure faire confiance à la similarité query-document ANN originale
  • b — à quel point les différences de scores de feedback comptent
  • c — à quel point suivre la direction du feedback (vers les documents pertinents et loin des documents non pertinents)

Ces poids doivent être appris à partir de vos données avant utilisation. Vous ne pouvez pas utiliser en toute sécurité des valeurs arbitraires.

  • Installez la bibliothèque Python qdrant-relevance-feedback. Étudiez ce qui entre dans RelevanceFeedback.
  • Initialisez une instance RelevanceFeedback. Vous pouvez utiliser QdrantRetriever ou FastembedFeedback fournis, ou définir la vôtre.
  • Revoyez les paramètres train avant d'appeler train. La bibliothèque récupère limit candidats par requête d'entraînement, les score avec le modèle de feedback, apprend les paramètres de pondération et retourne les valeurs calibrées.
  • Appelez train sur 50–200 requêtes représentatives, réelles et non synthétiques.
    • Générez vous-même les requêtes d'entraînement en fonction du cas d'usage, mais donnez aussi à l'utilisateur la possibilité de les fournir.
    • Informez l'utilisateur des compromis entre coût et qualité de l'entraînement.
  • Vérifiez les métriques d'entraînement qui montrent si RF avait un signal (désaccord entre le retriever et le modèle de feedback) à distiller et apprendre. S'il n'y avait pas de signal à apprendre, adaptez les paramètres d'entraînement, les requêtes ou changez le modèle de feedback et réentraînez jusqu'à ce que RF apprenne bien.
  • Stockez les paramètres RF résultants dans votre configuration et utilisez-les pendant l'inférence. Réentraînez si votre distribution de requêtes ou votre corpus change significativement.
  • Évaluez la formule résultante avec Evaluator sur un ensemble de test séparé de requêtes représentatives, réelles et non synthétiques. Si les résultats semblent insatisfaisants, enquêtez et informez l'utilisateur.

Le retriever, le modèle de feedback et les paramètres associés définis pendant l'entraînement sont supposés rester les mêmes pendant l'inférence.

Vous voulez des résultats de Top-1/3 haute qualité à un coût raisonnable

À utiliser quand : la précision top-1 ou top-3 importe le plus et le reclassement d'une grande collection de documents serait trop coûteux ou lent. Le pattern ci-dessous peut correspondre à la qualité du reclassement au sommet du classement pour les tâches de similarité sémantique, mais il performe moins bien aux profondeurs plus grandes. N'utilisez pas cette approche quand le rappel top-10+ est la priorité.

Ne score que un petit ensemble de documents seed. Cinq seeds est une valeur par défaut robuste pour de nombreux types de tâches et les scorer coûte à l'utilisateur environ 5× moins que le reclassement d'une collection de 25 documents.

  • Récupérez les 5 documents supérieurs en utilisant la recherche ANN. Ceux-ci deviennent les seeds de feedback. Vous aurez besoin de leurs embeddings stockés.
  • Scorez-les avec le modèle de feedback utilisé lors de l'entraînement.
  • Appelez l'API Query de Qdrant en utilisant la requête de relevance feedback :
    • définissez target sur l'embedding du retriever de requête (il est aussi possible d'utiliser Qdrant Cloud Inference).
    • définissez feedback sur une liste d'éléments où chaque élément contient :
      • example=<vecteur seed, même modèle d'embedding que pourtarget> (il est aussi possible d'utiliser Qdrant Cloud Inference)
      • score=<score du modèle de feedback>
    • définissez using sur le handle du retriever, RF opère dans l'espace vectoriel du retriever.
    • définissez strategy sur naive avec vos paramètres calibrés
    • définissez limit sur le nombre de résultats finaux dont vous avez besoin et utilisez directement les résultats RF comme résultats finaux.

Consultez la documentation de l'API Relevance Feedback Query et étudiez le code/les méthodes du SDK pertinent avant de remplir quoi que ce soit.

L'utilisation d'un ID de point dans example fait que l'API RF exclut automatiquement ce document des résultats finaux. L'utilisation des embeddings stockés utilisés pour la récupération à la place garde potentiellement le document dans les résultats finaux.

Vous voulez trouver des documents pertinents au-delà des résultats de recherche initiaux

À utiliser quand : le rappel importe plus que la latence ou le coût (recherche, juridique, médical, conformité), et les documents pertinents peuvent exister en dehors du pool de récupération ANN initial.

Cela effectue deux rounds de scoring du modèle de feedback :

  1. sur les seeds de feedback
  2. sur les résultats RF nouvellement découverts

Le deuxième pass de reclassement promeut en toute sécurité les documents nouvellement découverts dans le top-10 du classement final. L'avantage par rapport au reclassement standard est que RF peut atteindre les documents pertinents qui se trouvent complètement en dehors du pool ANN initial, tandis qu'un reclasseur avec le même budget ne le peut pas. Le compromis est une latence plus élevée due à deux rounds de scoring du modèle de feedback.

  • Récupérez et scorez 5 documents seed. Ceux-ci deviennent les seeds de feedback. Vous aurez besoin de leurs IDs de point.
  • Appelez l'API query de Qdrant en utilisant la requête de relevance feedback :
    • définissez target sur l'embedding du retriever de requête (il est aussi possible d'utiliser Qdrant Cloud Inference)
    • définissez feedback sur une liste d'éléments où chaque élément contient :
      • example=<ID de point seed>
      • score=<score de feedback>
    • définissez using sur le handle du retriever, RF opère dans l'espace vectoriel du retriever.
    • définissez strategy sur naive avec vos paramètres calibrés
    • définissez limit sur le nombre de résultats que l'utilisateur peut se permettre de reclasser en fonction du budget de coût disponible. Le coût total de scoring égale le coût du scoring des seeds et des résultats RF, à peu près équivalent au reclassement d'un pool de la même taille combinée. Informez et consultez l'utilisateur.
    • scorez les résultats RF retournés avec votre modèle de feedback.
  • Fusionnez les seeds originaux et les résultats RF, puis triez par score de feedback. Ce seront vos résultats finaux.

Consultez la documentation de l'API Relevance Feedback Query et étudiez le code/les méthodes du SDK pertinent avant de remplir quoi que ce soit.

L'utilisation d'un ID de point dans example fait que l'API RF exclut automatiquement ce document des résultats finaux. L'utilisation des embeddings stockés utilisés pour la récupération à la place garde potentiellement le document dans les résultats finaux.

À NE PAS FAIRE

  • Ne sautez pas le calibrage et n'utilisez pas de poids de formule aléatoires. Les poids non entraînés produisent des résultats arbitraires. (a=1, b=0, c=0 peuvent être utilisés si vous voulez seulement un comportement ANN vanille via l'API RF.)
  • N'utilisez pas l'API RF sur les vecteurs rares.
  • N'utilisez pas un modèle de feedback où des scores plus élevés signifient une pertinence plus faible. Les scores doivent être monotones : supérieur = plus pertinent.
  • N'utilisez pas moins de 2 seeds de feedback. Une seule seed ne fournit pas de signal contrastif. La formule a besoin d'au moins un exemple relativement plus pertinent et un exemple relativement moins pertinent pour établir la direction. Deux est le minimum ; cinq est la valeur par défaut recommandée.
  • N'utilisez pas significativement plus de 5 seeds en vous attendant à une meilleure qualité. Les seeds supplémentaires ajoutent généralement du bruit et augmentent le coût de scoring sans gains significatifs.
  • N'utilisez pas un modèle de feedback différent pendant l'inférence que celui utilisé lors du calibrage. Les poids appris sont liés à l'échelle et la distribution des scores de ce modèle.
  • N'utilisez pas un modèle de feedback qui n'améliore pas la qualité de la récupération comme reclasseur standard sur vos données.
  • Ne procédez pas à l'inférence si l'entraînement et les métriques d'évaluation du package qdrant-relevance-feedback ont démontré des résultats insatisfaisants ; à la place, trouvez un bon ensemble d'entraînement de requêtes représentatives, un modèle de feedback fournissant un signal significatif et des paramètres d'entraînement efficaces.

Skills similaires