Developer Log
AI & RAG

RAG에서 검색 결과가 부족할 때: Sufficient Context Gate

RAG를 구현하면서 처음에는 검색 성능에 집중했습니다. 그러나 검색 결과의 관련도가 높더라도 사용자 질문에 답할 만큼 충분한 정보가 있는지는 별개의 문제였습니다.

예를 들어 질문에는 특정 조건과 수치가 필요한데, 검색된 문서는 비슷한 주제만 설명할 수 있습니다. 이 상태에서 언어 모델이 답변을 만들면 문서에 없는 값을 추론하거나 다른 맥락의 수치를 가져올 위험이 있습니다.

검색 성공과 답변 가능성은 다릅니다

Vantage의 검색은 임베딩 기반 Dense 검색과 BM25 기반 키워드 검색을 함께 활용합니다. 기사와 논문의 표현 방식이 다르기 때문에 의미 유사성과 정확한 용어 일치를 함께 고려합니다.

하지만 상위 결과에 문서가 등장했다는 사실만으로 답변 가능성을 보장할 수는 없습니다.

  • 관련 있음: 질문과 같은 주제를 다루고 있습니다.
  • 충분함: 질문이 요구한 내용과 조건을 실제 문서에서 확인할 수 있습니다.
  • 무관함: 질문의 답변에 실질적인 도움을 주지 못합니다.

핵심은 관련성만 보지 않고 충분성을 따로 판단하는 것입니다.

Sufficient Context Gate를 둔 이유

답변 생성에 앞서 검색 근거가 질문을 해결할 만큼 충분한지 확인하는 단계를 배치했습니다. 충분하지 않다면 검색 범위를 확장하거나, 확인되지 않은 내용은 답변에서 제외하거나, 근거 부족을 명시하도록 설계합니다.

이 단계에서 중요한 것은 모든 질문을 반드시 대답하는 것이 아니라 확인 가능한 사실만 답변하도록 제약하는 것입니다.

어떻게 평가했나

질문과 정답을 포함한 합성 데이터셋을 만들고 검수한 뒤, DeepEval의 LLM-as-a-Judge 기반 평가 환경을 활용했습니다. 평가에서는 검색의 적합성과 최종 답변의 충실성을 나누어 관찰했습니다.

특히 검색 실패가 발생했을 때 모델이 유사한 문서의 수치를 잘못 인용하는 패턴을 확인했습니다. 이 문제를 단순 프롬프트 수정만으로 처리하지 않고, 답변 이전 단계에 충분성 검증을 두는 방향을 선택했습니다.

검색 지표가 높아지는 것과 환각이 줄어드는 것은 관련이 있지만 동일한 목표는 아닙니다. 따라서 검색 Recall이나 순위 품질과 함께 근거에 대한 답변 충실성을 따로 확인해야 합니다.

남아 있는 과제

  • 질문의 복잡도에 따라 충분성 기준을 어떻게 조절할 것인가
  • 기사와 논문처럼 길이와 구조가 다른 자료에 동일한 기준을 적용할 수 있는가
  • 충분성 판정 비용과 응답 지연을 어떻게 관리할 것인가
  • 잘못된 답변을 줄이면서 유용한 답변까지 과도하게 거절하지 않도록 만들 수 있는가

RAG의 목적을 단순히 문서를 찾아 자연스러운 문장을 만드는 데 두지 않았습니다. 찾은 자료로 무엇을 말할 수 있고, 무엇은 말할 수 없는지 구분하는 것을 중요한 품질 기준으로 삼고 있습니다.