Back to flin
flin

Recherche hybride de documents : BM25 + sémantique

Comment FLIN combine la recherche par mots-clés BM25 avec la recherche vectorielle sémantique pour un classement hybride de documents -- obtenir la précision de la correspondance exacte de mots-clés et le rappel de la recherche basée sur le sens.

Juste A. Gnimavo (Thales) & Claude | March 26, 2026 4 min flin
EN/ FR/ ES
flinsearchbm25semantichybrid

La recherche sémantique comprend le sens mais manque les termes exacts. Si un utilisateur cherche « error 504 » dans une base de connaissances, la recherche sémantique pourrait retourner des articles sur les timeouts de passerelle et les erreurs réseau mais les classer en dessous d'articles sur les erreurs HTTP en général. Le terme exact « 504 » n'est pas capturé dans l'embedding.

La recherche par mots-clés BM25 fait correspondre les termes exacts mais manque le sens. Chercher « how to fix slow database » avec BM25 trouve des articles contenant ces mots exacts mais manque un article intitulé « Optimizing Query Performance in PostgreSQL » -- qui est exactement ce dont l'utilisateur a besoin.

La recherche hybride combine les deux approches : BM25 pour la précision sur les termes exacts, recherche sémantique pour le rappel sur les concepts connexes. FLIN implémente cela comme une fonction hybrid_search() intégrée qui fusionne les résultats des deux méthodes en utilisant la fusion de rangs réciproques (Reciprocal Rank Fusion).

La fonction de recherche hybride

flinresults = hybrid_search("error 504 gateway timeout", {
    entity: DocumentChunk,
    text_field: "content",
    semantic_field: "content",
    limit: 10,
    bm25_weight: 0.4,
    semantic_weight: 0.6
})

La fonction effectue deux recherches en parallèle : une recherche BM25 pour la correspondance de mots-clés et une recherche sémantique pour la correspondance de sens. Les résultats sont fusionnés en utilisant la fusion de rangs réciproques pondérée (RRF).

Pourquoi la fusion de rangs réciproques

La RRF est préférée au calcul de moyenne simple des scores pour une raison critique : les scores BM25 et les scores de similarité cosinus sont sur des échelles complètement différentes. Un score BM25 de 15,7 et une similarité cosinus de 0,89 ne peuvent pas être moyennés de manière significative. La RRF normalise les deux classements sur une échelle commune en utilisant les positions de rang plutôt que les scores bruts.

Quand la recherche hybride gagne

La recherche hybride surpasse systématiquement chaque méthode seule dans trois scénarios :

Requêtes de termes exacts : BM25 identifie la correspondance exacte ; la sémantique ajoute des articles de dépannage connexes.

Requêtes conceptuelles : La sémantique fournit les résultats principaux ; BM25 booste ceux qui contiennent aussi des termes exacts.

Requêtes mixtes : Les deux méthodes contribuent. Les documents mentionnant les termes spécifiques ET discutant les concepts scorent le plus haut.

Réglage des poids

ApplicationPoids BM25Poids sémantiqueJustification
Recherche de code0,60,4Les identifiants exacts comptent
Documentation0,30,7Les concepts comptent plus que les mots exacts
E-commerce0,50,5Noms de produits et descriptions
Recherche juridique0,40,6Concepts avec termes spécifiques
Tickets de support0,30,7Les utilisateurs décrivent des problèmes

Performance

ComposantLatenceNotes
Recherche BM25 (100K docs)1-3 msRecherche dans l'index inversé
Recherche sémantique (100K docs)3-5 msPlus proches voisins approximatifs HNSW
Fusion RRF< 1 msCalcul de scores
Total recherche hybride5-10 msLes deux recherches s'exécutent en parallèle

La recherche hybride donne aux applications FLIN le meilleur des deux mondes : la précision de la correspondance par mots-clés pour les termes spécifiques et l'intelligence de la compréhension sémantique pour les requêtes conceptuelles.

Dans le prochain article, nous prenons du recul par rapport aux fonctionnalités spécifiques pour examiner la conception IA-first de FLIN -- les décisions philosophiques et pratiques qui rendent FLIN particulièrement adapté au développement assisté par IA.


Ceci est la partie 123 de la série « Comment nous avons construit FLIN », documentant comment un CEO à Abidjan et un CTO IA ont conçu et construit un langage de programmation à partir de zéro.

Navigation de la série : - [122] Découpage conscient du code pour le RAG - [123] Recherche hybride de documents : BM25 + sémantique (vous êtes ici) - [124] Conception d'un langage IA-first - [125] Analytique de recherche et mise en cache des résultats

Share this article:

Responses

Write a response
0/2000
Loading responses...

Related Articles

Thales & Claude deblo

Le jour où Déblo a refusé une bonne réponse — deux fois

Une trace de production a montré Déblo K12 rejetant deux fois de suite la bonne réponse d’un élève de Terminale. Huit heures d’analyse, quatre commits, une rotation A/B de modèles et un benchmark sur 6 modèles plus tard, le tuteur de maths était corrigé. Ce qui a cassé, ce que nous avons changé, et ce que l’échec surprenant de GPT-5.4-mini au test socratique nous a appris sur le choix des modèles pour l’IA éducative.

32 min May 3, 2026
debloclaude-opus-4.7claude-codemethodology +14
Thales & Claude deblo

Web Claude a trouvé le bug. Puis il a failli l’aggraver.

Comment un prompt vocal de 270 lignes pour le tuteur Ultravox de Deblo produisait la même phrase d’accueil scriptu00e9e à chaque appel. Web Claude a diagnostiqué le problème parfaitement, puis a prescrit une correction qui aurait doublé la taille du prompt avec des hooks backend inexistants. Le filtre qui a gardé le diagnostic et rejeté la prescription.

17 min Apr 28, 2026
debloclaude-opus-4.7methodologyprompt-engineering +7
Thales & Claude deblo

Pourquoi j’ai dû corriger Web Claude deux fois sur la stratégie de la page d’accueil de Deblo

Comment une conversation de 48 heures avec Web Claude a failli entraîner Deblo dans le piège généraliste « ChatGPT pour l’Afrique », et pourquoi la connaissance du marché par le fondateur a dû prendre le dessus sur les suggestions stratégiques de l’IA à deux reprises.

26 min Apr 26, 2026
debloclaude-opus-4.7methodologystrategy +6