A/B Test du Pipeline RAG

Warning

Avant de commencer, assurez-vous d'avoir une collection avec des documents ingérés et d'avoir testé quelques requêtes manuellement pour avoir une base de comparaison.

Le test A/B vous permet de comparer différentes configurations de votre pipeline RAG pour trouver la combinaison optimale de fonctionnalités. Testez l'impact de chaque paramètre sur la qualité de vos réponses.

Qu'est-ce que le test A/B pour RAG ?

Le test A/B pour RAG consiste à exécuter la même requête avec deux configurations de pipeline différentes et à comparer les résultats. Cela vous permet d'identifier quelles fonctionnalités améliorent réellement la qualité de recherche pour vos données spécifiques.

Architecture du pipeline

Le pipeline RAG d'IgnitionRAG se compose de quatre étapes principales :

Requête → Amélioration de la requête → Recherche → Reranking → Résultats

1. Amélioration de la requête

Transforme la requête utilisateur pour améliorer la recherche : réécriture, expansion, HyDE, multi-query et extraction de filtres.

2. Recherche

Exécute la recherche vectorielle, BM25 ou hybride pour trouver les chunks les plus pertinents.

3. Reranking

Réordonne les résultats avec un modèle spécialisé (Jina ou LLM) pour améliorer la précision.

4. Résultats

Génère la réponse finale avec citations et références aux sources.

Fonctionnalités configurables

Le pipeline offre 11 fonctionnalités que vous pouvez activer ou désactiver individuellement :

hybridSearch

activé par défaut

Combine la recherche vectorielle (sémantique) et BM25 (lexicale) pour de meilleurs résultats. Le paramètre alpha contrôle la balance : 0 = BM25 seul, 1 = vectoriel seul, 0.7 = recommandé.

selfQuery

activé par défaut

Extrait automatiquement des filtres de métadonnées depuis la requête utilisateur. Par exemple, « documents de 2024 » génère un filtre sur la date.

queryRewriting

activé par défaut

Réécrit les requêtes ambiguës ou mal formulées pour améliorer la clarté. Transforme le langage conversationnel en requêtes de recherche précises.

queryExpansion

désactivé par défaut

Ajoute des synonymes et termes associés à la requête pour améliorer le rappel BM25. Utile pour les collections avec du vocabulaire varié.

hyde (Hypothetical Document Embeddings)

désactivé par défaut

Génère un document hypothétique qui répondrait à la question, puis utilise son embedding pour la recherche. Améliore significativement les requêtes sous forme de questions.

multiQuery

désactivé par défaut

Génère plusieurs variations de la requête et fusionne les résultats. Utile pour les questions complexes qui peuvent être interprétées de différentes façons.

reranking

activé par défaut

Réordonne les résultats avec Jina Reranker ou un LLM pour améliorer la précision. Le reranking est particulièrement efficace après une recherche hybride.

contextualRetrieval

désactivé par défaut

Ajoute un préfixe de contexte à chaque chunk lors de l'ingestion pour améliorer la compréhension hors contexte. Doit être activé avant l'ingestion.

citations

activé par défaut

Génère des citations inline [1], [2] dans les réponses avec références aux documents sources. Améliore la traçabilité et la confiance.

parallelEnhancement

activé par défaut

Exécute les améliorations de requête en parallèle au lieu de séquentiellement. Réduit la latence d'environ 60% sans impact sur la qualité.

dynamicFeatureSelection

désactivé par défaut

Active automatiquement les fonctionnalités selon le type de requête : questions → HyDE, requêtes complexes → multiQuery, requêtes courtes → queryExpansion, patterns de filtres → selfQuery.

API de configuration RAG

Chaque collection possède sa propre configuration RAG. Utilisez ces endpoints pour la gérer :

Récupérer la configuration

GET /api/collections/:id/rag-config

