RAG가 올바른 문서를 검색했음에도 여전히 틀린 답을 내놓는 이유
요약
RAG 시스템에서 올바른 문서를 검색했음에도 오답이 발생하는 원인을 분석합니다. 유사도 기반 검색의 한계를 지적하며, 검색된 문서를 단순 문맥이 아닌 검증된 증거로 취급하는 설계의 중요성을 강조합니다.
핵심 포인트
- 유사도 점수가 높다고 해서 반드시 답변에 필요한 사실을 포함하는 것은 아님
- 주제적 유사성과 사실적 근거(Grounding) 사이의 간극 이해 필요
- 검색과 생성 사이에 명시적인 증거 검증(Evidence check) 단계 도입 권장
- 불충분한 정보일 경우 추측 대신 답변을 유보하는 설계가 신뢰성 확보의 핵심
검색기(Retriever)가 올바른 문서를 반환했습니다. 유사도 점수(Similarity scores)도 괜찮아 보입니다. 하지만 답변은 여전히 틀렸습니다. 만약 여러분이 RAG를 배포해 보았다면, 이런 상황을 겪어보았을 것입니다. 이는 모든 검색(Retrieval) 업그레이드 과정에서도 살아남는 실패 사례입니다.
모두가 시도하는 것들
리랭커(Reranker), 더 높은 top-k, 하이브리드 검색(Hybrid search), 더 나은 임베딩 모델(Embedding model). 이 모든 것들은 동일한 목표, 즉 _질의(Query)와 더 유사한 문서_를 찾는 것을 쫓습니다. 이 방법들은 올바른 문서가 검색되지 않았을 때는 도움이 됩니다. 하지만 올바른 문서가 이미 검색되었음에도 답변이 틀린 경우에는 아무런 도움이 되지 않습니다.
왜 작동하지 않는가
유사도(Similarity)는 "이 청크(Chunk)가 동일한 주제에 관한 것인가?"라는 질문에 답합니다. 하지만 "이 청크가 답변을 뒷받침하는 데 필요한 사실(Facts)을 포함하고 있는가?"라는 질문에는 답하지 못합니다. 이 둘은 끊임없이 분리됩니다. 어떤 청크는 어휘나 주제가 같아서 매우 유사할 수 있지만, 실제로 답변의 근거가 되는 내용은 전혀 포함하지 않을 수 있습니다. 모델에게 주제와 관련된 텍스트 더미를 건네주면, 모델은 유창하고 그럴듯하며 심지어 인용된 것처럼 보이는 답변을 만들어낼 것입니다. 이때 근거(Grounding)는 표면적일 뿐입니다. 텍스트가 근처에 있었을 뿐, 답변을 지탱하는 핵심 요소는 아니었던 것입니다.
틀린 답변이 높은 유사도와 함께 나타나는 것은 모순이 아닙니다. 여러분은 검색기에 관련 텍스트를 찾으라고 요청했고, 검색기는 그 역할을 수행했습니다. 하지만 그 텍스트가 _충분한지_에 대해서는 아무도 묻지 않았습니다.
단 하나의 전환
검색 결과물을 증거(Evidence)로 취급하는 것을 멈추십시오. 대신, 답변을 뒷받침하기 전에 명시적인 증거 검증(Evidence check)을 통과해야 하는 후보 자료(Candidate material)로 취급하십시오. 검색(Retrieval)과 생성(Generation) 사이에 단계를 하나 두십시오: 검색된 집합이 실제로 이 답변에 필요한 사실을 포함하고 있는가? 만약 그렇지 않다면, 답변을 유보하라. 문서에 사실이 포함되어 있지 않다면, 시스템은 확신에 찬 추측을 내놓기보다 아무것도 반환하지 말아야 합니다.
관련 있는 문맥(Context)을 입력하되, 충분한 증거만이 통과되도록 하십시오. 그것이 RAG 데모와 실제 운영 환경에서 신뢰할 수 있는 RAG 시스템 사이의 경계입니다.
저는 보안 및 모델 제약 조건 하에서 제품을 출시하는 관점에서, 운영 환경의 RAG가 실패하는 세 가지 경계인 쿼리 (query), 증거 (evidence), 출력 (output)에 대해 작성합니다. 제 블로그에서 전체 버전을 읽어보세요. 이곳에서 이 내용은 운영 환경의 RAG를 디버깅하는 팀들을 위한 실질적인 **RAG 실패 진단 키트 (RAG Failure Diagnosis Kit)**와 연결됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기