<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Reranker on jyukki's Blog</title><link>https://jyukki.com/tags/reranker/</link><description>Recent content in Reranker on jyukki's Blog</description><generator>Hugo -- 0.147.0</generator><language>ko-kr</language><lastBuildDate>Sun, 29 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://jyukki.com/tags/reranker/index.xml" rel="self" type="application/rss+xml"/><item><title>2026 개발 트렌드: 하이브리드 검색 + 리랭커 + 컨텍스트 압축, RAG를 ‘검색’이 아니라 ‘정확도 파이프라인’으로 운영하는 방식</title><link>https://jyukki.com/posts/2026-03-29-hybrid-retrieval-reranker-context-compression-trend/</link><pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate><guid>https://jyukki.com/posts/2026-03-29-hybrid-retrieval-reranker-context-compression-trend/</guid><description>벡터 검색 단독 구성에서 벗어나 BM25+벡터+리랭커+컨텍스트 압축을 결합해, 실제 서비스 정확도와 비용을 함께 관리하는 최근 팀들의 운영 흐름을 정리합니다.</description><content:encoded><![CDATA[<p>RAG를 처음 도입할 때는 보통 &ldquo;임베딩 + 벡터DB + top-k&quot;로 시작합니다. 이 방식은 빠르게 결과를 보여주기엔 좋지만, 운영 기간이 길어질수록 한계가 명확해집니다. 문서가 늘고 도메인이 복잡해지면, 정답 문서를 못 찾거나 찾더라도 LLM 입력 문맥이 길어져 품질과 비용이 동시에 흔들립니다.</p>
<p>그래서 요즘 팀들이 실제로 옮겨 가는 구조는 단순합니다. <strong>검색 단계를 한 번 더 나누고, 컨텍스트를 압축해 &ldquo;정확도-지연-비용&quot;을 동시에 제어하는 파이프라인</strong>입니다. 핵심 조합은 하이브리드 검색(BM25 + 벡터) + 리랭커 + 컨텍스트 압축입니다.</p>
<h2 id="이-글에서-얻는-것">이 글에서 얻는 것</h2>
<ul>
<li>왜 벡터 검색 단독이 일정 규모 이후 흔들리는지, 병목이 생기는 지점을 구조적으로 이해할 수 있습니다.</li>
<li>하이브리드 검색/리랭커/압축을 붙일 때의 **의사결정 기준(지표·임계치·우선순위)**을 바로 적용할 수 있습니다.</li>
<li>4~6주 안에 파일럿에서 운영 승격까지 가져가는 현실적인 전개 순서를 잡을 수 있습니다.</li>
</ul>
<h2 id="핵심-개념이슈">핵심 개념/이슈</h2>
<h3 id="1-트렌드의-핵심-retriever-품질을-별도-제품으로-운영한다">1) 트렌드의 핵심: &ldquo;Retriever 품질&quot;을 별도 제품으로 운영한다</h3>
<p>예전에는 LLM 프롬프트 엔지니어링이 중심이었지만, 최근에는 retriever를 독립된 제품처럼 다룹니다. 이유는 명확합니다.</p>
<ul>
<li>잘못된 문서를 가져오면, 프롬프트를 아무리 잘 써도 답이 틀립니다.</li>
<li>정답 문서가 있어도 순위가 낮으면 실제 입력 컨텍스트에 들어가지 못합니다.</li>
<li>긴 컨텍스트를 무작정 넣으면 비용과 지연이 급격히 늘어납니다.</li>
</ul>
<p>즉 &ldquo;생성&quot;보다 앞단인 &ldquo;검색/선별/압축&quot;이 품질의 70% 이상을 좌우하는 환경이 많아졌습니다. 배경 개념은 <a href="/learning/deep-dive/deep-dive-vector-db-internals/">벡터 DB 내부 동작</a>과 <a href="/posts/2026-03-03-context-engineering-runtime-governance-trend/">Context Engineering 트렌드</a>를 함께 보면 연결이 쉽습니다.</p>
<h3 id="2-왜-하이브리드-검색이-기본값이-되었나">2) 왜 하이브리드 검색이 기본값이 되었나</h3>
<p>벡터 검색은 의미 유사성에 강하지만, 식별자·버전·에러코드 같은 정확 키워드에는 약한 경우가 있습니다. 반대로 BM25는 키워드 일치엔 강하지만 의미 확장엔 약합니다.</p>
<p>그래서 실무에서 많이 쓰는 기본형은 다음입니다.</p>
<ol>
<li>BM25와 벡터 검색을 병렬 실행</li>
<li>Reciprocal Rank Fusion(RRF) 또는 가중 합으로 1차 결합</li>
<li>상위 문서에 리랭커 적용해 최종 top-n 결정</li>
</ol>
<p>권장 시작점(파일럿 기준):</p>
<ul>
<li>후보 수집: BM25 top 40 + Vector top 40</li>
<li>결합 후 리랭커 입력: 상위 30</li>
<li>최종 LLM 컨텍스트 투입: 6~10개 청크</li>
</ul>
<p>이 구조는 단순 top-k보다 지연이 약간 늘지만, 정답 문서 회수율(recall@k)이 올라가고 &ldquo;그럴듯한 오답&rdquo; 비율을 눈에 띄게 줄이는 경우가 많습니다.</p>
<h3 id="3-리랭커의-역할은-성능-추가가-아니라-오탐-제거다">3) 리랭커의 역할은 &ldquo;성능 추가&quot;가 아니라 &ldquo;오탐 제거&quot;다</h3>
<p>많은 팀이 리랭커를 정확도 향상 도구로만 보는데, 운영 관점에선 오탐 제거 장치에 가깝습니다.</p>
<ul>
<li>유사하지만 무관한 문서(semantic false positive) 제거</li>
<li>오래된 문서가 최신 문서를 밀어내는 문제 완화</li>
<li>섹션 단위 relevance를 재평가해 컨텍스트 낭비 축소</li>
</ul>
<p>특히 규정/정책/매뉴얼 문서처럼 표현이 비슷한 데이터셋에서 효과가 큽니다. 이 단계는 <a href="/posts/2026-03-09-agent-evals-simulation-digital-twin-trend/">Evals 기반 개발 흐름</a>처럼 테스트셋을 함께 관리해야 안정적으로 굴러갑니다.</p>
<h3 id="4-컨텍스트-압축이-없으면-정확도가-올라가도-비용이-무너진다">4) 컨텍스트 압축이 없으면 정확도가 올라가도 비용이 무너진다</h3>
<p>하이브리드 + 리랭커로 문서 품질을 높이면, 역설적으로 &ldquo;넣고 싶은 문서&quot;가 많아집니다. 이때 압축이 없으면 지연·비용이 급증합니다.</p>
<p>주요 압축 전략:</p>
<ul>
<li>쿼리 관련 문장만 추출(문서 전체 투입 금지)</li>
<li>중복 근거 문장 병합(semantic dedup)</li>
<li>테이블/코드블록은 요약 + 원문 포인터로 분리</li>
<li>토큰 예산 초과 시 근거 신뢰도 낮은 청크 우선 제거</li>
</ul>
<p>이렇게 해야 토큰 비용을 제어하면서도 근거 기반 응답을 유지할 수 있습니다. 보안/거버넌스 측면은 <a href="/posts/2026-03-25-llm-gateway-prompt-firewall-dlp-trend/">LLM Gateway + Prompt Firewall 트렌드</a>와 함께 설계하는 편이 안전합니다.</p>
<h2 id="실무-적용">실무 적용</h2>
<h3 id="1-의사결정-기준숫자조건우선순위">1) 의사결정 기준(숫자·조건·우선순위)</h3>
<p>우선순위는 <strong>정확도 안정화 &gt; 지연 관리 &gt; 비용 최적화</strong> 순으로 두는 게 보통 성공 확률이 높습니다.</p>
<p>운영 기준 예시:</p>
<ul>
<li>검색 품질: <code>recall@20 &gt;= 0.85</code>를 파일럿 승격 최소 조건으로 설정</li>
<li>답변 근거성: grounded answer 비율 <strong>90% 이상</strong></li>
<li>지연: retriever + reranker 구간 p95 <strong>700ms 이하</strong></li>
<li>비용: 요청당 평균 입력 토큰 <strong>30~40% 절감</strong> 목표</li>
<li>안전장치: 잘못된 근거 문서 인용률이 주간 <strong>2%p 이상 상승</strong>하면 즉시 롤백</li>
</ul>
<h3 id="2-6주-도입-플랜과장-없는-현실-버전">2) 6주 도입 플랜(과장 없는 현실 버전)</h3>
<p><strong>1주차: 기준선 수집</strong></p>
<ul>
<li>현재 파이프라인의 recall, groundedness, p95 latency, 요청당 토큰 비용 측정</li>
<li>도메인별 대표 질의 200~500개 평가셋 확정</li>
</ul>
<p><strong>2~3주차: 하이브리드 검색 적용</strong></p>
<ul>
<li>BM25 + 벡터 병렬 검색 추가</li>
<li>fusion 가중치 2~3안 실험, recall 중심으로 1차 선택</li>
</ul>
<p><strong>4주차: 리랭커 도입</strong></p>
<ul>
<li>상위 후보 20~30개만 리랭킹해 지연 상한 제어</li>
<li>도메인별 오탐 감소율을 별도 리포트</li>
</ul>
<p><strong>5주차: 컨텍스트 압축 적용</strong></p>
<ul>
<li>문장 추출/중복 제거/토큰 예산 정책 도입</li>
<li>비용 감소와 정답률 하락 여부를 같이 확인</li>
</ul>
<p><strong>6주차: 운영 게이트 설정</strong></p>
<ul>
<li>지표 임계치 기반 자동 승격/롤백 규칙 연결</li>
<li>배포 전 eval 통과 없으면 프로덕션 반영 금지</li>
</ul>
<h3 id="3-팀-역할-분리-기준">3) 팀 역할 분리 기준</h3>
<p>혼선이 줄어드는 일반적인 분리는 아래와 같습니다.</p>
<ul>
<li>검색/데이터 팀: 인덱스, 청크 정책, fusion 튜닝</li>
<li>AI 애플리케이션 팀: 프롬프트/도구호출/응답 포맷</li>
<li>플랫폼/SRE: 지표, 게이트, 비용/보안 정책</li>
</ul>
<p>&ldquo;한 팀이 전부&rdquo; 구조로 가면 초기 속도는 빠르지만 2~3개월 후 운영 피로가 급격히 올라갑니다. 관측 기준선은 <a href="/learning/deep-dive/deep-dive-observability-baseline/">Observability Baseline</a>을 맞춰 두면 관리가 쉽습니다.</p>
<h2 id="트레이드오프주의점">트레이드오프/주의점</h2>
<ol>
<li>
<p><strong>정확도 상승이 항상 사용자 체감으로 직결되진 않는다</strong><br>
질문 의도 분류가 약하면 검색이 좋아져도 체감 개선이 제한됩니다.</p>
</li>
<li>
<p><strong>리랭커는 지연 예산을 빠르게 소모한다</strong><br>
후보 수를 과하게 늘리면 p95가 급상승합니다. &ldquo;적정 후보 수&quot;를 먼저 찾아야 합니다.</p>
</li>
<li>
<p><strong>압축이 과하면 근거 손실이 생긴다</strong><br>
토큰을 아끼려다 중요한 조건문/예외 규칙이 빠지면 오답이 늘어납니다.</p>
</li>
<li>
<p><strong>평가셋이 낡으면 지표가 거짓 안정성을 만든다</strong><br>
문서 구조와 사용자 질문이 바뀌는 주기에 맞춰 평가셋도 갱신해야 합니다.</p>
</li>
</ol>
<h2 id="체크리스트-또는-연습">체크리스트 또는 연습</h2>
<h3 id="체크리스트">체크리스트</h3>
<ul>
<li><input disabled="" type="checkbox"> 벡터 단독이 아니라 BM25 + 벡터 하이브리드 검색을 비교 실험했다.</li>
<li><input disabled="" type="checkbox"> 리랭커 도입 전/후 오탐률 변화를 수치로 기록한다.</li>
<li><input disabled="" type="checkbox"> 컨텍스트 압축 정책(추출/중복제거/예산)이 문서화돼 있다.</li>
<li><input disabled="" type="checkbox"> recall/groundedness/latency/cost를 한 대시보드에서 본다.</li>
<li><input disabled="" type="checkbox"> eval 미통과 시 배포 차단 규칙이 CI 또는 게이트웨이에 연결돼 있다.</li>
</ul>
<h3 id="연습-과제">연습 과제</h3>
<ol>
<li>현재 운영 질의 100개를 뽑아, 벡터 단독 vs 하이브리드의 recall@20 차이를 계산해 보세요.</li>
<li>리랭커 후보 수를 10/20/30으로 바꿔 p95 latency와 groundedness 변화를 비교해 보세요.</li>
<li>컨텍스트 압축 정책을 2가지(문장 추출형, 요약형)로 나눠 비용 대비 정답률을 비교해 보세요.</li>
</ol>
<h2 id="관련-글">관련 글</h2>
<ul>
<li><a href="/learning/deep-dive/deep-dive-vector-db-internals/">벡터 DB 내부 구조와 튜닝 포인트</a></li>
<li><a href="/posts/2026-03-03-context-engineering-runtime-governance-trend/">Context Engineering + Runtime 거버넌스 트렌드</a></li>
<li><a href="/posts/2026-03-09-agent-evals-simulation-digital-twin-trend/">Evals Driven Development 트렌드</a></li>
<li><a href="/posts/2026-03-25-llm-gateway-prompt-firewall-dlp-trend/">LLM Gateway + Prompt Firewall + DLP 트렌드</a></li>
<li><a href="/learning/deep-dive/deep-dive-observability-baseline/">Observability Baseline 설계</a></li>
</ul>
]]></content:encoded></item></channel></rss>