Saltar al contenido principal
Investigación reciente:Cuando el circuito se disuelve →12 vindexes on Hugging Face
Solicitar demo

RAG Routing — Una API, muchas arquitecturas

RAG Routing

Un solo endpoint de API. Diez arquitecturas de recuperación soportadas. El router aprende del histórico de consultas de tu tráfico y envía cada pregunta nueva al backend que tiene más probabilidad de responderla correctamente — al menor costo que aún supere tu umbral de calidad.

Habla con nosotros Lee el análisis a fondo →

Las tres arquitecturas, conceptualmente

La mayoría de los sistemas RAG en producción lanzan una sola arquitectura de recuperación y dan por terminado el trabajo. Nosotros lanzamos un router que elige entre stacks arquitectónicamente distintos — la elección correcta rara vez es la misma para cada consulta dentro de un corpus.

Tier 1 · RAG de vectores planos
FAST & CHEAP
embed → cosine top-k
→ stuff context
→ generate

Ideal para

Búsquedas de un solo dato, consultas tipo FAQ, preguntas "¿qué es X?" sobre corpus segmentados en chunks planos.

Latencia:< 300 ms p95Costo:centavos por consultaBackends:Qdrant · Cloudflare · Vertex · MongoDB · Redis
Tier 2 · Híbrido + Rerank
BALANCED
BM25 lexical + dense vector
→ Reciprocal Rank Fusion
→ cross-encoder reranker
→ generate

Ideal para

Consultas donde las señales léxicas y semánticas no coinciden — códigos, nombres, acrónimos, vocabulario técnico, cadenas de error.

Latencia:~ 800 msCosto:aún bajoHoy:nodo componible en el workflow · auto-router en la hoja de ruta
Tier 3 · Page-Index + Agente
DEEP & DELIBERATE
hierarchical TOC tree built
at ingest → agent walks tree
→ opens / reads sections
→ generate

Ideal para

Lectura multi-salto de documentos extensos y estructurados — contratos legales, formularios 10-K financieros, PDFs técnicos donde el contexto se extiende por secciones no adyacentes.

Latencia:varios segundosCosto:el más alto — pero solo cuando hace faltaBackend:PageIndex · RAPTOR · LightRAG · neo4j-hybrid

Cómo decide el router en realidad

La mayoría de los routers RAG publicados clasifican la consulta de entrada por complejidad. El nuestro no. Usamos enrutamiento aprendido: cada consulta exitosa se almacena junto con el backend que la respondió, y las nuevas consultas se comparan con ese historial mediante similitud por embeddings.

El algoritmo de búsqueda — qué se ejecuta en cada consulta

  1. Hashea la pregunta con SHA-256, truncada a una clave de 16 caracteres, y consulta el almacén de enrutamiento por cliente en Cloudflare KV buscando una coincidencia exacta previa. Si ya fue respondida antes, despacha de inmediato al backend que mejor lo hizo la última vez.
  2. Si no hay coincidencia, embebe la pregunta y haz una búsqueda por coseno contra el índice cacheado de embeddings históricos de preguntas. Si la similitud del vecino más cercano supera 0.88, despacha al backend asociado.
  3. Si no hay coincidencia por encima del umbral, recurre al backend por defecto del cliente para ese corpus.
  4. Tras renderizar la respuesta, la tupla (hash de pregunta, backend, puntaje de calidad) se escribe de vuelta en el almacén de historial de enrutamiento por cliente, alimentando futuras búsquedas.
¿Por qué "aprendido" en vez de "clasificado"? Empíricamente, una misma forma de consulta se comporta de manera distinta en diferentes corpus. "Compara X a lo largo de Y" sobre contratos legales pide una traversal Tier 3 con page-index; la misma forma sobre un corpus FAQ plano se resuelve bien en Tier 1. Dejar que el modelo de enrutamiento aprenda esa distinción por corpus a partir de evidencia histórica, en vez de adivinarla desde la sintaxis de la consulta, es la decisión de diseño que realmente llegó a producción.

Los diez backends entre los que enrutamos hoy

El router despacha a uno de diez backends nombrados. Tres son "del tipo Tier 3" (jerárquicos o con grafos); los demás son motores puramente vectoriales que tratamos como Tier 1 con distintos tradeoffs operativos.

PI
pageindexÁrbol jerárquico tipo TOC + traversal agéntica. El arquetipo Tier 3.
RT
raptorRecuperación por traversal de árbol sobre jerarquías de documentos resumidas recursivamente (ICLR 2024).
neo4j-hybridRecuperación potenciada con grafos que combina embeddings vectoriales con estructura explícita de entidades y relaciones.
LR
lightragRecuperación dual-mode sobre grafos planos — búsqueda por entidad + comunidad, el enfoque LightRAG de HKU.
qdrantMotor de vectores densos self-hosted para búsquedas de alto throughput y baja latencia.
cloudflare-v2Vectorize en el edge — sub-300 ms p95 desde la red global de Cloudflare.
couchbase-byokVector store en Couchbase BYO para clientes con dependencias operativas existentes.
vertex-ai-vector-search-v2Búsqueda vectorial de Google Cloud Vertex AI para clientes sobre el stack de datos de Google.
mongodb-atlasAtlas Vector Search para clientes que corren datos documentales en MongoDB.
redis-vector-searchBúsqueda vectorial en Redis para cargas de recuperación en memoria con latencia ultrabaja.

