https://arxiv.org/abs/2309.15217
RAGAS: Automated Evaluation of Retrieval Augmented Generation
We introduce RAGAs (Retrieval Augmented Generation Assessment), a framework for reference-free evaluation of Retrieval Augmented Generation (RAG) pipelines. RAG systems are composed of a retrieval and an LLM based generation module, and provide LLMs with k
arxiv.org
https://github.com/explodinggradients/ragas
GitHub - explodinggradients/ragas: Evaluation framework for your Retrieval Augmented Generation (RAG) pipelines
Evaluation framework for your Retrieval Augmented Generation (RAG) pipelines - explodinggradients/ragas
github.com
RAG 시스템을 평가할 때 ground truth가 없는 경우가 많습니다. 어떻게 LLM만을 통해서 평가할 수 있는지 알아봅시다.
1. 평가 전략
평가 요소
Faithfulness
faithfulness, 충실함이라는 뜻으로 retrieval 과정에서 얻은 컨텍스트에 기반하여 정답을 생성하는지를 평가합니다. RAG 시스템을 사용하는 이유가 할루시네이션이 없는 답변을 얻기 위함이라고도 할 수 있습니다. 따라서 충실함 평가는 중요합니다.
예를 들어 법학 분야에서 rag 시스템을 사용할 때는 생성한 답변의 내용과 근거로 한 컨텍스트간의 사실적 일관성이 매우 중요합니다. 법학분야의 정보는 계속해서 수정될 수 있기 때문입니다.
Answer Relevance
answer relevance, 답변 관련성이라는 뜻으로 생성한 답변이 주어진 질문의 내용과 관련 있는 것인지를 평가합니다.
Context Relevance
context relevance, 컨텍스트 관련성이라는 뜻으로 retrieval 과정에서 얻은 컨텍스트와 질문과 관련성을 평가합니다. 컨텍스트에는 가능한 한 질문과 관련 없는 내용이 적어야 합니다. 컨텍스트의 크기는 LLM에 입력되는 텍스트의 크기와 관련 있고 이는 비용과 밀접하게 작용합니다. 또한 컨텍스트의 크기가 길다면 LLM이 해당 컨텍스트에서 정답과 관련된 내용을 추출하는데 효율적이지 않습니다.
평가 방법
설명하는 3가지 방법은 모두 LLM에 프롬프팅함으로써 작동합니다. 사용한 LLM은 OpenAI API로 사용한 gpt-3.5-turbo-16k 모델입니다.
Faithfulness
먼저 정답문장을 작은 문장으로 분해하고 중요한 주장에 집중하기 위해 LLM을 사용해서 statement를 추출합니다. statement는 진술 또는 명제라고 해석할 수 있습니다.
여기서 사용되는 프롬프트는 다음과 같습니다.
Given a question and answer, create one or more statements from each sentence in the given answer.
question: [question]
answer: [answer]
정답 문장에서 statement를 모두 추출했다면 추출한 statement들이 컨텍스트에 의해 지지되는지 확인합니다. 이를 통해 faithfulness를 평가합니다.
Consider the given context and following statements, then determine whether they are supported by the information present in the context. Provide a brief explanation for each statement before arriving at the verdict (Yes/No). Provide a final verdict for each statement in order at the end in the given format. Do not deviate from the specified format.
statement: [statement 1]
...
statement: [statement n]
faithfulness score, F는 V/S로 계산합니다. V는 컨텍스트에 의해 지지되는 statement개수이고 S는 모든 statement의 개수입니다.
Answer Relevance
생성된 정답 문장이 주어진 질문에 대한 답을 하고 있는 지를 평가해야합니다.
먼저 정답 문장을 통해 질문 문장을 생성합니다.
Generate a question for the given answer.
answer: [answer]
질문 문장이 모두 생성되었다면 실제 질문 문장과 생성된 질문 문장을 임베딩 모델을 통해 임베딩합니다. 실제 질문 문장의 임베딩 결과와 생성된 질문 문장의 임베딩 결과 간의 코사인 유사도를 계산하여 평균내어 Answer Relevance를 계산합니다.
$$ \text{AR} = \frac{1}{n} \sum_{i=1}^{n} \text{sim}(q, q_i) $$
Context Relevance
컨텍스트에 포함된 내용이 정답을 생성하는데 필요한 내용만 가지고 있는지, 정답 생성과 관련 없는 내용이 적은 지 계산합니다. 컨텍스트에서 LLM이 질문에 대해 답을 찾기 위해 필요한 문장을 추출합니다. 컨텍스트의 모든 문장에 대해 추출된 문장의 비율을 통해 Context Relevance를 계산합니다.
$$ \text{CR} = \frac{\text{number of extracted sentences}}{\text{total number of sentences in } c(q)} $$
2. 실험 데이터 셋
위 평가 전략 파트에서 RAG 시스템의 평가를 위한 요소, 방법에 대해 알아보았다. 실제로 RAG 시스템을 평가하기 위해서는 RAG 시스템에 의한 결과, 즉 질문-컨텍스트-답변 쌍이 필요하다. 따라서 만든 데이터 셋이 WikiEval이다.
WikiEval은 먼저 2022년 초부터 일어난 사건들을 다루는 50개의 위키피디아 페이지를 선택합니다.
선택한 50개의 페이지에서 페이지의 내용을 바탕으로 답변할 수 있는 질문을 ChatGPT를 통해 생성합니다. 이때 사용한 프롬프트는 다음과 같습니다.
Your task is to formulate a question from given context satisfying the rules given below:
1. The question should be fully answered from the given context.
2. The question should be framed from a part that contains non-trivial information.
3. The answer should not contain any links.
4. The question should be of moderate difficulty.
5. The question must be reasonable and must be understood and responded to by humans.
6. Do not use phrases that ’provided context’, etc in the question
context:
그리고 생성된 질문과 context에 대해서 정답 또한 ChatGPT를 통해 생성합니다.
Answer the question using the information from the given context.
question: [question]
context: [context]
이제 질문-컨텍스트-답변 쌍 데이터셋이 완성되었습니다.
실험 파트에서 RAGAs의 3가지 지표의 성능 확인은 human annotator의 평가와의 일치도로 확인합니다.
Faithfulness
ChatGPT에게 컨텍스트를 주지 않고 질문에 대한 답변을 생성합니다. 그렇게 생성된 낮은 faithfulness를 가진 답변과 기존의 데이터셋의 답변 중에 어떤것이 더 context에 충실한지를 annotator가 선택합니다.
Answer relevance
마찬가지로 ChatGPT를 통해 낮은 answer relevance를 가지는 답변을 생성하고 생성된 답변과 기존의 데이터셋의 답변중에 더 answer relevance 한 답변을 annotator가 선택합니다. 낮은 answer relevance를 가지는 답변을 생성하기 위해서 다음 프롬프트를 사용합니다.
Answer the given question in an incomplete manner.
question: [question]
Context relevance
데이터 셋에 관련은 있지만 질문에 대한 답을 만드는 데는 필요 없는 문장을 추가합니다. 위키피디아 페이지에서 백링크의 내용을 추가하거나 백링크가 없는 경우 ChatGPT가 문장을 추가하도록 합니다. annotator가 하는 행동에 대해서는 설명이 없지만 문장이 추가된 컨텍스트와 원래의 컨텍스트 중 어떤 컨텍스트가 context relevance 한 지 선택할 것 같습니다.
3. 실험 결과
RAGAs의 결과와 human annotator의 결과를 비교합니다. RAGAs를 통해 평가할 때에도 두 개의 답변, 컨텍스트에 대해서 비교를 통해 선택합니다. 이때 RAGAs가 선택한 answer/context가 human annotator가 선택한 것과 같은 비율, 즉accuracy를 통해 agreement를 계산합니다.
faithfulness의 경우 높은 정확도를 가지지만 answer relevance, context relevance는 상대적으로 떨어집니다. answer relevance의 경우 후보인 두 정답의 차이가 종종 미묘한 경우가 존재합니다. context relevance의 경우 가장 정확도가 낮은데 긴 컨텍스트에서 중요 문장을 선택하는데 어려움이 있습니다.
4. 결론
RAG 시스템의 평가에서 ground truth가 없는 경우 RAGAs 방법을 사용해서 faithfulness는 인간의 평가와 유사하다는 것을 확인했습니다. 하지만 answer relevance, 특히 context relevance의 경우 RAGAs 이외의 추가적인 평가 방법을 고려할 필요가 있습니다.
'AI&ML > 학습 정리' 카테고리의 다른 글
langchain quickstart 따라하기 (0) | 2024.05.03 |
---|---|
[Paper-review]Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (0) | 2024.04.10 |
핸즈온 머신러닝 리뷰 (1) | 2024.01.13 |
f1-score에 대해서 알아보자(2) (0) | 2023.12.07 |
f1-score에 대해서 알아보자(1) (0) | 2023.12.07 |