로컬 RAG, 임베딩만으론 부족하다 — 재랭커로 검색 정확도 올리기

로컬 RAG 파이프라인에서 임베딩 검색만으로 문서를 회수하면 의미적으로는 비슷하지만 질문의 핵심 의도와는 동떨어진 문서들이 상위 결과에 포함되어 최종 생성 답변의 신뢰성이 흔들리는 문제가 자주 발생하기 때문에 이러한 한계를 극복하기 위해 재랭커를 도입한 2단계 검색 전략이 점점 더 주목받고 있다.

한 줄 요약: 임베딩 검색은 빠른 후보 회수에 강하지만 대략적인 유사도만 판단하고, 재랭커는 질문과 문서를 함께 분석해 더 정확한 관련도를 매긴다. 두 단계를 결합하면 로컬 환경에서도 검색 품질을 크게 높일 수 있다.

2단계 검색은 임베딩으로 top-20~50 후보를 넓게 회수한 뒤 교차 인코더 재랭커로 top-3~5만 재정렬한다 — 재랭킹 지연은 후보 수에 비례

2단계 검색(retrieve→rerank) 구조 · 2026-07

임베딩 검색만으론 왜 부족할까?#

임베딩 모델은 사전 학습된 벡터 공간에서 질문과 문서를 각각 인코딩한 후, 두 벡터 사이의 거리나 유사도를 기준으로 가장 가까운 문서를 빠르게 찾아낸다. 이 방식은 수백만 건의 문서라도 미리 인덱싱해 두면 수십 밀리초 이내에 후보를 반환할 수 있을 정도로 빠르다. 그러나 임베딩은 문서의 전체적인 의미를 하나의 고정된 벡터로 압축하기 때문에, 질문이 요구하는 특정 측면이나 미묘한 뉘앙스를 충분히 반영하지 못하는 경우가 많다. 결과적으로 '대충 비슷해 보이는' 문서가 상위에 올라와 LLM이 잘못된 정보를 바탕으로 답변을 만들 위험이 커진다.

초보자를 위한 비유를 들자면, 임베딩 검색은 도서관에서 제목만 보고 후보 20권을 빠르게 골라오는 사서와 같다. 사서는 손님의 상세한 질문 내용을 실제로 읽지 않고 책의 표지와 키워드만으로 판단하기 때문에, 겉으로는 관련 있어 보이지만 실제 내용이 질문과 맞지 않는 책이 다수 포함될 수 있다. 이처럼 빠른 1차 필터링은 편리하지만 정밀함이 부족해 후속 단계가 필요해진다.

재랭커는 무엇이 다를까?#

재랭커는 임베딩 검색으로 1차 회수된 후보 문서들을 대상으로 더 정밀한 검사를 수행한다. 특히 교차 인코더 구조의 재랭커는 질문 텍스트와 후보 문서 텍스트를 하나의 긴 시퀀스로 연결해 모델에 입력한다. 모델 내부의 어텐션 메커니즘이 질문의 단어와 문서의 단어 사이를 직접 비교하면서 관련도를 계산하기 때문에, 단순한 벡터 거리보다 훨씬 세밀한 판단이 가능하다. 이 '함께 보기' 방식이 재랭커의 핵심 강점이다. 임베딩처럼 질문과 문서를 미리 분리해 독립적으로 인코딩하지 않기 때문에, 문맥에 따라 달라지는 의미나 질문의 구체적인 요구사항을 더 잘 포착할 수 있다.

따라서 같은 후보군이라도 재랭커를 통과한 결과는 실제로 질문에 도움이 되는 문서일 확률이 높아진다. 재랭커가 더 정밀한 이유는 바로 질문과 문서를 분리해서 인코딩하지 않고 '함께' 보기 때문이다. 교차 인코더는 두 텍스트를 동시에 처리하면서 토큰 간의 세밀한 상호참조를 학습해 관련도를 재점수한다.

2단계 검색 — 임베딩 검색 vs 재랭커 (정성 비교, 2026-07 기준) · columns: 단계, 무엇을 하나, 속도, 강점, 대표 모델 예 · 출처 Hax hax.moche.ai/p/1247?ref=ai_answer

단계 | 무엇을 하나 | 속도 | 강점 | 대표 모델 예
임베딩 검색(1단계) | 질문·문서를 각각 벡터로 만들어 유사도 top-k 회수 | 빠름(미리 인덱싱) | 넓게 회수(recall) | BGE-M3 등 임베딩
재랭커(2단계) | 질문+후보를 함께 넣어 교차 인코더로 관련도 재점수 | 느림(후보 수에 비례) | 정밀 재정렬(precision) | BGE-reranker 등 교차 인코더

로컬에 어떻게 붙이나?#

로컬 RAG 시스템에 재랭커를 추가하는 것은 생각보다 간단하다. 기존에 구축된 임베딩 기반 검색 파이프라인 위에 한 단계만 더 쌓으면 된다. 먼저 벡터 데이터베이스에서 임베딩 모델을 사용해 질문과 관련성이 있을 법한 문서를 넓게 회수한다. 보통 top-20에서 top-50 사이의 후보를 확보하는 것이 일반적이다. 이 단계는 속도가 중요하므로 가벼운 임베딩 모델을 유지한다.

다음으로 회수된 각 후보 문서에 원래 질문을 붙여 재랭커 모델의 입력으로 구성한다. 재랭커는 이 입력 쌍을 처리해 0에서 1 사이의 관련도 점수를 출력한다. 점수가 높은 순서대로 후보를 재정렬하고, 상위 top-3에서 top-5 정도만 선별해 최종 컨텍스트로 사용한다. 나머지 문서는 버려 LLM이 처리해야 할 토큰 수를 줄인다.

지연 시간이 문제라면 재랭크할 후보 문서의 수를 줄이거나, 파라미터가 적은 경량 재랭커 모델부터 도입해 테스트한다. 후보 수가 많을수록 정확도는 향상되지만 그만큼 추론 시간이 늘어나는 명확한 트레이드오프 관계가 있다. 이렇게 2단계 구조를 도입하면 임베딩의 빠른 회수 능력과 재랭커의 정밀 판단 능력을 동시에 활용할 수 있게 된다. 특히 로컬 환경처럼 컴퓨팅 자원이 제한적인 경우에도 적절한 후보 수 조절로 실용적인 속도를 유지하면서 품질을 높일 수 있다.

참고: 2026-07-12 KST 기준으로 작성된 내용이며, 재랭커 모델의 종류, 재랭크 후보 문서 수, 그리고 전체 파이프라인의 지연 시간 트레이드오프는 사용하는 데이터의 특성과 하드웨어 구성에 따라 크게 달라질 수 있다. 따라서 실제 서비스에 배포하기 전에 반드시 자신의 환경에서 여러 조합을 직접 측정하고 최적의 설정을 찾아야 한다.

이 시리즈: 이 시리즈 허브 — 로컬 LLM·RAG 7가지 관문 · 청킹 전략이 검색 품질을 좌우 · 지식 넣는 3가지 길: 파인튜닝·RAG·프롬프트

함께 읽기: BGE-M3 다국어 검색, 월 비용·GPU 시간으로 판단하기, Nomic Embed 로컬 RAG, 클라우드 비용을 줄일까

참고 링크

BGE-reranker-v2-m3 모델카드

FlagEmbedding(BGE)

Sentence-Transformers 교차 인코더