8.11.3 Exact Match(BM25/TF-IDF)와 벡터 검색의 교차 검증을 통한 RAG 오라클 안정성 확보
Vector DB의 시맨틱 검색(Semantic Search)은 질문의 ’의도’를 파악하는 데는 마법처럼 뛰어나지만, 정작 사용자가 “오류 코드 ERR-404-XYZ의 뜻이 뭐야?“라고 **고유명사(Proper Noun)**나 **특정 제품 번호(Product ID)**를 찔러 넣었을 때는 어처구니없는 무능함을 보인다.
임베딩 모델은 ERR-404-XYZ라는 텍스트를 고차원 벡터로 분해하는 과정에서 그 엄밀한 형태(Exact String)를 뭉개버리고, 대충 ’서버 에러’와 관련된 수많은 다른 문서들을 무작위로 끌고 오게 된다. 타겟 LLM은 이 엉뚱한 정보들을 바탕으로 허구의 에러 해결책을 지어내며, 지식 베이스 기반 오라클(Knowledge-based Oracle) 시스템은 원본 매뉴얼에 버젓이 존재하는 ERR-404-XYZ 문서를 코앞에 두고도 환각의 늪에 빠지게 된다.
오라클의 결정론적 기반을 사수하기 위해, RAG 아키텍처는 결코 시맨틱 검색 단일 엔진(Single Engine)에 의존해서는 안 된다. 가장 고전적이지만 가장 확실한 ‘키워드 일치(Exact Match)’ 알고리즘을 부활시켜, 현대적인 벡터 검색과 함께 묶어내는 하이브리드 검색(Hybrid Search) 교차 검증망을 직조해야 한다.
1. 듀얼 파이프라인(Dual Pipeline) 아키텍처: BM25와 임베딩의 병렬 구동
검색 엔진의 전방에 두 개의 완전히 다른 원리를 가진 톱니바퀴를 병렬(Parallel)로 배치한다.
- 벡터 파이프라인 (Dense Retrieval): 기존의 임베딩 모델과 코사인 유사도 기반의 시맨틱 검색을 수행한다. “시스템이 갑자기 멈췄어” 같은 모호한 문장이나 동의어 파악에 강력한 위력을 발휘한다.
- 렉시컬 파이프라인 (Sparse Retrieval / Keyword Search): BM25나 TF-IDF와 같은 고전적인 정보 검색 알고리즘을 사용한다. 이 알고리즘은 의미 따위는 전혀 개의치 않고, 오직 쿼리 안의 단어(예:
ERR-404-XYZ)가 문서에 물리적으로 몇 번 등장하는지, 그리고 그 단어가 전체 문서군에서 얼마나 희귀한 글자인지에만 집착하여 점수를 매긴다. 고유명사나 특정 숫자 체계를 검색하는 데 있어 이보다 결정론적인 통계 모델은 존재하지 않는다.
사용자의 쿼리가 들어오면 오라클 미들웨어는 이 두 개의 엔진을 동시에 발진시켜 각각 Top-K 개의 문서 리스트를 받아낸다.
2. RRF(Reciprocal Rank Fusion) 기반의 교차 점수 병합
두 엔진이 가져온 문서 리스트는 서로 다른 단위의 점수(하나는 코사인 각도, 하나는 통계적 빈도)를 갖고 있으므로 단순히 더할 수 없다. 오라클은 이를 **RRF(Reciprocal Rank Fusion)**라는 수학적 기법을 통해 하나의 절대적인 서열(Rank)로 강제 병합한다.
RRF 알고리즘은 검색된 문서의 ’점수’가 아니라 ’등수(Rank)’를 기반으로 역수를 취해 더한다.
RRF Score = \frac{1}{k + Rank_{Vector}} + \frac{1}{k + Rank_{BM25}}
(이때 k는 하이퍼파라미터로 보통 60을 사용한다.)
이 교차 로직을 통해, 벡터 검색에서는 50등 밖으로 밀려났던 문서라도 BM25에서 1등을 차지했다면(즉, 사용자가 입력한 고유 모델명이 정확히 박혀 있다면) 최종 랭킹에서 압도적인 상위권으로 멱살을 잡혀 끌어올려지게 된다.
3. 고유명사/숫자 누락에 대한 오라클의 핑거프린트(Fingerprint) 검증
하이브리드 검색을 통해 완벽한 문서를 타겟 LLM에게 가져다주었다면, 이제 마지막 생성(Generation) 단계에서 오라클(LLM-as-a-Judge)이 렉시컬(Lexical) 일치 여부를 검사해야 한다.
- Fingerprint 추출: 오라클은 사용자의 원본 쿼리에서 고유명사, 영문 대문자 약어, 숫자 배열(예: 모델 번호, 날짜, 에러 코드)을 찾아내어 핑거프린트 배열로 잠가둔다.
- Hard-Match 스캐닝: 타겟 모델이 생성한 최종 답변 텍스트 안에, 방금 잠가둔 핑거프린트 문자열이 ’형태의 변형 없이 100% 일치(Hard-match)’하게 들어가 있는지 검사한다.
- 만약 타겟 모델이
ERR-404-XYZ를 설명한답시고ERR-404라고 숫자를 뭉개버렸다면, 오라클은 무자비하게 트랜잭션을 폐기하고 재생성을 요한다.
Vector DB의 시맨틱 검색은 인간의 직관(Intuition)을 흉내 낸 ’예술’의 영역에 가깝다. 오라클이 지배하는 엔터프라이즈 환경은 이 예술적 불확실성을 견디지 못한다. 따라서 지독하리만치 고지식한 BM25 기반의 규칙(Rule) 엔진을 족쇄처럼 함께 채워둠으로써, AI의 자유분방한 검색망을 실체적 텍스트의 세계에 결정론적으로 단단히 동여매야만(Anchoring) 한다.