RAGAS에서 Retrieval 단계를 평가할 때 사용하는 대표적인 지표 중 하나는 context recall 입니다.

context recall의 수식은 다음과 같습니다.

context recall은 정답 데이터의 각 문장이, retriever가 반환한 context 안에서 실제로 답을 찾을 수 있는지를 확인합니다. 그리고 전체 정답 문장 중 몇 개의 문장이 해당 context만으로 답변 가능했는지 그 비율을 계산합니다. retrieval 단계에서 더 많은 결과를 반환할수록, 정답 문장과 관련된 context를 포함할 확률이 높아지기 때문에, 일반적으로 context recall 값이 함께 증가하는 경향이 있습니다.


Context Precision

Context precision은 retriever가 찾아낸 여러 context들 가운데 실제로 답변에 도움이 되는 context가 얼마나 포함되어 있는지, 특히 이들이 상위 랭크에 얼마나 위치해 있는지를 평가하는 지표입니다. 이에 대한 공식은 다음과 같습니다.

즉, 상위 K개의 retrieval 결과 중 실제 답변에 근거로 활용될 수 있는 context(정답)가 얼마나 비율로 포함되어 있는지를 측정하는 것입니다. 이 지표는 retrieval 결과의 정확성을 평가하고, 특히 관련도가 높은 정보가 앞쪽에 잘 배치되는지를 확인하는 데 유용하게 활용됩니다.

B) RAGAS를 활용해 Retriever 평가 시 주의할 점

RAGAS 지표를 사용해 retriever를 평가하면 수행시 마다 지표가 다르게 측정되고, 지표의 분산(variance)가 높아 순위가 뒤바뀌는 경우도 있었다. 이는 LLM-assisted evaluation의 한계점이나 아래 내용을 신경쓰면 비교적 신뢰성이 높은 지표를 얻을 수 있을 것으로 보인다.

  1. 가급적 많은 평가 데이터가 필요하다. 평가 횟수가 작아질 수록 variance의 영향이 지표에 많이 반영될 것이기 때문에 비용이 허락하는 한 최대한 많은 데이터로 평가할 필요가 있다.
  2. 그럼에도 불구하고 GPT-4의 답변이 달라질 수 있는 부분을 감안하고 평가를 수행해야 한다. 특히, 통제가 가능한 temperature는 0으로 설정해야하고 seed의 경우 특정 하나의 seed를 고르거나 여러 seed의 값을 종합해 평균을 내는 등의 방법이 필요할 것으로 보인다.
  3. Context recall의 경우, 정답의 문장 하나하나에 대해서 context와의 상관성을 평가하기 때문에 정답에 질문과 상관이 없는 문장이 있으면 안된다. 정답 데이터의 퀄리티가 높을 수록 더 일관성있는 평가 결과가 나온다.

예를 들어, 평가 데이터 내 이렇게 식도?가 미세하게 찢어져서 피가 좀 나올 수 있나요? 일시적으로 그러다 만 것 같은데 괜찮을까요?라는 질문에 대해 정답이 아래와 같다고 하자.

안녕하세요. 하이닥 이비인후과 상담의 김진용입니다. 네 식도가 아니라 인후쪽 염증이나 기침을 세게 하거나 하면 상처가 생겨서 피가 날 수 있습니다. 근처 이비인후과에 방문해보세요 * 본 답변은 참고용으로 의학적 판단이나 진료행위로 해석될 수 없습니다.

이 정답 데이터에서 첫번째, 두번째, 맨 마지막 문장은 의례적인 문장으로 질문에 대한 정보를 주지 못한다. 이런 문장에 대해서 GPT-4는 실행할 때마다 연관성에 대해 다른 결과를 돌려준다. 그렇기 때문에 불필요한 문장의 비율이 높을 수록 context recall의 값은 랜덤하게 변할 확률이 높다. 신뢰성 있는 평가를 위해서는 정답에 질문과 관련이 있는 주요 문장만 있도록 데이터 정제 및 퀄리티 관리가 반드시 필요하다.

C) 그 외

생성(Generation) 관련 지표

생성 단계의 성능을 평가하며, 생성된 답변의 품질을 측정합니다.

  • Faithfulness (충실성): 생성된 답변이 제공된 컨텍스트에 얼마나 충실한지를 평가합니다. 즉, 답변이 컨텍스트에 기반하여 사실에 입각한 정보를 제공하는지를 측정합니다. 이를 위해 생성된 답변을 여러 개의 주장(claim)으로 분리하고, 각 주장이 컨텍스트에 의해 뒷받침되는지를 확인하여 점수를 매깁니다.
  • Answer Relevancy (답변 관련성): 생성된 답변이 사용자의 질문과 얼마나 관련성이 있는지를 평가합니다. 이는 LLM을 이용해 답변에서 질문을 역으로 생성한 후, 원래 질문과 역생성된 질문 간의 의미적 유사도를 측정하여 평가합니다.