벡터가 가깝다고 질문에 알맞은 건 아니야
임베딩 검색은 보통 코사인 유사도로 결과의 순위를 매겨. 유사도와 관련성은 어느 정도 함께 움직이지만 같은 값은 아니야. 그래서 벡터 검색의 상위 K개에는 분위기와 어휘는 비슷해도 살짝 다른 질문에 답하는 청크가 자주 섞여. 재순위화 모델은 첫 검색 후보를 실제 질문과 하나씩 다시 비교해 이 오차를 줄여.
두 단계로 넓게 찾고 날카롭게 고르기
- 검색 — 싸고 넓게 찾는 단계야. 벡터 검색과 BM25를 섞어 상위 50개 정도를 모아.
- 재순위화 — 더 비싸지만 정밀해. 교차 인코더나 LLM으로 후보 50개가 질문에 얼마나 맞는지 다시 점수를 매겨.
- 꾸리기 — 새 순위에서 상위 N개 청크만 골라 답을 종합할 모델에 넣어.
추가 비용이 아깝지 않은 경우
- 법률·의료·고객 지원처럼 정밀도보다 먼저 정답 청크를 후보 안에 놓는 재현율이 중요할 때.
- 질문이 단일 낱말이나 덜 끝난 구절처럼 짧고 모호할 때.
- 말만 조금씩 다른 거의 같은 문서가 많아 구별이 어려울 때.
생략해도 되는 경우
- 지연 시간에 200밀리초조차 더할 수 없을 때.
- 첫 검색만으로 상위 세 개가 이미 95% 정확할 때.
- 비용이 가장 큰 제약이고 현재 정확도도 충분할 때.