4분
Hybrid Search 성능 튜닝 전략
Day 2: Hybrid Search
Hybrid Search 성능 튜닝 전략
RAG 심화 > Day 2: Hybrid Search
학습 목표
- Hybrid Search의 alpha 파라미터 튜닝 방법을 이해한다
- RRF(Reciprocal Rank Fusion)와 Score Fusion의 차이를 설명할 수 있다
- 시뮬레이터에서 alpha·청크 크기·top-K 를 바꿔 가며 hit rate 와 MRR 의 변화를 직접 측정한다
Hybrid Search 성능 튜닝
Alpha 파라미터란?
alpha는 BM25(키워드)와 Semantic(의미) 검색의 가중치 비율이다.
hybrid_score = alpha * semantic_score + (1 - alpha) * bm25_score
alpha = 1.0 → 완전 Semantic
alpha = 0.0 → 완전 BM25
alpha = 0.5 → 균등 혼합제조 쿼리 유형별 최적 alpha
| 쿼리 유형 | 예시 | 최적 alpha | 이유 |
|---|---|---|---|
| 에러 코드 | E-4521, W-1105 | 0.2 | 코드 정확 매칭 필요 |
| 규격/표준 | ISO 9001, KS B 1234 | 0.25 | 표준 번호 정확 매칭 |
| 증상 설명 | 진동이 심하고 온도 상승 | 0.8 | 의미 기반 검색 효과 |
| 절차 질의 | 금형 교체 방법 | 0.7 | 개념적 유사성 중요 |
| 부품 조회 | 베어링 7210C | 0.4 | 이름+의미 혼합 |
RRF vs Score Fusion
Score Fusion: 점수를 직접 합산
# 점수 정규화 후 가중 합산
bm25_norm = normalize(bm25_scores) # 0~1
semantic_norm = normalize(semantic_scores) # 0~1
final = alpha * semantic_norm + (1 - alpha) * bm25_norm
RRF (Reciprocal Rank Fusion): 순위 기반 합산
# 순위의 역수로 합산 (k=60이 표준)
def rrf_score(rank, k=60):
return 1 / (k + rank)
final = rrf_score(bm25_rank) + rrf_score(semantic_rank)
| 비교 | Score Fusion | RRF |
|---|---|---|
| 장점 | alpha로 세밀 조절 | 파라미터 불필요 |
| 단점 | 정규화 필수, alpha 튜닝 | 점수 차이 반영 약함 |
| 적합 | 쿼리 유형 예측 가능 | 다양한 쿼리 처리 |
A/B 테스트로 alpha 최적화
def evaluate_alpha(alpha, test_queries, ground_truth):
hits = 0
for query, relevant_docs in zip(test_queries, ground_truth):
results = hybrid_search(query, alpha=alpha, top_k=5)
if any(doc in results for doc in relevant_docs):
hits += 1
return hits / len(test_queries)
# 0.0 ~ 1.0 범위에서 최적 alpha 탐색
best_alpha = max(
((alpha, evaluate_alpha(alpha, test_q, gt))
for alpha in [i/10 for i in range(11)]),
key=lambda x: x[1]
)[0]
print(f"최적 alpha: {best_alpha}")
글로 읽지 말고 슬라이더를 움직여라
위 코드를 돌리려면 평가셋과 임베딩 API 가 필요하다. 아직 없다면 연결된
rag-pipeline 시뮬레이터의 평가·튜닝 탭에서 같은 일을 할 수 있다.
질문 세트와 코퍼스가 이미 들어 있고, 노브를 움직이면 hit rate 와 MRR 이
그 자리에서 다시 계산된다. 하드코딩된 값이 아니라 실제 검색 결과에서 나온 값이다.
움직일 수 있는 것은 다섯 가지다 — 청크 크기, 오버랩, top-K, 리랭커 on/off, 하이브리드 alpha. 다음 순서로 재라.
- alpha 를 1.0(벡터만)에서 0.0(BM25만)까지 옮기며 hit rate 를 적는다. 최고점은 어디인가.
- 그 alpha 를 고정하고 청크 크기를 바꾼다. alpha 의 최적값이 따라 움직이는가.
- 목표 hit rate 는 0.85 다. 기본 설정으로는 닿지 않는다. 어떤 조합에서 넘는가.
세 번째가 이 시뮬의 핵심이다. 하나의 노브만으로는 목표에 닿지 않게 설계되어 있고, 그것이 실제 튜닝의 모습이다.
실무 팁: 제조 현장은 에러 코드/규격 번호 쿼리가 많으므로 alpha=0.3~0.4가 흔히 좋은 출발점이다. 다만 이것은 출발점이지 결론이 아니다. 위 순서대로 직접 재서 정하라.
AI로 학습하기 — 꿀팁
Hybrid Search alpha 튜닝 실험 계획AI 학습 팁
제조 RAG의 BM25·벡터 가중치(alpha) 최적값을 찾기 위한 체계적 실험 설계를 AI와 함께 만들면 시행착오 없이 튜닝할 수 있습니다.
제조 설비 매뉴얼 RAG의 Hybrid Search alpha 파라미터를 최적화하기 위한 실험 계획을 만들어줘. 포함 내용: (1) 실험 설계 — alpha를 0.0, 0.25, 0.5, 0.75, 1.0으로 변화시킬 때 각각 MRR@5, Recall@10을 측정하는 방법, (2) 제조 쿼리 유형별 분류(약어 검색/개념 검색/절차 검색/수치 검색) 각 10개씩 40개 테스트 쿼리 생성 방법, (3) RRF vs Score Fusion 비교 실험 설계, (4) 결과 해석 기준(어떤 지표가 가장 높은 alpha를 최적으로 선택하는 방법). 파이썬 실험 코드 골격도 함께 작성해줘.
이 팁이 도움이 됐나요?
실습 — 직접 해보기
RAG Pipeline - 평가·튜닝 탭
alpha·청크 크기·top-K·리랭커를 움직이며 hit rate 와 MRR 이 어떻게 변하는지 직접 재보세요. 목표 hit rate 0.85 는 기본 설정으로는 닿지 않습니다.
핵심 포인트
- • alpha는 BM25와 Semantic 가중치 비율 — 에러코드 쿼리는 낮게(0.2), 증상 쿼리는 높게(0.8)
- • RRF는 점수 스케일 문제가 없어 기본값으로 쓸 만하고, Score Fusion은 평가셋을 갖춘 뒤 세밀 제어에 쓴다
- • 최적 alpha 는 청크 크기와 함께 움직인다. 노브 하나만 돌려서는 목표 지표에 닿지 않는다