검색에서 쿼리 표현이 결정적이지만 query rewriting보다 하이브리드 retrieval이 ROI가 크다
·수정 1회
요약
- BM25는 bag-of-words라 의미를 모르고 단어 매칭만 함 → 쿼리 단어와 문서 단어가 정확히 겹쳐야 점수가 나옴
- 벡터 검색도 쿼리 표현이 임베딩을 결정하므로 표현 민감도가 여전히 큼 (HyDE, Query2Doc 같은 기법이 등장한 이유)
- 그러나 금융 QA 벤치마크 결과, query rewriting(CRAG, RAG-Fusion)보다 단순 BM25+vector 하이브리드가 더 큰 recall 개선을 가져옴
- 결론: "쿼리를 잘 만들라"보다 하이브리드 검색 + 동의어/형태소 처리 + 도구 스키마 설계가 비용 대비 효과적
본문
BM25에서 쿼리가 결정적인 이유
BM25는 의미 이해가 없는 bag-of-words 모델. 같은 뜻을 가진 다른 표현을 못 잡는다:
- "장애 대응" vs "인시던트 핸들링" vs "IM" → 정확히 겹치는 토큰이 없으면 0점
- "Car charging time" vs "EV battery refill duration" → 동일 의미라도 매칭 실패
따라서 BM25를 쓸 거면 다음이 사실상 필수:
- 형태소 분석/stemming (한국어면 mecab/kiwi)
- 동의어 사전 (incident → 장애, 인시던트, 이슈)
- stopword 처리
벡터 검색이라고 쿼리가 안 중요한 건 아님
임베딩이 의미를 보긴 하지만, 쿼리 표현이 임베딩 결과를 바꾸기 때문에 여전히 민감. dense retriever에도 위치 편향, 어휘 편향 등 체계적 편향이 보고됨.
그래서 등장한 쿼리 재작성 기법:
- HyDE (Hypothetical Document Embeddings): 원래 쿼리 대신 LLM이 생성한 가상 문서의 임베딩으로 검색
- Query2Doc: LLM이 만든 의사 문서를 쿼리에 이어붙여 확장
- Multi-turn rewriting: "그 timeout은 어때?" → "XYZ 서비스의 기본 timeout 값은?" 같이 대명사·암묵 참조 풀기 (self-contained, deictic-free)
벤치마크 현실: rewriting보다 하이브리드
금융 QA 23,088 쿼리 벤치마크 결과 (Recall@5):
| 방법 | Recall@5 | vs BM25 |
|---|---|---|
| BM25 | baseline | — |
| CRAG (쿼리 적응적 재작성) | 0.658 | +1.4pp |
| RAG-Fusion (multi-query) | 0.640 | ≈0 |
| 단순 hybrid fusion | 0.695 | +3.7pp |
시사점:
- 도메인 쿼리가 이미 구체적이고 잘 정의돼 있으면 multi-query는 수확 체감
- Query rewriting만으로는 sparse(BM25)와 dense(vector) 검색의 상호보완성을 못 따라잡음
- 인프라 자원은 rewriting 파이프라인보다 hybrid retrieval에 투자하는 게 ROI 큼
그래도 쿼리가 중요한 영역
자연어 RAG/agent 호출 시나리오에서는 쿼리 품질이 여전히 핵심:
- Anthropic의 도구 작성 가이드: 도구 설명에 사용 패턴 명시 ("약어보다 풀어 쓴 용어를 우선") → agent의 쿼리 품질 향상
- Server 측 쿼리 정규화 (동의어 확장, stemming, stopword 제거)로 agent의 쿼리 변동성 흡수
- Multi-turn에서는 query resolution(대명사/생략 풀기)이 필수
MCP wiki 검색 도구 설계 함의
"쿼리가 중요하다"가 실무적으로 의미하는 결정 사항:
- 도구 설명에 사용 패턴 기술: agent가 어떤 쿼리를 보내는지가 결과를 좌우 → description에 "약어 풀어쓰기" 같은 지침 포함
- 서버 측 정규화 내장: 동의어/형태소 처리를 agent가 아닌 도구 안에서 처리해 변동성 흡수
- 하이브리드를 기본값으로: rewriting 파이프라인보다 BM25+vector 결합이 우선
- 입력 스키마로 강제:
query만 받지 말고must_include_terms,filters(부서/날짜/문서 타입) 같은 구조화 파라미터 추가 → 자연어 쿼리를 더 정밀하게 분해하도록 유도 - multi-turn 대응: 대화형 사용 시 query resolution 단계를 도구 내부 또는 host agent에서 처리
핵심 원칙: 쿼리 변동성을 agent에 맡기지 말고 도구 인프라가 흡수한다.
관련 노트
- BM25는 TF 포화 함수와 길이 정규화로 TF-IDF의 한계를 해결한다
qmd는 BM25, 벡터, LLM 리랭킹을 로컬 SQLite에서 결합한다- qmd MCP는 한국어 작은 vault에서 Claude grep 베이스라인을 능가하지 못한다
- 텍스트 임베딩으로 광역 후보를 좁히고 CLIP 이미지 유사도로 시각 정밀 탐색하는 2단계 검색 구조
참고
- HyDE: Gao et al. (2022). "Precise Zero-Shot Dense Retrieval without Relevance Labels" — https://arxiv.org/abs/2212.10496
- Query2Doc: Wang et al. (2023). "Query2doc: Query Expansion with Large Language Models" — https://arxiv.org/abs/2303.07678
- RAG-Fusion / CRAG 벤치마크: arXiv 금융 QA 23K 쿼리 비교
- Anthropic tool writing guide: https://www.anthropic.com/engineering/writing-tools-for-agents
- RRF (Reciprocal Rank Fusion): Cormack et al. (2009)