8.8.2 검색 범위 확장 및 파라미터 동적 조정을 통한 재시도 전략
RAG(Retrieval-Augmented Generation) 시스템 내의 오라클(Oracle) 파이프라인이 1차 검색 결과를 ‘지식 불충분(Insufficient Context)’ 혹은 ’환각(Hallucination)’으로 판정하여 Fail을 선언했을 때, 시스템이 그대로 사용자에게 실패 메시지를 던지는 것은 우아한 소프트웨어 공학이 아니다. 진정한 의미의 자율 치유(Self-Correction) 로직은 실패를 인지한 즉시, 벡터 데이터베이스(Vector DB)로 돌아가 검색 파라미터를 동적으로 재설정하고 지식의 탐색 범위를 확장하는 재시도(Retry) 메커니즘을 가동해야 한다.
1. Top-K 파라미터의 계단식(Cascading) 확장
가장 원초적이고 확실한 재시도 전략은 검색 청크(Chunk)의 갯수, 즉 Top-K 값을 동적으로 늘리는 것이다.
- 발생 시나리오: 사용자가 “2023년 3분기 북미 지역 B2B 매출 총액“을 물었다. 1차 RAG는
Top-K=3으로 설정되어 가장 유사도가 높은 청크 3개를 모델에 주입했으나, 오라클 검증 결과 3개의 청크 모두 ’총액’을 포함하지 않아 Fail 판정을 내렸다. - 동적 조정 로직: 오라클은 즉시 재시도 서킷(Retry Circuit)을 발동하여
Top-K를 3에서 10으로, 필요하다면 20까지 순차적으로 증가시킨다. 검색 공간(Search Space)을 넓혀 B2B 매출 관련 세부 데이터가 포함된 꼬리(Long-tail) 청크까지 문맥(Context)에 포함시킨 후, LLM에 다시 추론을 요청한다.
이러한 계단식 확장은 평상시에는 낮은 Top-K로 토큰 비용과 지연 시간(Latency)을 최소화하고, 오라클이 실패를 감지한 엣지 케이스(Edge Case)에 대해서만 자원을 집중 투입하는 컴퓨팅 최적화의 핵심이다.
2. 임계값(Similarity Threshold)의 의도적 완화
코사인 유사도(Cosine Similarity)를 기반으로 하는 밀집 검색(Dense Retrieval)에서, 지나치게 높은 임계값(Threshold)은 유효한 정보마저 잘라내는 부작용을 낳는다.
- 검색 오라클이 1차 시도에서 반환된 청크 수를
0으로 판단했다면(similarity < 0.85), 이는 사용자의 쿼리 임베딩(Query Embedding)과 문서 임베딩 간의 어휘적 거리가 너무 멀기 때문이다. - 실패를 피드백받은 시스템은 의도적으로 유사도 임계값을 0.75나 0.70으로 하향 조정(Relaxation)하여 2차 검색을 수행한다.
- 임계값이 낮아져 다소 ‘엉뚱해 보이는(Noisy)’ 문서가 섞여 들어오더라도, 강력한 추론 능력을 가진 거대 언어 모델이 그 파편화된 문서들 사이에서 논리적 연결고리를 찾아내고 최종 환각 검증 오라클(Faithfulness Oracle)을 통과해 낸다면, 이는 성공적인 자율 복구(Fallback)로 기록된다.
3. 하이브리드 검색(Hybrid Search)의 가중치(Alpha) 스위칭
현대의 RAG 시스템은 의미를 찾는 벡터 검색(Dense Search)과 정확한 키워드를 찾는 BM25 검색(Sparse Search)을 혼합한 하이브리드 서치를 사용한다. 이 둘의 결합 비율인 \alpha(Alpha) 파라미터는 쿼리의 특성에 따라 최적값이 달라지는데, 오라클의 피드백을 통해 이를 런타임에 동적으로 변경할 수 있다.
- 모델이 “회사 규정 문서에서 특정 제품의 품번(예:
RX-78)을 찾아라“라는 지시를 받았으나 오라클이 답변 도출에 실패했다면, 이는 벡터 임베딩 모델이 고유명사나 시리얼 번호를 의미 공간에서 소실(Out-of-Vocabulary)시켰을 확률이 높다. - 시스템은 재시도 과정에서 \alpha 값을 극단적으로 조정하여 벡터 검색 비중을 줄이고 정확한 어휘 일치(Exact Lexical Match) 위주의 BM25 파라미터를 극대화(\alpha = 0 \to 1)한다.
파라미터의 동적 조정은 오라클이 단순히 “틀렸다“고 외치는 파수꾼에서 벗어나, 데이터베이스 내부의 다이얼을 능동적으로 돌려 정답을 기어코 발굴해 내는 **통제기(Controller)**로 진화했음을 의미한다.