RousselTMLEARNING

Observabilité

Recherche vectorielle et RAG avec Elasticsearch : dense_vector, kNN, recherche hybride et RRF

Construire une recherche sémantique avec Elasticsearch : embeddings, champ dense_vector, recherche kNN, semantic_text et inférence, recherche hybride avec Reciprocal Rank Fusion, et RAG avec un LLM.

1. Vecteurs et kNN #

Chercher par le sens.

Mapping et requête #

PUT docs
{ "mappings": { "properties": {
    "title":   { "type": "text", "analyzer": "french" },
    "content": { "type": "text", "analyzer": "french" },
    "content_vector": { "type": "dense_vector", "dims": 384, "index": true, "similarity": "cosine" } } } }

GET docs/_search
{ "knn": { "field": "content_vector", "query_vector": [0.12, -0.03, "..."], "k": 10, "num_candidates": 100 },
  "_source": [ "title" ] }

Les embeddings sont calculés par un modèle (dans votre application, ou dans Elasticsearch via l'API d'inférence et le type semantic_text, qui gère découpage et vectorisation automatiquement).

2. Recherche hybride #

Le meilleur des deux.

RRF #

Recherche hybride BM25 + kNN fusionnée par RRF
GET docs/_search
{
  "retriever": { "rrf": {
    "retrievers": [
      { "standard": { "query": { "match": { "content": "réinitialiser le mot de passe" } } } },
      { "knn": { "field": "content_vector", "query_vector": [0.12, -0.03, "..."], "k": 20, "num_candidates": 100 } }
    ],
    "rank_window_size": 50
  } },
  "size": 5
}
  • BM25 excelle sur les termes exacts (codes d'erreur, noms de produits) ; le vectoriel sur les reformulations.
  • Reciprocal Rank Fusion combine les classements sans avoir à calibrer des scores incomparables.
  • Pour un RAG, les 3 à 5 meilleurs passages sont envoyés au LLM avec la question, en citant leurs sources.
À savoir : Certaines fonctionnalités dépendent de la version et du niveau de licence (Basic, Platinum, Enterprise) : vérifiez-les dans la documentation et la page des abonnements Elastic avant de les utiliser en production.

Articles liés

Architecture distribuée Elasticsearch : rôles des nœuds, shards, répliques et allocation

Comprendre le fonctionnement distribué d'Elasticsearch : rôles des nœuds, nœuds master et quorum, cluster sta…

Mappings et analyse de texte Elasticsearch : types de champs, analyseurs et mapping dynamique

Maîtriser les mappings Elasticsearch : types de champs (text, keyword, numériques, date, ip, nested), multi-f…

Ingestion Elasticsearch : Bulk API, ingest pipelines, enrich et reindex

Ingérer et transformer des données dans Elasticsearch : Bulk API, ingest pipelines et processeurs (grok, diss…

Pour aller plus loin