Federated Retrieval / Federated Search
Federated Retrieval(연합 검색)은 중앙화된 단일 인덱스 없이 여러 독립적인 데이터 소스에 동시에 쿼리를 전송하고, 각 소스의 결과를 수집·병합하여 통합 결과를 반환하는 분산 검색 기법이다. 데이터를 한 곳에 모을 수 없거나 모아서는 안 되는 상황(보안, 규정, 물리적 제약)에서 핵심 전략으로 사용된다.
핵심 개념
Federated Retrieval의 전제는 "데이터를 이동시키지 말고, 쿼리를 이동시켜라"다. 각 데이터 소스는 자체적인 인덱스와 검색 엔진을 유지하며, 연합 레이어(federation layer)가 쿼리를 중개하고 결과를 통합한다.
전통적인 중앙 집중 검색과의 차이
| 항목 | 중앙 집중 검색 | Federated Retrieval |
|---|---|---|
| 인덱스 위치 | 단일 중앙 인덱스 | 각 소스에 분산 |
| 데이터 이동 | 수집 후 중앙화 | 이동 없음 |
| 업데이트 반영 | 크롤링 주기 의존 | 실시간 |
| 적합 상황 | 데이터 통합이 가능한 환경 | 데이터 격리 필요 환경 |
아키텍처
User Query
│
▼
Federation Layer (쿼리 분산 + 결과 병합)
│
├── Source A (사내 문서 시스템)
├── Source B (외부 DB / API)
├── Source C (레거시 검색 엔진)
└── Source D (벡터 스토어)
Federation Layer는 각 소스에 쿼리를 병렬로 전송하고 타임아웃을 관리하며, 도착한 결과를 병합한다.
쿼리 변환 (Query Translation)
각 소스의 검색 인터페이스가 다를 수 있으므로, 연합 레이어는 쿼리를 각 소스에 맞게 변환한다.
- 벡터 스토어: 자연어 → 임베딩 벡터
- 전통 검색 엔진: 자연어 → BM25 키워드 쿼리
- SQL 데이터베이스: 자연어 → SQL (Text-to-SQL)
- REST API: 자연어 → 파라미터화된 API 호출
결과 병합 전략
각 소스는 자체 스코어링 체계를 갖고 있으므로, 스코어를 직접 비교하는 것은 의미가 없다. 대신 다음 방법을 사용한다.
Reciprocal Rank Fusion (RRF)
절대 스코어 대신 순위(rank)를 기반으로 통합 스코어를 계산한다. 스코어 분포가 다른 소스들을 공정하게 병합할 수 있다.
정규화 후 가중합
각 소스의 스코어를 [0, 1]로 정규화한 뒤 소스별 가중치를 적용해 합산한다. 소스별 신뢰도를 반영할 수 있다.
LLM 재순위화
병합된 상위 후보를 LLM이 쿼리 관련성 기준으로 최종 정렬한다.
주요 과제
지연 시간 (Latency)
가장 느린 소스가 전체 응답 시간을 결정한다. 타임아웃 설정과 부분 결과 반환(partial results) 전략이 필요하다.
결과 중복 제거
여러 소스에 동일한 문서가 존재할 수 있다. 문서 해시나 URL 기반 중복 제거를 수행해야 한다.
소스 가용성
특정 소스가 다운된 경우 나머지 소스만으로 결과를 반환하는 폴백(fallback) 로직이 필요하다.
활용 사례
- 기업 내부: 사내 위키, 이메일, CRM, 코드 저장소를 통합 검색
- 의료/금융: 기관별로 격리된 데이터를 규정 준수 상태에서 검색
- 멀티 클라우드: 여러 클라우드 스토리지에 분산된 데이터 검색
관련 개념
- Multi-RAG Orchestration: 복수의 RAG 파이프라인을 조율하는 상위 아키텍처
- RAG Routing: 쿼리를 적절한 소스/파이프라인으로 분기하는 기법
- Policy-based Retrieval: 접근 제어·필터링 정책을 검색에 적용하는 기법