8.6.2 문맥 관련성(Context Relevance) 평가 프롬프트 설계
RAG 시스템의 근본적인 한계는 생성 모델(Generator) 이전 단계인 검색기(Retriever)의 성능에 전적으로 의존한다는 점이다. 유저가 “회사 복지 포인트 사용처를 알려줘“라고 질문했는데, 검색기가 엉뚱하게 “포인트 카드 개인정보 취급 방침” 규정을 Top-1로 검색해서 타겟 LLM에게 던져주면 어떻게 될까? 타겟 LLM은 영문도 모른 채 쓰레기 제원(Garbage In)을 받아들고 이를 요약하여 유창한 쓰레기 문장(Garbage Out)을 렌더링하고 만다.
이러한 재앙을 사전에 끊어내기 위해 도입하는 최전선 오라클 지표가 바로 **문맥 관련성(Context Relevance)**이다. 이 지표의 핵심 철학은 **“검색된 문서(Context) 덩어리 안에, 유저의 질문(Query)을 해결하기 위해 반드시 필요한 ’정보의 알맹이’가 실제로 들어 있는가?”**를 심판관 LLM(Judge)이 냉혹하게 채점하는 것이다.
여기서 중요한 것은 이 단계의 오라클은 타겟 LLM이 만들어낸 ’최종 답변(Answer)’은 아예 쳐다보지도 않는다는 점이다. 오직 Query와 Context 단 두 개의 변수만을 인풋으로 받아, 검색 품질의 무결성을 수학적으로 평가한다.
1. 노이즈 페널티(Noise Penalty) 기반의 프롬프트 구조
문맥 관련성 평가 프롬프트의 가장 중요한 설계 원칙은 검색된 문서 안에 정답이 존재하는지 확인하는 것을 넘어, **“정답과 무관한 쓰레기 정보(Noise)가 얼마나 많이 섞여 있는가”**를 감점의 핵심 징벌 지표로 삼는 것이다.
엔터프라이즈 환경에서는 검색기가 10개의 문단을 가져와서 그 중 딱 1개에만 정답이 있고 나머지 9개가 완전히 쓸모없는 문맥이라면 점수를 낮게 줘야 한다. 타겟 LLM의 어텐션(Attention) 리소스를 낭비하게 하고 궁극적으로 환각을 유발할 확률을 높이기 때문이다. 따라서 Judge LLM에게 던지는 프롬프트에는 반드시 ’전체 문장 수 대비 유효한 문장 수의 비율’을 계산하라는 지시가 포함되어야 한다.
- 문맥 관련성 평가 프롬프트 템플릿:
[System] 당신은 입력된 질문(Question)과 검색된 문맥(Context) 간의 관련성을 수치로 평가하는 오라클 심판관이다. 당신의 유일한 임무는 Context 내에 Question에 대답하는 데 필요한 정보가 얼마나 포함되어 있는지 분석하는 것이다. [Instruction] 1. Context를 문장 단위로 분해하라. 2. 질문(Question)의 의도를 해결하는 데 필수적이고 직접적인 도움이 되는 문장(Crucial Sentences)들만 추출하라. 3. 전체 문장의 수(N)와 추출된 유효 문장의 수(M)를 카운트하라. 4. 당신의 최종 점성 렌더링은 다음 수식에 기반해야 한다: Score = M / N 5. 어떠한 부연 설명도 하지 말고, 오직 { "score": 0.0 ~ 1.0 } 형태의 JSON만 반환하라. [Input] Question: {user_query} Context: {retrieved_chunks}
## 2. 엄격성에 대한 온도(Temperature) 통제 및 이진화 기법
위의 수식 기반 산술 프롬프트는 논리결정성이 매우 높아 보이지만, 실제 거대 언어 모델이 '유효 문장'을 판단하는 기준은 런타임마다 미세하게 요동칠 수 있다. 어떤 런타임에서는 A 문장을 유효하다고 보고, 다음 런타임에서는 A 문장을 노이즈로 분류하는 식이다.
이러한 평가의 비결정성을 최소화하기 위해 오라클 파이프라인은 심판관 모델의 `temperature` 매개변수를 철저하게 `0.0`으로 고정한다. 더 나아가, 더욱 파괴적이고 강제적인 결정론이 필요한 B2B 은행/법무 도메인의 경우 산술 비율(M/N)을 쓰지 않고 차별화된 **'이진 문턱(Binary Threshold) 패스'** 방식을 프롬프트에 하드코딩한다.
> *"이 문맥 덩어리로 유저의 질문에 100% 답변할 수 있는가? 만약 정보가 단 1%라도 부족해서 당신의 머릿속 지식을 꺼내어 추론해야 한다면 가차 없이 0을 반환하라. 오직 완벽하게 답변 가능한 경우에만 1을 반환하라."*
결정론적 방벽으로 설계된 문맥 관련성 0점(Zero-Score) 판정은 파이프라인에 엄청난 권력을 행사한다. 오라클이 관련성 부족을 선언하는 즉시, 타겟 모델에게 답변 생성 권한 자체를 허가하지 않고 앞단(Front-end)으로 트랜잭션을 강제 회군시킨다. 유저에게는 "검색된 사내 문서 중 해당 질문을 해결할 수 있는 문서가 존재하지 않습니다."라는 기계적이고 투명한 승인 거절 메시지가 출력된다. 이것이 바로 질 나쁜 검색 결과가 환각으로 점화되는 연결 고리를 끊어내는, RAG 시스템의 가장 중요한 초기 진압 방화벽(First-Responder Firewall)이다.