Recherche hybride et reranking

IA / LLM 🔴 Senior

Définition

La recherche hybride combine un signal lexical (BM25 ou vecteurs creux, bon sur les termes exacts : références, noms propres) et un signal sémantique (vecteurs denses), puis fusionne les listes, souvent par Reciprocal Rank Fusion (RRF). Le reranking est une seconde passe : un modèle cross-encoder (bge-reranker-v2-m3, cohere-rerank-4-fast, rerank-2.5 de Voyage) rescorre les k premiers résultats pour la requête et renvoie un ordre plus précis.

Analogie

Un recruteur qui fait d'abord une présélection large sur mots-clés et sens, puis relit finement les dix meilleurs CV.

Exemple de code

-- RRF en SQL : fusion d'un top-20 plein texte et d'un top-20 vectoriel
WITH lex AS (
  SELECT id, row_number() OVER (ORDER BY ts_rank(tsv, q) DESC) AS r
  FROM chunks, plainto_tsquery('french', $1) q WHERE tsv @@ q LIMIT 20),
sem AS (
  SELECT id, row_number() OVER (ORDER BY embedding <=> $2::vector) AS r
  FROM chunks LIMIT 20)
SELECT c.id, c.content,
       COALESCE(1.0/(60+lex.r),0) + COALESCE(1.0/(60+sem.r),0) AS rrf
FROM chunks c LEFT JOIN lex USING (id) LEFT JOIN sem USING (id)
WHERE lex.id IS NOT NULL OR sem.id IS NOT NULL
ORDER BY rrf DESC LIMIT 10;   -- puis reranker ces 10 avant le prompt

Cas d'usage

Corpus techniques avec codes produits, numéros de version, jargon : la sémantique seule rate les correspondances exactes.

Anti-pattern

Envoyer les 50 premiers résultats bruts au LLM au lieu de reranker et n'en garder que 5 : bruit et coût.
#ia#rag#postgresql

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre