Skip to main content
Ricerca recente:Quando il circuito si dissolve →12 vindexes on Hugging Face
Richiedi demo

RAG Routing — Una sola API, molte architetture

RAG Routing

Un solo endpoint API. Dieci architetture di retrieval supportate. Il router impara dal traffico storico delle tue query e instrada ogni nuova domanda verso il backend con la maggiore probabilità di rispondere correttamente — al costo più basso che superi comunque la tua soglia di qualità.

Parla con noi Leggi l'approfondimento →

Le tre architetture, a livello concettuale

La maggior parte dei sistemi RAG in produzione spedisce una sola architettura di retrieval e considera il lavoro concluso. Noi spediamo un router che sceglie tra stack architettonicamente distinti — la scelta giusta è raramente la stessa per ogni query del tuo corpus.

Tier 1 · RAG Flat-Vector
FAST & CHEAP
embed → cosine top-k
→ stuff context
→ generate

Ideale per

Lookup di singoli fatti, query in forma di FAQ, domande tipo "che cos'è X?" su corpora a chunk piatti.

Latenza:< 300 ms p95Costo:centesimi per queryBackend:Qdrant · Cloudflare · Vertex · MongoDB · Redis
Tier 2 · Hybrid + Rerank
BALANCED
BM25 lexical + dense vector
→ Reciprocal Rank Fusion
→ cross-encoder reranker
→ generate

Ideale per

Query in cui segnali lessicali e semantici sono in disaccordo — codici, nomi, acronimi, vocabolario tecnico, stringhe di errore.

Latenza:~ 800 msCosto:ancora bassoOggi:nodo workflow componibile · auto-router in roadmap
Tier 3 · Page-Index + Agent
DEEP & DELIBERATE
hierarchical TOC tree built
at ingest → agent walks tree
→ opens / reads sections
→ generate

Ideale per

Lettura multi-hop di documenti lunghi e strutturati — contratti legali, 10-K finanziari, PDF tecnici dove il contesto si estende attraverso sezioni non adiacenti.

Latenza:secondi multipliCosto:il più alto — ma solo quando serveBackend:PageIndex · RAPTOR · LightRAG · neo4j-hybrid

Come decide davvero il router

La maggior parte dei router RAG pubblicati classifica la query a priori in base alla complessità. Il nostro no. Usiamo il routing appreso: ogni query andata a buon fine viene memorizzata insieme al backend che ha risposto, e le nuove query vengono confrontate con quella storia tramite similarità di embedding.

L'algoritmo di lookup — cosa gira a ogni query

  1. Hash della domanda con SHA-256, troncato a una chiave di 16 caratteri, e ricerca nello store di routing per cliente su Cloudflare KV per un match esatto precedente. Se la domanda ha già avuto risposta, dispatch immediato verso il backend che ha performato meglio l'ultima volta.
  2. In caso di miss, embedding della domanda e ricerca per coseno sull'indice in cache degli embedding storici delle domande. Se la similarità del nearest neighbour supera 0.88, dispatch verso il backend associato.
  3. Senza match sopra soglia, fallback al backend di default del cliente per quel corpus.
  4. Dopo che la risposta è stata renderizzata, la tupla (hash domanda, backend, punteggio di qualità) viene riscritta nello store cronologico di routing per cliente, alimentando i lookup futuri.
Perché "appreso" invece di "classificato"? Empiricamente, la stessa forma di query si comporta diversamente su corpora diversi. "Confronta X tra Y" su contratti legali richiede la traversal page-index di Tier 3; la stessa forma su un corpus FAQ piatto va benissimo su Tier 1. Lasciare che il modello di routing apprenda questa distinzione per ogni corpus dall'evidenza storica, invece di indovinare dalla sintassi della query, è la scelta di design che è davvero finita in produzione.

I dieci backend tra cui instradiamo oggi

Il router fa dispatch verso uno dei dieci backend nominati. Tre di loro hanno la "forma Tier 3" (gerarchici o graph-enhanced); gli altri sono motori puramente vettoriali che trattiamo come Tier 1 con tradeoff operativi diversi.

PI
pageindexAlbero TOC gerarchico + traversal agentica. L'archetipo Tier 3.
RT
raptorRetrieval tree-traversal su gerarchie di documenti ricorsivamente riassunte (ICLR 2024).
neo4j-hybridRetrieval graph-enhanced che combina embedding vettoriali con struttura esplicita di entità e relazioni.
LR
lightragRetrieval dual-mode flat-graph — ricerca per entità + community, l'approccio LightRAG di HKU.
qdrantMotore dense-vector self-hosted per lookup ad alto throughput e bassa latenza.
cloudflare-v2Vectorize all'edge — sotto i 300 ms p95 dalla rete globale di Cloudflare.
couchbase-byokVector store Couchbase BYO per clienti con dipendenze operative esistenti.
vertex-ai-vector-search-v2Google Cloud Vertex AI vector search per clienti sullo stack dati Google.
mongodb-atlasAtlas Vector Search per clienti che fanno girare dati documentali su MongoDB.
redis-vector-searchRicerca vettoriale Redis per carichi di retrieval in-memory a latenza ultra-bassa.

