DOCS/ideas/250909_로빙_검색_API_통합_전략.md
happybell80 f635b7e5a4 Update: 검색 API를 rb8001 내부 SearchService로 구현
- skill-search 대신 rb8001 내부 구현으로 변경
- 네트워크 홉 감소로 성능 향상
- 구현 위치: rb8001/app/services/search_service.py
2025-09-10 00:37:03 +09:00

2.3 KiB

로빙 검색 API 통합 전략

작성일: 2025-09-09
작성자: happybell80 & Claude
관련 서비스: rb8001 (SearchService 내부 구현)
핵심 기술: Multi-provider Search API, Query Routing, Caching

1. 검색 프로바이더 계층 구조

1.1 기본 드라이버: Tavily

  • 검색과 본문 추출 통합 제공
  • 월 1,000회 무료
  • RAG 파이프라인 단순화

1.2 보조 프로바이더

  • Brave Search API: 자체 인덱스, 월 2,000회 무료
  • Serper.dev: Google SERP, 2,500회 무료
  • DuckDuckGo IA: 즉답형 무료 무제한
  • Exa API: 심층 분석용 (유료)
  • SearxNG: 자체 호스팅 폴백

2. 쿼리 라우팅 규칙

class QueryRouter:
    def route(self, query, query_type):
        if query_type == 'fact':
            return 'duckduckgo'  # 즉답형
        elif query_type == 'general':
            return 'tavily'      # 기본
        elif query_type == 'navigational':
            return 'serper'      # Google SERP
        elif query_type == 'deep_research':
            return 'exa'         # 심층 분석
        else:
            return 'brave'       # 다양성 보완

3. 구현 아키텍처

사용자 → rb8001 내부 SearchService
         ↓
    [Query Router]
         ↓
    [Provider Manager]
    /    |    |    \
Tavily Brave Serper DuckDuckGo
         ↓
    [Result Merger]
         ↓
    [Redis Cache]

4. 캐싱 전략

쿼리 타입 TTL 근거
즉답형 24시간 변하지 않는 사실
일반 6시간 적당한 최신성
뉴스 30분 실시간성 중요
네비게이셔널 12시간 URL 변경 드물음

5. 비용 최적화

월간 쿼터 배분 (70-20-10)

  • Tavily: 700회 (기본)
  • Brave: 200회 (다양성)
  • Serper/Exa: 100회 (특수 목적)

예상 월 비용: $0.05

6. 구현 위치: rb8001/app/services/search_service.py

별도 스킬 서비스 대신 rb8001 내부 SearchService로 구현

  • 의도 분류 후 직접 처리 (네트워크 홉 감소)
  • Phase 1: Tavily + DuckDuckGo 통합
  • Phase 2: 복잡도 증가 시 skill-search 분리 검토

7. 핵심 차별점

  • 다층 프로바이더로 안정성 확보
  • 쿼리 타입별 최적 API 자동 선택
  • 무료 한도 최대 활용으로 비용 최소화
  • 캐싱으로 중복 검색 방지