2026년 8월 26일 수요일

RAG 실전 ⑥ — 검색 품질: 검색 실패의 3분의 2는 LLM 호출 없이 사라진다

2026년 검색 품질의 표준 스택은 이것이다: 하이브리드(BM25+덴스, RRF) → 크로스인코더 리랭킹 → Contextual Retrieval 전처리. Anthropic 실측으로 top-20 검색 실패율 5.7%→1.9%(-67%) — 그리고 이 중 어느 단계도 쿼리 시점 LLM 호출이 없다.

1층: 하이브리드 — RRF k=60으로 시작

덴스 검색은 고유명사·제품코드·오타에 약하고 BM25는 동의어에 약하다. 둘을 합치는 가장 안전한 시작점이 RRF(score += 1/(k+rank), k=60): 점수 스케일이 달라도 가중치 튜닝 없이 각각 단독보다 좋다. 튜닝 여력이 생기면 점수 정규화 fusion + α 가중(Weaviate 실측 RRF 대비 recall +6%, 키워드 중요 도메인은 α 0.3~0.5)으로.

한국어 전제조건: 형태소 토크나이저

공백 분리로는 "선생님께서"와 "선생님이"가 다른 토큰 — 한국어 BM25는 토크나이저가 성패를 가른다. ES/OpenSearch면 공식 플러그인 Nori(decompound_mode=mixed로 복합명사 리콜 확보), 파이썬 스택이면 Kiwi(오타·띄어쓰기 교정 내장 — 채팅체 실쿼리에 유효). 가장 흔한 실패: 도메인 고유명사(제품명·사내 용어)를 사용자 사전에 안 넣어서 엉뚱하게 쪼개져 BM25 리콜이 조용히 새는 것.

2층: 리랭커 — 오픈소스가 상용 API를 역전했다

top-50~100을 크로스인코더로 top-5~20으로. 자기 호스팅 기본값은 bge-reranker-v2-m3(568M, 다국어). 2025-26의 변화: mxbai-rerank-v2(Apache-2.0, 1.5B)가 BEIR 57.49로 Cohere Rerank 3.5(55.39)를 추월 — A100에서 쿼리당 0.89초. 한국어 특화 파인튜닝 경로는 ko-reranker(MRR 0.80→0.87)가 검증돼 있다. GPU 운영이 싫으면 Cohere API(1천 검색당 $2) — 단 ARAGOG 연구에서 데이터셋에 따라 리랭커 이득이 본전인 사례도 있으니 자기 데이터 nDCG로 재보고 결정.

쿼리 변환은 "기본 탑재"가 아니라 선택적 무기

  • HyDE — 가상의 정답 문서를 생성해 그걸로 검색. 품질 최고치를 주지만(Fudan 비교에서 Hybrid+HyDE가 최고 mAP) 쿼리당 ~11초의 대가. 그리고 사내 고유명사 질문에선 가상 문서가 엉뚱한 방향으로 환각해 검색을 망치는 역효과가 검증됐다(LlamaIndex의 "What is Bel?" 사례).
  • step-back 프롬프팅 — 구체적 질문을 추상화해 함께 검색(TimeQA +27%). 검색 비용 2배이므로 라우터로 복잡한 질문에만.
  • 네거티브 결과도 있다ARAGOG: multi-query는 baseline보다 낮았고 MMR은 이득 없음. 어떤 기법이든 골든셋 A/B 없이 프로덕션에 넣지 마라(평가 시리즈 참조).

균형 잡힌 기본 구성은 Fudan의 모듈 조합 실험(EMNLP 2024)과 동일하다: 하이브리드 검색 + 크로스인코더 리랭킹 + 512토큰 청크 — 최고 성능 구성(+HyDE)과의 품질 차이는 작고 속도는 훨씬 빠르다.

한 줄 요약: 화려한 쿼리 변환보다 "토크나이저 제대로 + 하이브리드 + 리랭커"가 먼저다.

— RAG 실전 시리즈 ⑥ / 다음 글: 생성과 grounding — 무엇을 넣지 않을지, 언제 답하지 않을지

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

에이전트 설계 ⑪ (완결) — 프레임워크와 2026 스택: 제어 흐름의 소유권만은 넘기지 마라

마지막 편. 프레임워크 전쟁은 사실상 수렴했다 — 모든 메이저 벤더가 공식 SDK를 냈고 원시 개념(도구 루프·subagent/handoff·체크포인팅·MCP)도 동일해졌다. 차별화 전선은 루프가 아니라 하네스 품질과 내구성(durability) 으로...