// Réponse :
// {
//   "features": {
//     "hybridSearch": true,
//     "selfQuery": true,
//     "queryRewriting": true,
//     "queryExpansion": false,
//     "hyde": false,
//     "multiQuery": false,
//     "reranking": true,
//     "contextualRetrieval": false,
//     "citations": true,
//     "parallelEnhancement": true,
//     "dynamicFeatureSelection": false
//   },
//   "hybrid": { "alpha": 0.7 }
// }

Mettre à jour la configuration

PUT /api/collections/:id/rag-config

{
  "features": {
    "hyde": true,
    "multiQuery": true
  }
}

Réinitialiser aux valeurs par défaut

DELETE /api/collections/:id/rag-config

Test A/B rapide

L'endpoint de test rapide permet de comparer deux configurations en une seule requête :

POST /api/collections/:id/rag-config/test

{
  "query": "Comment configurer l'authentification ?",
  "configA": {
    "features": { "hyde": false, "reranking": true }
  },
  "configB": {
    "features": { "hyde": true, "reranking": true }
  }
}

// Réponse :
// {
//   "resultA": { "answer": "...", "sources": [...], "latency": 1200 },
//   "resultB": { "answer": "...", "sources": [...], "latency": 1800 },
//   "comparison": {
//     "latencyDiff": "+50%",
//     "sourcesOverlap": 0.6
//   }
// }

API de test A/B complet

Pour des tests plus approfondis avec plusieurs requêtes, utilisez l'API A/B test dédiée :

Créer un test

POST /api/ab-tests

{
  "name": "HyDE vs baseline",
  "collectionId": "<collection-id>",
  "configA": { "features": { "hyde": false } },
  "configB": { "features": { "hyde": true } },
  "queries": [
    "Comment configurer l'auth ?",
    "Quels formats sont supportés ?",
    "Comment fonctionne le reranking ?"
  ]
}

Exécuter le test

POST /api/ab-tests/:id/run

// Exécute toutes les requêtes avec les deux configurations
// et stocke les résultats pour analyse

Voir les résultats

GET /api/ab-tests/:id

// Réponse avec résultats détaillés par requête,
// métriques de latence, overlap des sources,
// et recommandation automatique

Comprendre les résultats

Les résultats d'un test A/B incluent plusieurs métriques :

  1. Latence : temps de réponse de chaque configuration. Une latence plus faible est préférable à qualité égale.
  2. Overlap des sources : pourcentage de sources communes entre les deux configurations. Un faible overlap indique des résultats très différents.
  3. Qualité des réponses : comparez manuellement la pertinence et la complétude des réponses générées.
  4. Nombre de sources : vérifiez que la configuration retourne suffisamment de sources pertinentes.

Exemples pratiques

Voici deux comparaisons courantes pour optimiser votre pipeline :

HyDE activé vs désactivé

Testez l'impact de HyDE sur les requêtes sous forme de questions. HyDE améliore généralement les questions factuelles mais peut ajouter de la latence :

// Config A : sans HyDE (baseline)
{ "features": { "hyde": false } }

// Config B : avec HyDE
{ "features": { "hyde": true } }

// Résultat typique :
// - Questions factuelles : B gagne (+15% pertinence)
// - Requêtes par mots-clés : A gagne (latence -40%)

Recherche hybride vs vectorielle seule

Comparez la recherche hybride (vecteur + BM25) à la recherche vectorielle pure. La recherche hybride excelle quand vos documents contiennent des termes techniques précis :

// Config A : vectoriel seul
{ "features": { "hybridSearch": false } }

// Config B : hybride (recommandé)
{ "features": { "hybridSearch": true }, "hybrid": { "alpha": 0.7 } }

// Résultat typique :
// - Termes techniques : B gagne (+25% rappel)
// - Questions générales : résultats similaires

Prochaines étapes

Maintenant que vous savez comparer vos configurations, explorez les autres guides avancés pour aller plus loin.

Tip

Commencez par un test rapide (endpoint unique) avant de créer un test A/B complet. Testez une seule fonctionnalité à la fois pour isoler son impact.

Enrichissement LLM