Il Tier 2 (BM25 + dense fusion + cross-encoder reranker) viene spedito oggi nel nostro workflow canvas come nodo componibile. L'auto-router lo punterà come prossimo obiettivo quando i dati di routing per corpus lo giustificheranno.

Superficie API — un solo endpoint, trasparenza audit-grade

Il router è invisibile a chi chiama. Una sola forma di richiesta; la risposta include la decisione di routing così puoi controllare quale backend ha risposto (e perché).

# Un solo endpoint. Il router decide quale backend usare.
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"
  }'
# Risposta — chunk di cui l'agente ha bisogno per fondare la risposta.
{
  "items": [
    {
      "content":  "Section 7.3 is superseded by …",
      "metadata": { "doc": "amendment-2024.pdf", "section": "II.4.b" },
      "score":    0.91
    }
    /* … */
  ],
  "routing": {
    "backend":      "pageindex",           // dispatched al page-index tier-3
    "match_source": "learned-history",     // arena · auto-fix · oppure fallback
    "similarity":   0.92,                  // soglia ≥ 0.88
    "ttl_remaining":"23d 14h"              // finestra di freschezza prima del re-benchmark
  }
}

I metadata di routing sono attualmente loggati internamente ed esposti tramite l'audit trail. La consegna inline nella risposta è in rollout nel Q3 2026.

In cosa differisce dai router esistenti

Il routing RAG non è un'idea nuova — router accademici come Adaptive-RAG e Probing-RAG classificano già le query per complessità. La differenziazione è che Divinci instrada attraverso stack di retrieval architettonicamente distinti, appresi dal tuo traffico, dietro un unico endpoint gestito.

OffertaTra cosa instradaAsse di routingGestito?
Divinci RAG Routing10 backend (PageIndex, RAPTOR, LightRAG, neo4j, 6 motori vettoriali)Architettura · appreso dallo storicoSì — endpoint unico
LlamaIndex RouterRetrieverRetriever BYOSelettore LLM/PydanticNo — libreria che assembli
Adaptive-RAG (Jeong et al.)no-retrieval / single-step / iterativeProfondità · classificatore di complessità queryRicerca
Cloudflare AI Search (ex-AutoRAG)Una pipeline ibridaNessun routing
AWS Bedrock Knowledge BasesUna pipeline ibridaNessun routing
Azure AI Search Agentic RetrievalIbrido + modalità agentica separataL'utente sceglie la modalità manualmente
VectifyAI PageIndexSingola architettura (traversal gerarchica)Nessun routingOSS standalone

Il punto debole onesto del nostro pitch: il routing RAG per query, come concetto, non è nuovo. Non abbiamo inventato il routing. La differenziazione genuina è la combinazione di (a) routing tra stack architettonicamente distinti invece che varianti di profondità, (b) traversal gerarchica in stile PageIndex / RAPTOR / LightRAG inclusa come backend di prima classe invece che come prodotto separato, e (c) un unico endpoint gestito invece di una libreria che assembli e operi da solo.

Come vengono seminate le preferenze di routing

Il tuo modello di routing non è pre-addestrato — impara dal tuo traffico. Tre segnali alimentano lo store cronologico di routing.

  1. Selezione in arena. Fai girare una query attraverso RAG Arena su più backend, valuta le varianti fianco a fianco, scegli il vincitore. La coppia (domanda, backend vincente) finisce nello store di routing.
  2. Output di auto-fix. Quando il nostro auto-fix esegue retrieval comparativi su query rappresentative durante l'ingestion o gli audit pianificati, il backend più performante per ciascuna query viene scritto nello stesso store.
  3. Feedback dalla produzione. Le query andate a buon fine (quelle che hanno superato la tua soglia di qualità tramite il nostro gate di valutazione online — vedi il post sul regression testing) riscrivono la propria coppia (hash domanda, backend) nello store di routing al momento della richiesta, con un TTL di 30 giorni in modo che il modello di routing resti fresco mentre il tuo corpus evolve.
Dove questo è genuinamente production-grade vs roadmap: i passi 1 e 2 sono già in produzione oggi. Il loop di feedback automatico del passo 3 è parzialmente spedito — le query andate a buon fine riscrivono nello store, ma il tier-2 (BM25 + RRF + reranker) è attualmente composto come nodo workflow piuttosto che instradato automaticamente. Ripiegheremo il Tier 2 dentro l'auto-router quando i dati di routing mostreranno chiare condizioni di vittoria per lui.

Quando questo conta di più

Un corpus omogeneo con forme di query uniformi ne beneficia poco — scegli un backend manualmente e hai chiuso. Il cuneo sono i corpora misti e le forme di query miste.

Un team legale che chiede sia "qual è la definizione di forza maggiore nel nostro contratto standard?" (Tier 1, sotto i 300 ms) sia "tra i nostri 47 contratti con fornitori, quali hanno clausole di risoluzione non standard e quali sono i pattern?" (Tier 3, traversal page-index in più secondi) non vuole scegliere un solo backend. Vuole che la domanda semplice torni veloce ed economica, e che la domanda profonda torni corretta anche se costa di più — senza dover operare due stack.

Questo è il caso in cui un endpoint gestito unico che instrada attraverso backend architettonicamente distinti si guadagna lo stipendio. Se il tuo traffico è uniforme, non ti serve. Se il tuo traffico è misto — la maggior parte dei corpora enterprise reali lo è — sì.