Pourquoi ce sujet est important
La recherche vectorielle comprend les formulations proches, tandis que BM25 retrouve précisément noms, codes et termes rares. La recherche hybride de Weaviate combine ces signaux. Son efficacité dépend cependant du réglage, du corpus et de l’évaluation.
Comprendre les deux signaux
BM25 classe selon les termes du document et de la requête. Le vecteur classe selon la proximité sémantique. Une requête “contrat AX-204” a besoin du code exact ; une requête reformulée bénéficie du vecteur. La combinaison améliore souvent la robustesse.
Régler alpha et fusion
Alpha pondère la part vectorielle et lexicale selon l’API utilisée. Une valeur extrême revient à privilégier un seul signal. Les méthodes de fusion combinent rangs ou scores normalisés. Testez plusieurs valeurs sur un jeu étiqueté plutôt que de choisir 0,5 par habitude.
Préparer les données
Un bon chunking conserve titres, sections et identifiants utiles. Choisissez les propriétés indexées lexicalement et la vectorisation. Stockez langue, source, tenant, droits, date et version d’embedding. Les métadonnées permettent filtrage, explication et suppression.
Ajouter les filtres
Appliquez tenant, droits, type et période au niveau de la requête. Vérifiez leur interaction avec la recherche hybride et le nombre de candidats. L’autorisation ne doit jamais dépendre du score ou d’une décision du modèle.
Évaluer
Constituez des requêtes navigationnelles, factuelles et sémantiques. Mesurez recall@k, MRR ou nDCG, puis la qualité de la réponse RAG. Analysez séparément les requêtes avec identifiants exacts et celles en langage naturel.
Reranker si nécessaire
Un reranker peut reclasser les premiers candidats avec une compréhension plus fine. Utilisez-le seulement si le gain mesuré compense latence et coût. Le retrieval doit déjà fournir des candidats pertinents.
Tableau de décision
| Type de requête | Signal utile | Exemple |
|---|---|---|
| Identifiant exact | BM25 | INC-4821 |
| Reformulation | Vecteur | Comment annuler mon contrat ? |
| Mixte | Hybride | Erreur OAuth sur API mobile |
| Très ambiguë | Hybride + reranker | Problème de connexion |
Exemple concret
Une base de support contient noms de produits, codes d’erreur et descriptions. Le vectoriel retrouve des symptômes proches mais rate certains codes. BM25 retrouve les codes mais pas les paraphrases. Après évaluation, une pondération hybride améliore le rappel, puis un reranker réduit les faux positifs parmi les vingt premiers résultats.
Les erreurs fréquentes
- choisir alpha sans jeu d’évaluation
- vectoriser des chunks sans titres ni contexte
- oublier d’indexer les propriétés lexicales utiles
- appliquer les droits après envoi au modèle
- ajouter un reranker pour masquer un mauvais corpus
- mélanger des versions d’embedding
Checklist de mise en production
- [ ] Jeu de requêtes étiqueté
- [ ] Baseline BM25 et vectorielle mesurée
- [ ] Alpha et fusion testés
- [ ] Filtres et droits appliqués
- [ ] Version d’embedding stockée
- [ ] Latence p95 mesurée
- [ ] Réindexation préparée
FAQ
Quelle valeur alpha choisir ?
Celle qui maximise vos métriques sur vos requêtes. Il n’existe pas de valeur universelle.
Hybride remplace-t-il un reranker ?
Pas nécessairement. La fusion crée de bons candidats ; le reranker peut affiner les premiers résultats.
Faut-il vectoriser tous les champs ?
Non. Vectorisez le contenu sémantiquement utile et conservez certains champs pour recherche lexicale ou filtres.
Comment gérer plusieurs langues ?
Testez l’embedding, la tokenisation BM25 et les requêtes par langue ; une configuration unique peut produire des écarts.