Retour à l'accueil

Recherche hybride Manticore : BM25 + KNN

La recherche hybride dans Manticore Search combine BM25 et KNN en utilisant RRF pour une pertinence optimale. Adaptée à RAG, support et e-commerce. Exemples de code et paramètres fournis.

Recherche hybride dans Manticore : RRF et exemples
Advertisement 728x90

Recherche hybride dans Manticore Search : Combiner BM25 et KNN

La recherche hybride dans Manticore Search combine la recherche textuelle BM25 et la recherche vectorielle KNN en une seule requête. Cela permet de prendre en compte simultanément les mots-clés exacts et la similarité sémantique. Pour une requête comme "chaussures de course pas chères", BM25 fournira des correspondances basées sur les tokens, tandis que KNN capturera le sens de phrases telles que "chaussures confortables pour le jogging".

La méthode utilise la Fusion de Rangs Réciproques (RRF) pour fusionner les listes classées. Les documents bien positionnés dans l'une ou l'autre recherche sont prioritaires dans le classement final.

Avantages de l'approche hybride

La recherche textuelle est efficace pour les termes rares, les références produits et les codes d'erreur. La recherche vectorielle capture les synonymes et le langage naturel, car les embeddings de concepts liés sont positionnés proches dans l'espace vectoriel.

Google AdInline article slot

Faiblesses de chaque méthode :

  • BM25 a du mal avec les synonymes.
  • KNN ignore les identifiants exacts sans signification sémantique.

La récupération hybride améliore le rappel pour les requêtes mixtes, minimisant le besoin d'une logique complexe.

Cas d'utilisation

La recherche hybride est pertinente dans les scénarios suivants :

Google AdInline article slot
  • Requêtes avec intention et détails, par exemple erreur python 403 forbidden — le code d'erreur via BM25, la description via KNN.
  • Pipelines RAG pour les LLM — alimenter les extraits de texte les plus pertinents.
  • Catalogues avec données structurées (modèles de produits) et non structurées (descriptions).
  • Modèles d'utilisateurs imprévisibles — phrases exactes ou langage descriptif.

Dans l'e-commerce, la recherche hybride traite en parallèle les noms, descriptions et embeddings visuels.

Mécanisme RRF

RRF agrège les rangs sans normaliser les scores. Formule : 1 / (rank_constant + rang). Par défaut rank_constant=60.

Exemple de fusion des 3 premiers :

Google AdInline article slot

| Document | Rang BM25 | Rang KNN | Score RRF |

|----------|-----------|----------|-----------|

| Doc A | 1 | 2 | 0.0325 |

| Doc C | 3 | 1 | 0.0323 |

| Doc B | 2 | - | 0.0161 |

| Doc D | - | 3 | 0.0159 |

Doc A mène grâce à ses bonnes positions dans les deux listes. RRF est préférable à la fusion basée sur les scores car elle ne nécessite pas d'étalonnage d'échelle.

Les sous-requêtes (MATCH et KNN) s'exécutent en parallèle ; les filtres s'appliquent à toutes.

Exemple pratique avec des bases de connaissances

Dans les bases de données d'assistance, requête "Impossible de se connecter au serveur" + code d'erreur E-5020.

Résultats KNN :

| # | Titre | Distance |

|---|-------|----------|

|1| E-5030 : DNS | 0.572 |

|2| E-2091 : Timeout | 0.583 |

|3| E-5020 : SSL | 0.605 |

Hybride avec MATCH('E-5020') et KNN :

SELECT titre, hybrid_score()
FROM articles_assistance
WHERE knn(embedding, 'impossible de se connecter au serveur')
  AND MATCH('E-5020')
LIMIT 5
OPTION fusion_method='rrf';

| # | Titre | Score hybride |

|---|-------|--------------|

|1| Erreur E-5020 : Incompatibilité de certificat SSL | 0.032 |

|2| E-5030 | 0.016 |

|3| E-2091 | 0.016 |

E-5020 passe en première place : BM25 capture le code exact, KNN capture le contexte.

Exécuter une recherche hybride

Mode automatique avec hybrid_match() :

SELECT id, hybrid_score()
FROM produits
WHERE hybrid_match('chaussures de course');

API JSON :

POST /search
{
  "table": "produits",
  "hybride": { "requête": "chaussures de course" }
}

Manticore génère les embeddings, effectue les recherches et fusionne les résultats.

Contrôle explicite :

SELECT id, hybrid_score()
FROM produits
WHERE match('chaussures de course')
  AND knn(embedding, (0.12, 0.45, 0.78, ...))
OPTION fusion_method='rrf';

Métriques disponibles : hybrid_score(), weight() (BM25), knn_dist().

Paramètres de fusion

  • rank_constant : dominance des premières positions (des valeurs plus basses augmentent l'accent).
  • fusion_weights : poids des sous-requêtes, par exemple (texte=0.5, knn=0.3).
  • window_size : volume des résultats intermédiaires.

KNN multiples :

SELECT id, hybrid_score()
FROM produits
WHERE match('chaussures de course') AS texte
  AND knn(title_vec, (0.12, 0.45, ...)) AS title_sim
  AND knn(image_vec, (0.88, 0.21, ...)) AS image_sim
OPTION fusion_method='rrf',
       fusion_weights=(texte=0.5, title_sim=0.3, image_sim=0.2);

Points clés à retenir

  • La recherche hybride distribue les signaux : identifiants via BM25, signification via KNN.
  • RRF assure une fusion stable sans étalonnage.
  • Prise en charge de multiples espaces vectoriels pour les données multimodales.
  • L'exécution parallèle minimise la latence.
  • La génération automatique d'embeddings simplifie l'intégration.

— Editorial Team

Advertisement 728x90

Lire ensuite