RAG 평가 불안정성 해결을 위한 결정론적 접근
DEV.to
2026년 7월 15일 (수)
- •검색 증강 생성(RAG)의 평가 불안정성은 모델 자체의 문제보다는 검색 과정의 비결정성에서 기인하는 경우가 많다.
- •상호 순위 융합(RRF) 알고리즘은 검색 결과 동점 처리 순서에 따라 Recall@K 점수에 변동을 일으킨다.
- •SQL 쿼리에 고유 ID 컬럼을 추가하는 결정론적 순위 결정 방식을 통해 평가 결과의 재현성을 확보할 수 있다.
검색 증강 생성(RAG)의 평가 결과가 모델의 불안정이 아닌 비결정적 검색 과정으로 인해 크게 변동될 수 있다는 분석이 나왔다. 개발자 바실(Vasyl)은 오픈소스 플랫폼 'TextStack'의 'Ask this Book' 기능을 개발하던 중, 동일한 쿼리와 문서, 모델을 사용했음에도 Recall@K 지표가 매번 달라지는 현상을 발견했다. 이는 pgvector를 통한 의미론적 검색 결과와 PostgreSQL의 전체 텍스트 검색 결과를 결합할 때 사용하는 상호 순위 융합(RRF) 알고리즘에서 비롯된 문제다.
RRF는 원본 점수가 아닌 검색된 항목의 순위를 기반으로 결과를 산출한다. 따라서 동점 항목으로 인해 결과 덩어리(chunk)의 순서가 바뀌면 상위 K개 집합과 평가 지표도 함께 변동된다. 특히 SQL 쿼리에서 'ORDER BY score DESC'를 사용할 경우, PostgreSQL은 점수가 동일한 행에 대해 일관된 정렬을 보장하지 않아 순서가 불규칙해지는 현상이 발생한다.
이를 해결하기 위해 바실(Vasyl)은 SQL 쿼리에 'ORDER BY score DESC, id'를 적용하여 결정론적인 동점 처리 방식을 구현했다. 이 변경을 통해 동점 행들의 순서가 매 실행마다 동일하게 유지됨으로써 검색과 평가의 재현성이 보장되었다. 개발자들은 모델의 온도(temperature) 값뿐만 아니라 검색 및 랭킹 레이어도 동일한 엄격함으로 관리해야 평가 신뢰도를 높이고 성능 문제를 정확히 파악할 수 있다.