RAG 시스템이 얼마나 잘 작동하는지 평가하는 방법 배우기
RAG는 Retrieval-Augmented Generation의 줄임말로, 쉽게 말하면 "필요한 정보를 먼저 찾고(Retrieval), 그걸 활용해서 답변을 만들어주는(Generation) 시스템"
컴퓨터가 정보를 찾아서 답변을 만들 때, 우리는 그 답변이 정확한지, 관련성이 있는지, 사실에 근거했는지 등을 따져봐야 함. 만약 엉뚱한 정보를 가져오거나 거짓된 내용을 말하면 안 되므로 RAG 시스템이 얼마나 잘 작동하는지 평가하는 방법이 필요
RAG 성능을 평가하려면 두 가지 단계를 확인:
시스템이 사용자의 질문과 관련된 문서를 잘 찾는지 평가해.
예를 들어, "강아지가 좋아하는 음식은?"이라는 질문이 있다면, 개 사료나 간식에 대한 글을 찾아야 하지, 고양이 음식 정보를 찾으면 안 되겠지?
시스템이 찾은 정보를 바탕으로 좋은 답변을 만들어 내는지 평가해.
예를 들어, "강아지가 좋아하는 음식은?"에 대해 "개들은 고기와 채소를 좋아하지만, 초콜릿은 먹으면 안 돼요!"라고 답하면 좋은 답변이야! 하지만 "강아지는 초콜릿을 좋아해요!"라고 하면 위험한 정보지?
RAG 시스템이 얼마나 좋은지 평가하려면 여러 가지 방법이 있어. 크게 나누면:
미리 만들어둔 "정답 데이터"와 비교하면서 성능을 측정해.
예를 들어, "강아지가 좋아하는 음식은?"이라는 질문에 대해 올바른 정답이 있는 데이터를 준비해 놓고, RAG가 생성한 답변이 그 정답과 얼마나 비슷한지 확인하는 거야.
실시간으로 사용자들이 질문을 하고, 그 답변이 좋은지 아닌지 직접 평가하는 방식이야.
예를 들어, 사람들이 "이 답변이 유용했나요?"라고 평가하는 것과 비슷해.
두 가지 다른 방법으로 생성된 답변을 비교해서 더 좋은 쪽을 선택하는 방식이야.
예를 들어, ChatGPT-3와 ChatGPT-4의 답변을 비교해 보고, 어떤 답변이 더 좋은지 확인하는 것과 같아.
검색된 문서가 얼마나 관련성이 높은지 측정하는 방법이야.
정확도(Accuracy): 올바른 문서를 잘 찾았는지?
재현율(Recall@k): 필요한 정보를 빠뜨리지 않고 가져왔는지?
순위 기반 평가(MRR, MAP): 관련성이 높은 문서가 검색 결과 상위에 오는지?
강아지 관련 질문을 했을 때, 상위 5개의 문서 중 3개가 관련 있다면 재현율(Recall@5)은 60%가 되는 거야!
생성된 답변이 얼마나 좋은지를 평가하는 방법이야.
정확성(Correctness): 답변이 사실과 일치하는지? (예: "강아지는 초콜릿을 먹어도 돼요" ❌)
관련성(Relevance): 질문과 잘 맞는 답변인지?
충실도(Faithfulness): 생성된 답변이 검색된 문서와 일치하는지?
가독성(Readability): 사람이 읽기 쉽게 작성되었는지?
❌ 나쁜 답변: "강아지는 초콜릿을 좋아해서 매일 먹어야 해요!"
✅ 좋은 답변: "강아지는 고기를 좋아하지만, 초콜릿은 독성이 있어서 먹으면 안 돼요."
Ragas는 RAG 시스템 평가를 쉽게 할 수 있도록 도와주는 오픈소스 툴이야. 여기서 우리가 집중해야 할 주요 평가 지표는:
생성된 답변이 검색된 문서의 내용과 얼마나 일치하는지 평가해.
예: 검색된 문서에 "강아지는 초콜릿을 먹으면 위험하다"라고 나와 있는데, 생성된 답변이 "강아지는 초콜릿을 먹어도 돼요"라고 하면 충실도가 낮은 거야.
질문과 생성된 답변이 얼마나 관련이 있는지 평가해.
예: "강아지가 좋아하는 음식은?"이라는 질문에 "강아지는 뼈다귀를 좋아해요"라고 하면 관련성이 높지만, "강아지는 자동차를 좋아해요"라고 하면 관련성이 낮아.
검색된 문서들이 질문과 얼마나 잘 맞는지 평가해.
예: "강아지가 좋아하는 음식은?"을 검색했는데, "고양이 먹이"에 대한 문서가 나오면 안 되겠지?
💡 Ragas는 이 평가 과정을 자동으로 해주기 때문에, 연구자나 개발자가 쉽게 RAG 성능을 측정할 수 있어!
🚀 정리
✅ RAG 평가의 핵심은 검색(Retrieval)과 생성(Generation)의 두 가지 과정이야!
✅ 검색 단계에서는 관련 문서를 잘 찾았는지, 생성 단계에서는 답변이 정확한지 확인해야 해.
✅ Ragas 같은 도구를 활용하면 자동으로 평가할 수 있어!