데이터

하이브리드 검색

Hybrid Search

하이브리드 검색은 단어가 똑같은 문서를 찾는 키워드 검색(BM25)과 뜻이 비슷한 문서를 찾는 벡터 검색을 함께 돌려 결과를 합치는 방식이다. RAG가 모델명·에러코드 같은 정확한 단어나 바꿔 말한 질문을 놓쳐 엉뚱한 문서를 가져올 때 가장 먼저 시도해 볼 만한 개선책이다.

방식잘 찾는 것놓치는 것
키워드 (BM25)모델명, 에러코드, 고유명사다른 표현으로 쓴 같은 뜻
벡터 검색바꿔 말한 질문, 동의어정확한 버전명, 숫자
하이브리드둘 다비중 조절이 필요하다

한쪽만으로는 질문을 다 못 받는다

벡터 검색은 "환불 방법"을 물어도 "반품 절차" 문서를 찾아 준다. 하지만 "GPT-4o-2024-11-20"처럼 글자가 정확히 맞아야 하는 문자열은 비슷한 다른 버전과 잘 구분하지 못한다. BM25는 그 반대다.

실제 질문에는 두 종류가 섞여 있다. 그래서 둘을 함께 쓰면 한쪽이 놓친 문서를 다른 쪽이 찾아 준다.

점수는 순위로 합친다

두 검색은 점수 단위가 달라서 그대로 더할 수 없다. 보통은 순위를 기준으로 합치는 RRF(Reciprocal Rank Fusion)를 쓰거나, 점수를 같은 범위로 맞춘 뒤 가중치를 곱해 더한다.

합치는 법방식특징
RRF각 목록의 순위로 점수 계산튜닝 없이도 안정적이라 기본값으로 무난하다
점수 가중합정규화한 점수에 가중치를 곱해 합산세밀하게 조절되지만 실험이 필요하다

DB 옵션이나 리트리버 조합으로 켠다

Elasticsearch, Weaviate, Pinecone, Qdrant 같은 주요 검색·벡터 DB는 하이브리드 검색을 기본 기능으로 제공한다. Weaviate는 alpha(0~1)로 비중을 정하는데, 1이면 순수 벡터 검색이고 0이면 순수 키워드 검색이다.

LangChain에서는 EnsembleRetriever로 BM25Retriever와 벡터 리트리버를 묶고 weights로 비중을 정한다. 처음에는 반반으로 시작한다. 실제 질문 샘플로 정답 문서가 상위에 오는지 확인하면서 비중을 조정한다.

문서 종류비중
코드 문서, API 레퍼런스, 제품 매뉴얼키워드 쪽을 높게
FAQ, 고객 문의, 일반 글벡터 쪽을 높게
여러 종류가 섞여 있음반반에서 시작

한국어는 토크나이저부터 챙긴다

질문이 대부분 일상 대화이고 고유명사가 거의 없다면 벡터 검색만으로도 충분할 수 있다. 하이브리드 검색은 인덱스를 두 개 유지해야 해서 저장 공간과 관리 부담이 늘어난다.

BM25의 성능은 단어를 자르는 방식에 크게 좌우된다. 한국어는 조사가 붙어 있어서 공백 기준으로 자르면 매칭이 잘 안 되므로 형태소 분석기를 쓰는 편이 좋다. 합친 결과를 리랭커로 한 번 더 정렬하면 품질이 더 올라간다.

RAG 검색 단계의 기본값으로 쓴다

가장 흔한 건 RAG 챗봇의 검색 단계에 넣는 방식이다. 질문 하나로 두 검색을 함께 돌리고, 합친 상위 문서를 리랭커를 거쳐 모델에 넘긴다.

어디서어떻게 쓰나
사내 문서 검색규정 번호·제품명과 일상 표현이 섞인 질문을 같이 받아, 정확한 문서와 비슷한 뜻의 문서를 함께 찾는다
개발 문서·API 레퍼런스 챗봇함수명·에러코드는 키워드로 잡고, "이건 어떻게 해?" 같은 질문은 벡터로 받는다. 비중은 키워드 쪽을 높게
고객 지원 FAQ 봇바꿔 말한 문의는 벡터로 찾고, 상품명·모델명이 들어간 문의는 키워드로 보완한다. 비중은 벡터 쪽을 높게
#키워드검색#의미검색#BM25
참고 자료
관련 영상
← AI Wiki에서 더 보기
updated at 2026-10-20