AI VIDEO BRIEFING
RAG 검색 성능 개선법: 임베딩 모델 파인튜닝으로 문서 검색 지표를 최대 60% 높인 실험 과정 정리
범용 임베딩 모델은 법률처럼 좁은 분야의 문서에서 자주 헛다리를 짚는다. 판례 문서 지식베이스를 대상으로 임베딩 모델을 직접 파인튜닝해 검색 지표를 최대 60% 끌어올린 실험 과정을 데이터 준비부터 평가까지 단계별로 정리했다.

핵심 메시지
쉽게 이해하기
임베딩 모델은 RAG 파이프라인의 등뼈다. 비정형 문서를 밀집 벡터로 바꿔 의미 기반 검색을 가능하게 하고, 검색된 문서가 언어 모델의 답변 근거가 된다. 발표자는 그래서 답변 품질의 실질적인 상한선을 정하는 쪽은 언어 모델이 아니라 검색 단계라고 본다. 언어 모델은 건네받은 문서 안에서만 답할 수 있기 때문이다.
실험 무대는 법률 분야다. 판례 의견서 10건을 지식베이스로 두고, 재귀적 문자 분할기로 400자 단위 조각을 만든 뒤 각 조각으로만 답할 수 있는 질문을 배치 작업으로 생성했다. 중복 제거와 의미 유사도 기반 필터링을 거쳐 약 6,500개의 '질문-조각' 쌍이 남았다. 이는 이상적인 검색 결과, 즉 어떤 질문에 어떤 조각이 나와야 하는지를 정의한 정답표에 해당한다.
여기서 중요한 전제가 하나 있다. 이 방식은 새로운 문서로 일반화하는 모델을 만드는 것이 아니라, 이미 가진 지식베이스에 들어오는 '처음 보는 질문'에 대해 성능을 끌어올리는 최적화다. 그래서 학습 코퍼스에는 전체 조각을 넣되, 평가용 질문은 테스트 분할에서만 뽑아 쓴다.
기반 모델로는 Nomic AI가 ModernBERT 기반으로 학습한 임베딩 모델을 골랐다. 768차원 벡터를 내놓는 이 모델의 현재 성능을 먼저 재기 위해, 문서·질문·정답 매핑 세 가지 딕셔너리를 만들어 sentence-transformers의 정보 검색 평가기를 구성했다. 조각 하나에 질문이 여러 개 붙을 수 있으므로 전역 조각 ID로 이를 처리했다.
학습에는 다중 부정 랭킹 손실을 쓰고, 그 위에 마트료시카 손실을 감쌌다. 데이터가 앵커-정답 쌍뿐이라 같은 배치의 다른 쌍들을 자동으로 오답으로 삼는 방식이다. 4에폭, 배치 32, 그래디언트 누적 16으로 돌린 학습은 6분 만에 끝났고, 파인튜닝 후 nDCG@10은 모든 차원에서 뚜렷하게 올랐다. 특히 64차원으로 잘라낸 벡터가 기존 모델의 768차원과 비슷한 수준을 냈다.
주요 인사이트
- 합성 데이터로 시작했지만 진짜 자산은 운영 로그다. 발표자는 실제 서비스에서 사용자 질문과 검색된 조각, 그리고 어느 조각이 적절했는지에 대한 라벨을 모으면 그대로 이 학습 데이터가 된다고 말한다.
- 평가 지표 중 북극성으로 삼은 것은 nDCG@10이다. 정답 문서가 결과에 등장했는지(정확도)와 얼마나 위에 있는지(순위)를 함께 반영하기 때문이다. 정밀도·재현율·MRR·MAP은 각각 다른 각도에서 이를 보완한다.
- 마트료시카 표현 학습은 파인튜닝의 필수 요소가 아니라 덤에 가깝다. 그러나 벡터를 짧게 잘라 저장하면 벡터 DB 용량과 검색 속도에서 이득이 크고, 짧은 벡터로 후보를 추린 뒤 긴 벡터로 재랭킹하는 운용도 가능해진다.
- 삼중쌍(앵커·정답·오답) 데이터가 이상적이지만, 현실에서는 질문과 정답 조각 쌍을 모으는 편이 훨씬 쉽다. 손실 함수가 배치 내 다른 문서를 오답으로 활용하므로 쌍 데이터만으로도 시작할 수 있다.
- 발표자는 성과를 과장하지 않는다. 지표가 크게 올랐어도 지식베이스 바깥의 새 문서에 이 모델이 얼마나 통할지는 별도 검증이 필요하다고 못박는다.
자주 묻는 질문
이 방법은 지식베이스에 새 문서를 계속 추가하는 상황에도 맞나?
발표자는 그렇지 않다고 설명한다. 이 학습은 기존 문서 집합을 대상으로 처음 보는 질문의 검색 성능을 높이는 최적화다. 지식베이스가 늘거나 줄면 그때마다 추가 학습을 하는 방식으로 접근해야 한다.
학습 비용은 얼마나 드나?
영상 기준으로는 콜랩 노트북에서 약 6분 만에 4에폭 학습이 끝났다. 데이터셋은 판례 10건에서 만든 6,500여 쌍 규모였다.
마트료시카 표현 학습을 왜 같이 쓰나?
벡터의 앞쪽 차원에 굵직한 정보를, 뒤쪽에 세부 정보를 담도록 학습시키는 기법이다. 덕분에 768차원 벡터의 뒷부분을 잘라내 256차원이나 64차원으로 써도 정확도가 크게 떨어지지 않아, 저장 공간과 검색 속도에서 이득을 얻을 수 있다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