Passer au contenu principal
Dernière recherche :Quand le circuit se dissout →12 vindexes on Hugging Face
Demander une démo

Routage RAG — Une API, plusieurs architectures

RAG Routing

Un seul endpoint d'API. Dix architectures de récupération prises en charge. Le routeur apprend de votre historique de trafic et oriente chaque nouvelle question vers le backend le plus susceptible d'y répondre correctement — au coût le plus bas qui satisfait encore votre seuil de qualité.

Parlons-en Lire l'analyse approfondie →

Les trois architectures, conceptuellement

La plupart des systèmes RAG en production livrent une seule architecture de récupération et considèrent l'affaire close. Nous livrons un routeur qui choisit parmi des stacks architecturalement distincts — le bon choix est rarement le même pour toutes les requêtes de votre corpus.

Tier 1 · RAG à vecteurs plats
FAST & CHEAP
embed → cosine top-k
→ stuff context
→ generate

Idéal pour

Recherches de faits ponctuels, requêtes en forme de FAQ, questions « qu'est-ce que X ? » sur des corpus à découpage plat.

Latence :< 300 ms p95Coût :centimes par requêteBackends :Qdrant · Cloudflare · Vertex · MongoDB · Redis
Tier 2 · Hybride + Rerank
BALANCED
BM25 lexical + dense vector
→ Reciprocal Rank Fusion
→ cross-encoder reranker
→ generate

Idéal pour

Requêtes où les signaux lexicaux et sémantiques divergent — codes, noms propres, acronymes, vocabulaire technique, chaînes d'erreur.

Latence :~ 800 msCoût :toujours faibleAujourd'hui :nœud de workflow composable · routage automatique au roadmap
Tier 3 · Page-Index + Agent
DEEP & DELIBERATE
hierarchical TOC tree built
at ingest → agent walks tree
→ opens / reads sections
→ generate

Idéal pour

Lecture multi-saut de longs documents structurés — contrats juridiques, 10-K financiers, PDF techniques où le contexte s'étend sur des sections non adjacentes.

Latence :plusieurs secondesCoût :le plus élevé — mais seulement quand c'est nécessaireBackend :PageIndex · RAPTOR · LightRAG · neo4j-hybrid

Comment le routeur décide réellement

La plupart des routeurs RAG publiés classifient la requête d'emblée selon sa complexité. Le nôtre, non. Nous utilisons un routage appris : chaque requête réussie est stockée avec le backend qui y a répondu, et les nouvelles requêtes sont rapprochées de cet historique par similarité d'embedding.

L'algorithme de lookup — ce qui s'exécute à chaque requête

  1. Hacher la question en SHA-256, tronqué en clé de 16 caractères, puis interroger le store de routage par client dans Cloudflare KV à la recherche d'une correspondance exacte antérieure. Si elle a déjà reçu une réponse, dispatch immédiat vers le backend qui s'en est le mieux sorti la dernière fois.
  2. En cas de miss, embedder la question et faire une recherche cosinus sur l'index mis en cache des embeddings de questions historiques. Si la similarité du plus proche voisin dépasse 0.88, dispatch vers le backend associé.
  3. S'il n'y a aucune correspondance au-dessus du seuil, repli sur le backend par défaut du client pour ce corpus.
  4. Une fois la réponse rendue, le tuple (hash de question, backend, score de qualité) est réécrit dans le store d'historique de routage par client, alimentant les futurs lookups.
Pourquoi « appris » plutôt que « classifié » ? Empiriquement, une même forme de requête se comporte différemment selon les corpus. « Comparer X à travers Y » sur des contrats juridiques veut une traversée page-index Tier 3 ; la même forme sur un corpus FAQ plat est très bien sur Tier 1. Laisser le modèle de routage apprendre cette distinction par corpus à partir de preuves historiques, plutôt que de la deviner à partir de la syntaxe, c'est le choix de conception qui a réellement été livré.

Les dix backends entre lesquels nous routons aujourd'hui

Le routeur dispatche vers l'un de dix backends nommés. Trois d'entre eux sont de forme « Tier 3 » (hiérarchiques ou enrichis par graphe) ; les autres sont des moteurs purement vectoriels que nous traitons comme Tier 1 avec différents arbitrages opérationnels.

PI
pageindexArbre de table des matières hiérarchique + traversée agentique. L'archétype Tier 3.
RT
raptorRécupération par traversée d'arbre sur des hiérarchies de documents résumées récursivement (ICLR 2024).
neo4j-hybridRécupération enrichie par graphe combinant embeddings vectoriels et structure explicite d'entités / relations.
LR
lightragRécupération bi-mode sur graphe plat — recherche d'entités + de communautés, l'approche LightRAG de HKU.
qdrantMoteur vectoriel dense auto-hébergé pour des lookups à fort débit et faible latence.
cloudflare-v2Vectorize en edge — p95 sous 300 ms depuis le réseau global de Cloudflare.
couchbase-byokStore vectoriel Couchbase BYO pour les clients ayant des dépendances opérationnelles existantes.
vertex-ai-vector-search-v2Recherche vectorielle Google Cloud Vertex AI pour les clients sur la stack data de Google.
mongodb-atlasAtlas Vector Search pour les clients exploitant des données documentaires sur MongoDB.
redis-vector-searchRecherche vectorielle Redis pour les charges de récupération in-memory à très faible latence.

Tier 2 (BM25 + fusion dense + reranker cross-encoder) est livré comme nœud composable dans notre canvas de workflow aujourd'hui. Le routeur automatique le ciblera ensuite, à mesure que les données de routage par corpus le justifieront.

