- Turing Post Korea
- Posts
- LLM의 좋은 친구, 'RAG' - RAG의 효과는 어떻게 평가해야 할까?
LLM의 좋은 친구, 'RAG' - RAG의 효과는 어떻게 평가해야 할까?
RAG 어플리케이션 평가 방법론, 지표, 그리고 도구
지금 ‘춘추전국시대’마냥 경쟁을 벌이고 있는 각종 LLM이 현실 세계에서 사용되려면 여러가지 ‘문제점’ - 성능, 환각증상 등 - 을 잘 해결하도록 도와주는 틀이 필요합니다. 이 중 가장 광범위하게 활용되는 것이 바로 RAG일 겁니다.
2020년 “Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks”를 통해서 처음 소개된 RAG는 당시 사전 학습된 Retriever (검색기)와 Generator (생성기)를 결합한 것이었고, 이 때 RAG의 가장 큰 목표는 모델의 파인튜닝을 통한 성능 개선에 있었습니다.
이후 2022년 말 챗GPT가 출시되면서 전환점을 맞이한 RAG는 LLM의 추론 능력을 어떻게 현실 어플리케이션에서 잘 활용할 수 있을 것이냐에 초점을 맞춘 프레임웍으로 변화하게 됩니다. 이런 방향에서 ‘외부 지식’을 통합적으로 검색하고 LLM에 넘겨줘서 더 좋은 Generation 결과를 만들고자 하는 구조로 바뀌게 되는 거죠.
길게 보면 아직도 초기 단계에 있는 프레임웍이라고 볼 수 있겠지만, 기본적인 RAG, GraphRAG, LongRAG 등 다양한 방향으로 빠르게 발전하고 있는 RAG. 이 RAG을 최적화해서 활용하기 위해서 어떤 관점의 평가가 가능한지, 어떤 도구와 지표들이 있는지 한 번 정리해 보는 건 의미가 있을 것 같습니다.
*이번 포스트는 기업용 AI 어플리케이션 개발을 위한 벡터 DB인 Zilliz의 알고리즘 엔지니어 Cheney Zhang의 글입니다. 이 글의 원본은 Zilliz Cloud 블로그에서 보실 수 있습니다.
RAG(Retrieval-Augmented Generation)는 챗GPT와 같은 거대 언어모델(LLM) - 엄밀히 말하자면 챗GPT가 LLM 그 자체는 아니지만 - 이 AI의 주류가 된 이 시대에 주목받는 AI 프레임웍이라는 건 잘 아실 겁니다. RAG은 외부의 데이터와 지식을 쉽게 통합해서 모델의 기능을 향상시키고, 더 정확한 답변, 더 최신의 답변을 할 수 있도록 해 주는데요.
생성형 AI 어플리케이션을 구축할 때 RAG 아키텍처를 채택하는 기업들이 점점 많아지면서, 그 효과를 평가하는 것이 중요한 이슈로 떠오르고 있습니다. 이번 글에서는 RAG 애플리케이션을 평가하는 데 사용하는 방법론을 살펴보고, 평가에 사용할 만한 몇 가지 도구들과 표준적인 지표들도 알아보려고 합니다.
RAG 평가지표
RAG 아키텍처 기반의 어플리케이션을 평가하는 것은 단순히 몇 가지 결과물 예시를 비교하는 것과는 차원이 다른 작업입니다. 중요한 것은, 이런 어플리케이션을 평가하는데 설득력있고 정량적이고 재현 가능한 지표를 사용하는 것인데요. 여기서는 세 가지 카테고리의 지표를 생각해 보려고 합니다:
Ground Truth - 즉, 우리가 원하는 실제 데이터 - 기반의 지표
Ground Truth가 없을 때의 지표
LLM 응답에 기반한 지표
Ground Truth 기반의 지표
Ground Truth라는 건, 사용자의 질의에 해당하는 데이터셋 내에 존재하는, 잘 정리된 답변 또는 답변을 담고 있는 문서의 덩어리를 의미한다고 보면 어떨까 합니다. Ground Truth가 ‘답변’이라는 카테고리에 해당되는 경우에는 RAG의 답변과 Ground Truth를 ‘의미적 유사도’라든가 ‘답변의 정확도’ 같은 지표를 사용해서 직접적으로 비교할 수 있으니까, 이런 경우는 End-to-end의 측정과 평가가 비교적 용이한 경우입니다.
아래, ‘정확성 (Correctness)’을 기준으로 답변을 평가해 보는 예시를 한 번 볼까요:
Ground truth: Einstein was born in 1879 in Germany. 정확도 높은 답변: In 1879, in Germany, Einstein was born. 정확도 낮은 답변: In Spain, Einstein was born in 1879. |
Ground Truth가 문서의 덩어리인 경우, 검색된 컨텍스트와 문서 덩어리 간의 상관 관계를 EM (Exact Match), Rough-L, F1 같이 전통적으로 사용되는 지표를 사용해서 평가할 수 있습니다. 이 방법은 본질적으로 RAG 어플리케이션이 얼마나 검색을 효과적으로 하는지를 평가하는 셈이죠.
나만의 데이터셋을 위한 Ground Truth는 어떻게 생성해야 할까?
RAG 어플리케이션을 평가할 때, Ground Truth가 포함된 데이터셋을 사용하는게 중요하다는 건 알겠는데, 그럼 ‘이 데이터가 맞고 틀린 데이터다’라는 식의 Ground Truth를 판단할 수 있는 방법이 없는, 비공개 데이터셋을 사용하는 RAG 어플리케이션은 어떻게 평가할까요? 평가에 필요한 Ground Truth를 어떻게 생성할 수 있을까요?
가장 간단한 방법은, 챗GPT와 같은 LLM을 활용해서, 비공개 데이터셋을 기반으로 질문과 답변 예제를 생성하는 겁니다. Raga나 LlamaIndex같은 도구들도 당신이 사용하는 문서들에 맞는 테스트 데이터를 생성하는 방법을 제공합니다.
The sample questions and answers generated by the Ragas evaluation tool. Image Credit: Ragas
질문, 컨텍스트, 그리고 해당 답변으로 구성된 이 테스트 데이터셋을 사용해서, 외부의 기준 데이터셋이 없는 상태에서도 정량적 평가를 할 수 있습니다. 이렇게 하면, 나만 가지고 있는 비공개 데이터를 활용해서 RAG 시스템을 평가할 수 있기 때문에, 더 맞춤화되고 의미있는 평가 프로세스를 운영할 수 있습니다.
Ground Truth가 없을 때의 지표
각각의 질의에 대한 Ground Truth가 없다 하더라도, RAG 어플리케이션을 평가할 수 있습니다. 우선 ‘RAG Triad’라는 개념이 있는데, 이건 ‘질의 (Query)’, ‘컨텍스트 (Context)’, ‘응답 (Response)’의 세 요소가 ‘적절한 (Relevance)’ 내용을 담고 있는지 평가하려고 하는 틀입니다. 오픈소스로 공개된 평가 도구 TruLens-Eval이 이 RAG Triad 개념을 개선해서 Ground Truth가 없는 RAG 어플리케이션을 평가할 수 있게 해 줍니다. 평가에 사용하는 세 가지 지표를 살펴보면:
Context Relevance: 검색된 컨텍스트가 질의 내용을 얼마나 잘 뒷받침하는지 측정합니다.
Groundedness: LLM의 응답이 검색된 컨텍스트와 얼마나 잘 합치하는지 평가합니다.
Answer Relevance: 질의와 최종 응답을 비교해서 둘 사이의 관련성을 측정합니다.
아래는, ‘Answer Relevance’를 평가하는 예시입니다:
질문: Where is France and what is its capital? 낮은 Answer Relevance: France is in western Europe. 높은 Answer Relevance: France is in western Europe and Paris is its capital. |
위에 설명한 세 가지의 지표를 더 세분화해서 더 정교한 평가를 할 수도 있습니다. 예를 들어, Ragas - RAG 시스템 성능을 평가하는 오픈소스 프레임웍 - 에서는 Context Relevance를 Context Precision, Context Relevance, Context Recall이라는 세부 지표로 나눠서 평가하도록 합니다.
Reply