RAG 라우팅 — 하나의 API, 여러 아키텍처
RAG 라우팅
하나의 API 엔드포인트, 열 개의 검색 아키텍처. 라우터는 과거 쿼리 트래픽으로부터 학습하여 새로 들어오는 모든 질문을 가장 정확히 답할 가능성이 높은 백엔드로 디스패치합니다 — 품질 기준은 충족하면서도 가장 낮은 비용으로요.
세 가지 아키텍처, 개념적으로
대부분의 프로덕션 RAG 시스템은 하나의 검색 아키텍처를 배포하고 끝냅니다. 우리는 아키텍처적으로 서로 다른 스택들 사이에서 선택하는 라우터를 제공합니다 — 코퍼스 내 모든 쿼리에 동일한 선택이 최적인 경우는 거의 없기 때문입니다.
→ 컨텍스트 삽입
→ 생성
적합한 용도
단일 사실 조회, FAQ 형태의 쿼리, 평면 청크 코퍼스에서 "X가 무엇인가요?" 식의 질문.
→ Reciprocal Rank Fusion
→ cross-encoder reranker
→ 생성
적합한 용도
어휘적 신호와 의미적 신호가 충돌하는 쿼리 — 코드, 이름, 약어, 기술 용어, 오류 문자열.
→ 에이전트가 트리를 탐색
→ 섹션을 열어 읽음
→ 생성
적합한 용도
구조화된 긴 문서의 멀티-홉 독해 — 법률 계약서, 재무 10-K, 컨텍스트가 인접하지 않은 섹션에 걸쳐 있는 기술 PDF.
라우터가 실제로 결정하는 방식
대부분의 공개된 RAG 라우터는 쿼리를 사전에 복잡도로 분류합니다. 우리는 그렇게 하지 않습니다. 학습형 라우팅(learned routing)을 사용합니다 — 성공한 모든 쿼리는 답변한 백엔드와 함께 저장되며, 새 쿼리는 임베딩 유사도를 기준으로 그 이력과 매칭됩니다.
조회 알고리즘 — 매 쿼리마다 실행되는 로직
- 질문을 해싱합니다 — SHA-256으로 해싱한 뒤 16자 키로 자르고, Cloudflare KV의 고객별 라우팅 저장소에서 동일한 사전 매치를 확인합니다. 이전에 답한 적이 있다면, 그때 가장 잘 수행한 백엔드로 즉시 디스패치합니다.
- 미스가 발생하면 질문을 임베드하여 캐시된 과거 질문 임베딩 인덱스에 대해 코사인 검색을 수행합니다. 최근접 이웃의 유사도가 0.88을 초과하면 연관된 백엔드로 디스패치합니다.
- 임계값을 넘는 매치가 없으면 해당 코퍼스에 대한 고객의 기본 백엔드로 폴백합니다.
- 답변이 렌더링된 후, (질문 해시, 백엔드, 품질 점수) 튜플이 고객별 라우팅 이력 저장소에 다시 기록되어 향후 조회의 시드가 됩니다.
현재 라우팅 대상인 열 개의 백엔드
라우터는 명명된 열 개의 백엔드 중 하나로 디스패치합니다. 그중 세 개는 "Tier 3 형태"(계층적 또는 그래프 강화형)이고, 나머지는 운영상의 트레이드오프가 다른 순수 벡터 엔진으로 Tier 1으로 취급합니다.
Tier 2(BM25 + dense fusion + cross-encoder reranker)는 오늘 우리 워크플로 캔버스에서 구성 가능한 노드로 제공됩니다. 자동 라우터는 코퍼스별 라우팅 데이터가 이를 정당화하는 시점에 다음 대상으로 삼습니다.
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 · 또는 폴백
"similarity": 0.92, // ≥ 0.88 임계값
"ttl_remaining":"23d 14h" // 재벤치마크 전 신선도 윈도우
}
}
routing 메타데이터는 현재 내부적으로 로깅되며 감사 추적을 통해 노출됩니다. 인라인 응답 전달은 2026년 3분기 동안 순차 출시됩니다.
기존 라우터와 어떻게 다른가
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 (구 AutoRAG) | 하나의 하이브리드 파이프라인 | 라우팅 없음 | 예 |
| AWS Bedrock Knowledge Bases | 하나의 하이브리드 파이프라인 | 라우팅 없음 | 예 |
| Azure AI Search Agentic Retrieval | 하이브리드 + 별도 에이전트 모드 | 사용자가 수동으로 모드 선택 | 예 |
| VectifyAI PageIndex | 단일 아키텍처 (계층적 탐색) | 라우팅 없음 | OSS 독립 실행 |
우리 피치의 솔직한 약점: 쿼리별 RAG 라우팅이라는 개념 자체는 새롭지 않습니다. 우리가 라우팅을 발명한 것은 아닙니다. 진정한 차별점은 (a) 깊이 변형이 아니라 아키텍처적으로 서로 다른 스택들 사이를 라우팅한다는 점, (b) PageIndex / RAPTOR / LightRAG 스타일의 계층적 탐색을 별개의 제품이 아닌 일등 백엔드로 포함한다는 점, (c) 직접 조립·운영해야 하는 라이브러리가 아닌 하나의 관리형 엔드포인트로 제공한다는 점 — 이 조합에 있습니다.
라우팅 선호도가 시드되는 방식
당신의 라우팅 모델은 사전 학습되어 있지 않습니다 — 당신의 트래픽으로부터 학습합니다. 세 가지 신호가 라우팅 이력 저장소에 공급됩니다.
- 아레나 선택. RAG Arena를 통해 여러 백엔드에 쿼리를 실행하고, 변형들을 나란히 평가한 뒤 승자를 선택합니다. (질문, 승리 백엔드) 쌍이 라우팅 저장소에 기록됩니다.
- 오토픽스 출력. 수집 또는 정기 감사 중에 오토픽스가 대표 쿼리들에 대해 비교 검색을 실행하면, 쿼리별 최고 성능 백엔드가 같은 저장소에 기록됩니다.
- 프로덕션 피드백. 성공한 쿼리들(우리의 온라인 평가 게이트를 통해 품질 임계값 이상을 기록한 것 — 회귀 테스트 글 참고)은 요청 시점에 (질문 해시, 백엔드) 쌍을 라우팅 저장소에 다시 기록하며, 30일 TTL을 적용해 코퍼스가 진화함에 따라 라우팅 모델이 최신 상태를 유지하도록 합니다.
이것이 가장 중요해지는 순간
동질적인 코퍼스에 균일한 쿼리 형태가 들어오는 환경에서는 이점이 거의 없습니다 — 백엔드 하나를 수동으로 선택하면 끝입니다. 진가는 혼합 코퍼스와 혼합 쿼리 형태에서 드러납니다.
"표준 계약서에서 불가항력의 정의는 무엇인가요?"(Tier 1, sub-300 ms)와 "47개의 벤더 계약 전체에서, 비표준 종료 조항이 있는 것은 무엇이며 그 패턴은 어떤가요?"(Tier 3, 수 초의 page-index 탐색)를 모두 묻는 법무 팀은 하나의 백엔드만 고르고 싶지 않습니다. 그들은 간단한 질문이 빠르고 저렴하게 돌아오고, 깊은 질문은 비용이 더 들더라도 정확히 돌아오기를 원합니다 — 두 개의 스택을 운영하지 않고서요.
바로 그 지점이 아키텍처적으로 서로 다른 백엔드들 사이를 라우팅하는 단일 관리형 엔드포인트가 제 값을 하는 사례입니다. 트래픽이 균일하다면 필요하지 않습니다. 트래픽이 혼합되어 있다면 — 대부분의 실제 엔터프라이즈 코퍼스가 그렇습니다 — 필요합니다.
심층 자료와 인접 제품
아키텍처 심층 분석은 블로그 글 The Future of RAG Systems: Beyond Simple Document Retrieval에 있습니다. 위의 1단계를 구동하는 아레나는 RAG Arena & Dynamic Routing에 있습니다. 라우팅 결정은 우리가 플랫폼 전반에 사용하는 동일한 릴리스 매니페스트 패턴을 통해 감사 시점에 고정됩니다 — Validating and Releasing Custom LMs in Regulated Fields를 참고하세요. 그리고 위의 3단계에 공급되는 신호인 검색 품질을 우리가 어떻게 온라인에서 평가하는지 알고 싶다면, 회귀 테스트 글부터 시작하세요.