Tier 2 (BM25 + fusión densa + reranker cross-encoder) está disponible hoy como nodo componible en nuestro canvas de workflows. El auto-router lo incorporará a continuación, a medida que los datos de enrutamiento por corpus lo justifiquen.

Superficie de la API — un endpoint, transparencia con grado de auditoría

El router es invisible para quien llama. Una sola forma de petición; la respuesta incluye la decisión de enrutamiento para que puedas auditar qué backend respondió (y por qué).

# Un solo endpoint. El router decide qué backend usar.
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"
  }'
# Respuesta — chunks que el agente necesita para sustentar la respuesta.
{
  "items": [
    {
      "content":  "Section 7.3 is superseded by …",
      "metadata": { "doc": "amendment-2024.pdf", "section": "II.4.b" },
      "score":    0.91
    }
    /* … */
  ],
  "routing": {
    "backend":      "pageindex",           // despachado a page-index tier-3
    "match_source": "learned-history",     // arena · auto-fix · o fallback
    "similarity":   0.92,                  // umbral ≥ 0.88
    "ttl_remaining":"23d 14h"              // ventana de frescura antes de re-benchmark
  }
}

Actualmente los metadatos routing se registran internamente y se exponen a través del audit trail. La entrega inline en la respuesta se irá desplegando durante el Q3 de 2026.

En qué se diferencia esto de los routers existentes

El enrutamiento RAG no es una idea nueva — routers académicos como Adaptive-RAG y Probing-RAG ya clasifican consultas por complejidad. La diferenciación está en que Divinci enruta entre stacks de recuperación arquitectónicamente distintos, aprendiendo de tu propio tráfico, detrás de un único endpoint gestionado.

OfertaEntre qué enrutaEje de enrutamiento¿Gestionado?
Divinci RAG Routing10 backends (PageIndex, RAPTOR, LightRAG, neo4j, 6 motores vectoriales)Arquitectura · aprendido del historialSí — endpoint único
LlamaIndex RouterRetrieverRetrievers BYOSelector LLM/PydanticNo — librería que tú ensamblas
Adaptive-RAG (Jeong et al.)sin recuperación / paso único / iterativoProfundidad · clasificador de complejidad de consultaInvestigación
Cloudflare AI Search (ex-AutoRAG)Un pipeline híbridoSin enrutamiento
AWS Bedrock Knowledge BasesUn pipeline híbridoSin enrutamiento
Azure AI Search Agentic RetrievalHíbrido + modo agéntico separadoEl usuario elige el modo manualmente
VectifyAI PageIndexArquitectura única (traversal jerárquica)Sin enrutamientoOSS standalone

La debilidad honesta de nuestro pitch: el enrutamiento RAG por consulta, como concepto, no es nuevo. No inventamos el enrutamiento. La diferenciación genuina es la combinación de (a) enrutar entre stacks arquitectónicamente distintos en lugar de variantes de profundidad, (b) incluir la traversal jerárquica al estilo PageIndex / RAPTOR / LightRAG como backend de primera clase y no como producto aparte, y (c) un único endpoint gestionado en vez de una librería que tú ensamblas y operas.

Cómo se siembran las preferencias de enrutamiento

Tu modelo de enrutamiento no viene pre-entrenado — aprende de tu tráfico. Tres señales alimentan el almacén de historial de enrutamiento.

  1. Selección en la arena. Corre una consulta por RAG Arena entre múltiples backends, puntúa las variantes lado a lado y elige al ganador. El par (pregunta, backend ganador) aterriza en el almacén de enrutamiento.
  2. Salidas del auto-fix. Cuando nuestro auto-fix ejecuta recuperaciones comparativas sobre consultas representativas durante la ingesta o en auditorías programadas, el backend con mejor desempeño por consulta queda escrito en el mismo almacén.
  3. Feedback de producción. Las consultas exitosas (las que superan tu umbral de calidad vía nuestra puerta de evaluación online — ver el post sobre regression-testing) escriben su par (hash de pregunta, backend) de vuelta en el almacén de enrutamiento en tiempo de petición, con un TTL de 30 días para que el modelo de enrutamiento se mantenga fresco a medida que evoluciona tu corpus.
Dónde esto es realmente production-grade vs roadmap: los pasos 1 y 2 están en producción hoy. El bucle de feedback automático del paso 3 está parcialmente entregado — las consultas exitosas escriben de vuelta, pero Tier 2 (BM25 + RRF + reranker) hoy se compone como nodo de workflow en vez de enrutarse automáticamente. Integraremos Tier 2 al auto-router a medida que los datos de enrutamiento muestren condiciones de victoria claras para él.

Cuándo importa más

Un corpus homogéneo con formas de consulta uniformes se beneficia poco — elige un backend manualmente y listo. La cuña son los corpus mixtos y las formas de consulta mixtas.

Un equipo legal que pregunta tanto "¿cuál es la definición de fuerza mayor en nuestro contrato estándar?" (Tier 1, sub-300 ms) como "a través de nuestros 47 contratos con proveedores, ¿cuáles tienen cláusulas de terminación no estándar y qué patrones hay?" (Tier 3, traversal page-index de varios segundos) no quiere elegir un solo backend. Quiere que la pregunta simple regrese rápida y barata, y que la pregunta profunda regrese correcta aunque cueste más — sin tener que operar dos stacks.

Ese es el caso en el que un único endpoint gestionado enrutando entre backends arquitectónicamente distintos se gana su lugar. Si tu tráfico es uniforme, no lo necesitas. Si tu tráfico es mixto — y la mayoría de los corpus empresariales reales lo son — sí lo necesitas.