Маршрутизация RAG — один API, множество архитектур
Маршрутизация RAG
Одна конечная точка API. Десять поддерживаемых архитектур извлечения. Маршрутизатор учится на исторических данных вашего трафика и направляет каждый новый вопрос к бэкенду, который с наибольшей вероятностью ответит на него корректно — по минимальной цене, всё ещё проходящей вашу планку качества.
Три архитектуры — концептуально
Большинство продакшен-систем RAG поставляют одну архитектуру извлечения и считают задачу решённой. Мы поставляем маршрутизатор, который выбирает между архитектурно различными стеками — правильный выбор редко одинаков для всех запросов в вашем корпусе.
→ заполнение контекста
→ генерация
Лучше всего подходит для
Поиска отдельных фактов, запросов в форме FAQ, вопросов «что такое X?» по корпусам с плоской разбивкой на чанки.
→ Reciprocal Rank Fusion
→ cross-encoder реранкер
→ генерация
Лучше всего подходит для
Запросов, в которых лексические и семантические сигналы расходятся — коды, имена, аббревиатуры, технический словарь, строки ошибок.
строится при загрузке → агент обходит дерево
→ открывает / читает разделы
→ генерация
Лучше всего подходит для
Многошагового чтения длинных структурированных документов — юридических договоров, финансовых отчётов 10-K, технических PDF, где контекст разнесён по несмежным разделам.
Как маршрутизатор на самом деле принимает решения
Большинство опубликованных маршрутизаторов RAG классифицируют запрос заранее по сложности. Наш — нет. Мы используем обучаемую маршрутизацию: каждый успешный запрос сохраняется вместе с бэкендом, который на него ответил, и новые запросы сопоставляются с этой историей по сходству эмбеддингов.
Алгоритм поиска — что выполняется на каждом запросе
- Захешировать вопрос с помощью SHA-256, обрезать до 16-символьного ключа и проверить хранилище маршрутизации Cloudflare KV для конкретного клиента на точное прежнее совпадение. Если на вопрос уже отвечали раньше, немедленно направить его на бэкенд, который в прошлый раз справился лучше всех.
- При промахе — построить эмбеддинг вопроса и выполнить косинусный поиск по кэшированному индексу исторических эмбеддингов вопросов. Если сходство ближайшего соседа превышает 0.88, направить на ассоциированный с ним бэкенд.
- При отсутствии совпадения выше порога — откатиться к бэкенду по умолчанию клиента для данного корпуса.
- После того как ответ сформирован, кортеж (хеш вопроса, бэкенд, оценка качества) записывается обратно в хранилище истории маршрутизации клиента, формируя основу для будущих поисков.
Десять бэкендов, между которыми мы сегодня маршрутизируем
Маршрутизатор направляет запросы к одному из десяти именованных бэкендов. Три из них «в стиле Tier 3» (иерархические или граф-расширенные); остальные — чисто векторные движки, которые мы рассматриваем как Tier 1 с разными операционными компромиссами.
Tier 2 (BM25 + слияние плотных векторов + cross-encoder реранкер) поставляется сегодня в нашем canvas-воркфлоу как композируемый узел. Авто-маршрутизатор подключит его следующим, когда данные маршрутизации по корпусу это оправдают.
API-поверхность — одна конечная точка, аудитная прозрачность
Маршрутизатор невидим для вызывающего кода. Один формат запроса; ответ включает решение о маршрутизации, чтобы вы могли проаудировать, какой бэкенд ответил (и почему).
# Одна конечная точка. Маршрутизатор решает, какой бэкенд использовать.
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"
}'
# Ответ — чанки, нужные агенту для обоснования ответа.
{
"items": [
{
"content": "Section 7.3 is superseded by …",
"metadata": { "doc": "amendment-2024.pdf", "section": "II.4.b" },
"score": 0.91
}
/* … */
],
"routing": {
"backend": "pageindex", // направлено на tier-3 page-index
"match_source": "learned-history", // arena · auto-fix · или fallback
"similarity": 0.92, // порог ≥ 0.88
"ttl_remaining":"23d 14h" // окно свежести до переоценки
}
}
Метаданные routing сегодня логируются внутренне и доступны через аудит-трейл. Инлайн-доставка в ответе раскатывается в течение Q3 2026.
Чем это отличается от существующих маршрутизаторов
Маршрутизация RAG не является новой идеей — академические маршрутизаторы вроде Adaptive-RAG и Probing-RAG уже классифицируют запросы по сложности. Дифференциация в том, что Divinci маршрутизирует между архитектурно различными стеками извлечения, обучаясь на вашем собственном трафике, за одной управляемой конечной точкой.
| Предложение | Между чем маршрутизирует | Ось маршрутизации | Управляемый? |
|---|---|---|---|
| Divinci RAG Routing | 10 бэкендов (PageIndex, RAPTOR, LightRAG, neo4j, 6 векторных движков) | Архитектура · обучение на истории | Да — одна конечная точка |
| LlamaIndex RouterRetriever | BYO-ретриверы | LLM/Pydantic-селектор | Нет — библиотека, которую вы собираете |
| Adaptive-RAG (Jeong et al.) | без извлечения / однократно / итеративно | Глубина · классификатор сложности запроса | Исследование |
| Cloudflare AI Search (ex-AutoRAG) | Один гибридный пайплайн | Без маршрутизации | Да |
| AWS Bedrock Knowledge Bases | Один гибридный пайплайн | Без маршрутизации | Да |
| Azure AI Search Agentic Retrieval | Гибрид + отдельный агентный режим | Пользователь выбирает режим вручную | Да |
| VectifyAI PageIndex | Одна архитектура (иерархический обход) | Без маршрутизации | Open-source standalone |
Честная слабая сторона нашего питча: маршрутизация RAG как концепция сама по себе не нова. Мы не изобрели маршрутизацию. Подлинная дифференциация — это сочетание (a) маршрутизации между архитектурно различными стеками, а не вариантами по глубине, (b) включения иерархического обхода в стиле PageIndex / RAPTOR / LightRAG как полноправного бэкенда, а не отдельного продукта, и (c) одной управляемой конечной точки вместо библиотеки, которую вы сами собираете и обслуживаете.
Как формируются предпочтения маршрутизации
Ваша модель маршрутизации не предобучена — она учится на вашем трафике. В хранилище истории маршрутизации поступают три сигнала.
- Выбор в Arena. Прогоните запрос через RAG Arena по нескольким бэкендам, оцените варианты бок о бок и выберите победителя. Пара (вопрос, бэкенд-победитель) попадает в хранилище маршрутизации.
- Выходы auto-fix. Когда наш auto-fix выполняет сравнительные извлечения по репрезентативным запросам во время загрузки или плановых аудитов, лучший бэкенд по каждому запросу записывается в то же хранилище.
- Обратная связь из продакшена. Успешные запросы (те, что прошли вашу планку качества через наш онлайн-гейт оценки — см. пост про регрессионное тестирование) записывают свою пару (хеш вопроса, бэкенд) обратно в хранилище маршрутизации в момент запроса, с TTL 30 дней, чтобы модель маршрутизации оставалась свежей по мере эволюции вашего корпуса.
Когда это важнее всего
Однородный корпус с единообразными формами запросов выигрывает мало — выберите один бэкенд вручную, и дело сделано. Точка опоры — это смешанные корпуса и смешанные формы запросов.
Юридическая команда, которая задаёт и «каково определение форс-мажора в нашем стандартном договоре?» (Tier 1, менее 300 мс), и «по нашим 47 договорам с поставщиками — какие из них содержат нестандартные условия расторжения и каковы паттерны?» (Tier 3, многосекундный обход page-index), не хочет выбирать один бэкенд. Они хотят, чтобы простой вопрос возвращался быстро и дёшево, а глубокий — корректно, даже если он стоит дороже — без необходимости эксплуатировать два стека.
Именно в этом случае одна управляемая конечная точка, маршрутизирующая между архитектурно различными бэкендами, оправдывает себя. Если ваш трафик однороден — вам это не нужно. Если ваш трафик смешан — а большинство реальных корпоративных корпусов именно такие — нужно.
Углублённое чтение и смежные продукты
Подробный архитектурный разбор находится в нашем блог-посте The Future of RAG Systems: Beyond Simple Document Retrieval. Арена, на которой основан шаг 1 выше, находится по адресу RAG Arena & Dynamic Routing. Решения о маршрутизации привязываются к аудит-якорю по тому же паттерну release-manifest, который мы используем по всей платформе — см. Validating and Releasing Custom LMs in Regulated Fields. А если вы хотите узнать, как мы оцениваем качество извлечения в онлайне (тот самый сигнал, что питает шаг 3 выше), начните с поста про регрессионное тестирование.