Surface API — un endpoint, transparence niveau audit

Le routeur est invisible pour l'appelant. Une seule forme de requête ; la réponse inclut la décision de routage pour que vous puissiez auditer quel backend a répondu (et pourquoi).

# Un seul endpoint. Le routeur décide quel backend utiliser.
curl -X POST https://api.divinci.app/v1/rag/query \
  -H "Authorization: Bearer $DIVINCI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "question": "What clauses in the 2024 amendment override section 7.3?",
    "corpus":   "legal-contracts-q4"
  }'
# Réponse — chunks dont l'agent a besoin pour fonder la réponse.
{
  "items": [
    {
      "content":  "Section 7.3 is superseded by …",
      "metadata": { "doc": "amendment-2024.pdf", "section": "II.4.b" },
      "score":    0.91
    }
    /* … */
  ],
  "routing": {
    "backend":      "pageindex",           // page-index tier-3 dispatché
    "match_source": "learned-history",     // arena · auto-fix · ou fallback
    "similarity":   0.92,                  // seuil ≥ 0.88
    "ttl_remaining":"23d 14h"              // fenêtre de fraîcheur avant re-benchmark
  }
}

Les métadonnées routing sont aujourd'hui journalisées en interne et exposées via la piste d'audit. La livraison inline dans la réponse est en cours de déploiement durant le Q3 2026.

En quoi cela diffère des routeurs existants

Le routage RAG n'est pas une idée neuve — des routeurs académiques comme Adaptive-RAG et Probing-RAG classifient déjà les requêtes par complexité. La différenciation, c'est que Divinci route entre des stacks de récupération architecturalement distincts, en apprenant à partir de votre propre trafic, derrière un seul endpoint managé.

OffreEntre quoi cela routeAxe de routageManagé ?
Divinci RAG Routing10 backends (PageIndex, RAPTOR, LightRAG, neo4j, 6 moteurs vectoriels)Architecture · appris depuis l'historiqueOui — endpoint unique
LlamaIndex RouterRetrieverBYO retrieversSélecteur LLM/PydanticNon — bibliothèque que vous assemblez
Adaptive-RAG (Jeong et al.)sans récupération / single-step / itératifProfondeur · classifieur de complexitéRecherche
Cloudflare AI Search (ex-AutoRAG)Un pipeline hybridePas de routageOui
AWS Bedrock Knowledge BasesUn pipeline hybridePas de routageOui
Azure AI Search Agentic RetrievalHybride + mode agentique séparéL'utilisateur choisit le mode manuellementOui
VectifyAI PageIndexArchitecture unique (traversée hiérarchique)Pas de routageOSS autonome

La faiblesse honnête dans notre pitch : le routage RAG par requête, en tant que concept, n'est pas neuf. Nous n'avons pas inventé le routage. La vraie différenciation, c'est la combinaison de (a) router entre des stacks architecturalement distincts plutôt qu'entre des variantes de profondeur, (b) inclure la traversée hiérarchique de type PageIndex / RAPTOR / LightRAG comme backend de première classe plutôt que comme produit séparé, et (c) un seul endpoint managé au lieu d'une bibliothèque que vous assemblez et exploitez vous-même.

Comment les préférences de routage sont initialisées

Votre modèle de routage n'est pas pré-entraîné — il apprend de votre trafic. Trois signaux alimentent le store d'historique de routage.

  1. Sélection en arène. Faites passer une requête dans RAG Arena sur plusieurs backends, scorez les variantes côte à côte, désignez le gagnant. La paire (question, backend gagnant) atterrit dans le store de routage.
  2. Sorties d'auto-fix. Quand notre auto-fix exécute des récupérations comparatives sur des requêtes représentatives lors de l'ingestion ou d'audits planifiés, le backend le plus performant par requête est écrit dans le même store.
  3. Feedback en production. Les requêtes réussies (celles qui ont franchi votre seuil de qualité via notre porte d'évaluation en ligne — voir le post sur le regression testing) réécrivent leur paire (hash de question, backend) dans le store de routage au moment de la requête, avec un TTL de 30 jours pour que le modèle de routage reste frais à mesure que votre corpus évolue.
Où c'est réellement production-grade vs roadmap : Les étapes 1 et 2 sont livrées aujourd'hui. La boucle de feedback automatique de l'étape 3 est partiellement livrée — les requêtes réussies réécrivent bien, mais le tier-2 (BM25 + RRF + reranker) est actuellement composé comme nœud de workflow plutôt que routé automatiquement. Nous intégrerons le Tier 2 dans le routeur automatique dès que les données de routage feront apparaître des conditions de victoire claires pour lui.

Quand cela compte le plus

Un corpus homogène avec des formes de requêtes uniformes en tire peu de bénéfice — choisissez un backend manuellement et c'est plié. Le coin d'entrée, ce sont les corpus mixtes et les formes de requêtes mixtes.

Une équipe juridique qui pose à la fois « quelle est la définition de la force majeure dans notre contrat standard ? » (Tier 1, sous 300 ms) et « parmi nos 47 contrats fournisseurs, lesquels ont des clauses de résiliation non standards et quels sont les patterns ? » (Tier 3, traversée page-index de plusieurs secondes) ne veut pas choisir un seul backend. Elle veut que la question simple revienne vite et pas cher, et que la question profonde revienne correctement même si elle coûte plus — sans exploiter deux stacks.

C'est le cas où un endpoint managé unique routant entre des backends architecturalement distincts gagne sa place. Si votre trafic est uniforme, vous n'en avez pas besoin. Si votre trafic est mixte — la plupart des vrais corpus d'entreprise le sont — vous en avez besoin.