RAG 챗봇은 모델보다 검색 설계가 더 중요할 수 있다

을 직접 만들 때 많은 실패는 자체보다 필요한 자료를 잘못 찾는 과정에서 생겼다. 처음에는 벡터 검색만 썼지만, 이후 BGE와 를 쓰는 밀집 검색, BM25, RRF, CrossEncoder 재정렬을 추가했다. 이런 개선도 도움이 됐지만, 특히 효과가 컸던 방법은 웹사이트 주소 구조와 메타데이터를 이용해 자료를 나눠 찾는 방식이었다.

대학 챗봇이라면 입학, 학과, 시험, 장학금, 공지, 학생 서비스처럼 내용을 미리 묶어둔다. 사용자가 장학금을 물으면 전체 문서를 모두 훑기보다 장학금 관련 자료를 먼저 찾게 할 수 있다. 이 방식은 엉뚱한 검색 결과를 줄이고, 필요한 정보를 더 잘 찾게 했으며, 재정렬 단계가 더 좋은 후보 자료에 집중하게 했다.

핵심 교훈은 모델을 바꾸는 것보다 검색 설계를 고치는 일이 챗봇 품질에 더 큰 영향을 줄 수 있다는 점이다. 관련 예시 코드는 GitHub의 omnichannel-rag- 저장소에 공개돼 있다.

핵심 포인트

  • 챗봇 실패의 큰 원인은 모델보다 잘못된 자료 검색일 수 있다.
  • 벡터 검색만 쓰는 방식에서 밀집 검색, BM25, RRF, CrossEncoder 재정렬을 추가했다.
  • 웹사이트 내용을 입학, 학과, 시험, 장학금처럼 주제별로 나누면 검색 범위를 줄일 수 있다.
  • 메타데이터를 이용하면 질문과 관련 있는 문서를 먼저 찾아 낭비를 줄일 수 있다.
  • 검색 설계 개선은 모델 교체보다 챗봇 품질에 더 큰 효과를 낼 수 있다.
원문 보기