채널 AI팀은 왜 새로운 ML 모델 벤치마크가 필요로 했을까?

벤치마크 시리즈 1편: 리트리벌 벤치마크 제작기

데이브 • 서상우 머신러닝 엔지니어

  • 엔지니어링

안녕하세요, 채널톡 ML 엔지니어 데이브입니다.

채널톡 AI 팀에서는 모델의 성능을 어떤 방식으로 평가하는지를 소개하기 위해, 여러 모델을 평가하는 "벤치마크"를 주제로 시리즈 블로그를 준비했습니다. 1편으로는 RAG의 핵심인 검색 과정을 평가하기 위한 리트리벌(retrieval) 벤치마크를 만드는 과정을 소개드리며 이 시리즈를 시작하려고 합니다. 해당 프로젝트는 저와 스티븐 그리고 데이가 함께 진행했습니다.

벤치마크란 무엇일까요?

어떤 기술이나 시스템의 성능을 비교·평가하기 위해 쓰이는 표준 시험지입니다. ML에서의 벤치마크는 보통 평가 데이터 / 모델 / 메트릭이라는 세 가지 구성 요소를 포함합니다.

가장 많이 접하는 건 LLM를 평가하는 벤치마크입니다. 아래는 MMLU(Massive Multitask Language Understanding) / MMLU-pro라는 57개의 주제(STEM, the humanities, the social sciences 등)에 대해 다지선다 문제를 푸는 벤치마크의 예시 입니다.

보통 모델의 평가 점수를 투명하게 공개하고 서로 비교할 수 있도록 리더보드를 함께 제공해요. 모델을 사용하는 사람 입장에서는 벤치마크 점수를 보고서 어떤 모델을 활용할지 결정할 수 있습니다. 만약 이러한 벤치마크가 없다면 어떻게 될까요? 시스템에 대한 비교를 할 수 없고 모델에 대한 의사 결정을 하기 어렵습니다.

왜 우리만의 벤치마크가 필요할까?

그렇다면 이미 만들어진 벤치마크를 사용하면 되지 왜 우리만의 벤치마크를 만들어야 할까요?

가장 큰 이유는 외부에서 만든 벤치마크의 성능이 올랐다고 무조건 ALF의 성능도 오를 것이라는 사실을 장담하기 어렵기 때문입니다. 그렇기 때문에 우리 도메인에 가장 적합한 평가 데이터/시스템을 구축하고 이 벤치마크를 통해서 의사 결정을 해야 합니다.

이제 저희 팀에서 실제 벤치마크를 구축하는 과정을 설명 해보겠습니다.

리트리벌 벤치마크 제작기

ALF는 채널톡의 도큐먼트들을 참조해서 RAG를 기반으로 상담을 진행 하고 있습니다.

아래는 일반적인 RAG 기반 도식입니다.

이 복잡한 RAG 과정 중에서 embedding model의 검색 능력을 평가하기 위한 리트리벌 벤치마크를 어떻게 구축 했는지 알려 드리려고 합니다. 우선 리트리벌 데이터 셋이 어떤 형식으로 생겼는지 예시를 보면서 설명을 이어가겠습니다.

Plaintext
Query: 기본 시트로 등록된 사람이 수신함의 메시지를 볼 수 있는지

Chunk #1: 
시트
채널에 참여하는 입장권인 기본 시트와, 상담을 담당하고 관리할 수 있는 오퍼레이터 시트로 나뉘어져 있어요.
기본 시트는 채널에 참여하는 모든 매니저에게 필요하며, 이 중 오퍼레이터 기능을 켠 매니저에게 오퍼레이터 시트가 추가됩니다.
- 기본 시트
- 팀챗 이용이 가능합니다.
- 고객과의 상담 내역을 조회 할 수 있고, 고객 연락처도 열람할 수 있어요.
- 상담에 팔로워로 참여하여 고객 및 내부 팀원과 대화할 수 있어요.
- 오퍼레이터 시트
- 기본 시트의 기능에 상담을 담당하고 관리할 수 있는 기능이 추가된 시트에요.
- 오퍼레이터 시트가 있는 매니저만 전화, 채팅 상담의 담당자가 될 수 있습니다.
- 상담 상태 변경(보류/종료)과 상담 태그 부착 등 수신함 오른쪽의 상담 정보 관리가 가능합니다.

Chunk #2: 
부가 서비스
부가 서비스는 유료 플랜을 구독하실 때 사용할 수 있어요.
워크플로우는 실행 50건, 마케팅은 실행 30건까지는 무료로 제공되며, 초과 시 실행 수 만큼 과금됩니다.
부가서비스 이용 금액은 사용량에 따른 후불 결제 또는 선불 충전으로 구매하실 수 있어요.

보통 RAG는 도큐먼트를 그대로 쓰지 않고 일정한 길이/의미 단위로 나누어진 청크라는 단위로 검색을 합니다. 리트리벌 평가 데이터는 이 query와 chunk의 연관성을 확인합니다. 위의 예시에서 (query, chunk #1)은 연관성이 있는 데이터고 (query, chunk #2)는 연관성이 없는 데이터라고 볼 수 있습니다.

평가를 위한 데이터셋 제작

아래 그림은 리트리벌 벤치마크를 어떤 방법으로 데이터 셋을 제작했는지를 나타내는 도식입니다.

각 과정을 자세하기 설명드리자면 아래와 같은 방식으로 구축했습니다.

  1. Query 선택

    • 다양한 주제의 쿼리를 선정하기 위해 사용자들이 알프에게 자주 묻는 쿼리들을 직접 선별했습니다. 아래는 선별 된 쿼리 예시들입니다.

      • 기본 시트로 등록된 사람이 수신함의 메시지를 볼 수 있는지

      • 오퍼레이터 시트를 비활성화하면 비용 청구에 미치는 영향

      • 상담 자동 배정 기능 설정했는데 자동 배정이 되지 않음

  2. 각 query 별로 후보 문서 선정

    • 각 쿼리 별로 연관된 문서를 먼저 검색해서 후보군을 만듭니다.

    • vector database에 query를 검색해서 연관된 top-20개의 chunk를 가져옵니다.

    • chunk의 source가 되는 document를 가져와서 (query, document) 쌍으로 데이터를 만듭니다.

      Q: 왜 바로 청크(chunk)로 데이터를 만들지 않나요?

      A: chunking algorithm은 전략이 달라질 가능성이 있기 때문입니다. 일단 document로부터 연관된 데이터를 만들어두면 chunking 전략이 바뀌더라도 재레이블링 없이 다시 데이터를 구축할 수 있기 때문이죠.

  3. Silver label 구축

    • 모든 문서가 연관성이 있는지를 사람이 체크하기 어렵기 때문에 LLM을 활용해서 cue sentence (query와 연관이 있는 문장) 를 추출합니다.

  4. 레이블링

    • LLM이 잘못 만든 silver label을 고치고 찾지 못한 문장도 추가로 사람이 레이블을 달았습니다.

    • 저희는 레이블 스튜디오라는 open-source 툴을 사용했는데요. 간단하게 문장을 드래그하면 연관된 부분들을 표시할 수 있습니다. 아래는 툴 예시입니다.

  1. 레이블링 이후 후처리

    • 이상한 query / 너무 연관된 document가 많은 일반적인 query 제거하고 다시 article을 청킹합니다.

    • 이때 chuck안 에 cue sentence가 존재하면 query와 chunk가 relevance하다고 판단합니다.

그래서 어떻게 활용했을까?

  • Hybrid search 도입기

    • RAG에서 hybrid search란 여러 가지 검색 기법을 결합해서 문서를 검색하는 방식입니다

      • 기본적으로 sparse retrieval(BM25) + dense retrieval(vector search)검색을 결합하는 방식을 자주 사용하는데요

        • BM25 점수와 임베딩 유사도 점수를 합산하거나 가중 평균하거나,

        • 또는 BM25로 먼저 검색한 뒤에 dense search로 reranking하는 방식을 사용할 수 있는데요.

      • 실제로 기존에 사용하던 벡터 검색보다 더 높은 성능을 보이는지 확인하기 위해 벤치마크로 성능 체크를 해보았습니다.

  • 평가 결과

    • 메트릭

      • Hit@k: 상위 k개를 검색했을 때 하나라도 정답(관련 문서)이 있으면 1, 없으면 0

      • Recall@k: 상위 k개 검색했을 때 관련 문서 중 몇 개를 찾았나의 비율

      • nDCG@k: 상위 k개 검색했을 때 관련 문서들을 얼마나 위쪽에 잘 랭크했나

  • 결과

    • 결과적으로 hybrid search가 기존 dense retrieval(vector search)과 sparse retrieval(BM25)에 비해 더 좋은 성능을 보임을 알 수 있었습니다.

      hit@5

      recall@5

      ndcg@5

      hit@10

      recall@10

      ndcg@10

      hit@20

      recall@20

      ndcg@20

      vector search

      24/35

      0.41

      0.43

      27/35

      0.54

      0.47

      30/35

      0.65

      0.52

      BM25

      21/35

      0.41

      0.40

      22/35

      0.49

      0.42

      26/35

      0.56

      0.46

      hybrid search

      24/35

      0.48

      0.52

      27/35

      0.57

      0.53

      31/35

      0.70

      0.59

여기서 멈출 수 없지..!

  • 추가적으로 이러한 점수가 정성적으로도 의미가 있는지 분석했는데요.

  • Hybrid search는 잘 검색했지만 vector search가 잘 검색하지 못했던 샘플들을 찾아보면 의미론적으로는 잘 파악하기 어려운 회사 이름/회사 내부 키워드들을 더 잘 찾아내는걸로 확인되었습니다. Sparse retrieval이 함께 진행되면서 키워드 기반의 매칭을 통해 이러한 문서들을 더 잘 검색하는 것으로 생각됩니다.

마지막으로..

AI/ML 시스템이 존재하면 벤치마크는 따라올 수 밖에 없는 숙제입니다. 특히 최근의 LLM 같이 강력한 언어 모델은 개인의 느낌이 아니라 공정하고 신뢰도 있는 평가는 필수적입니다.

하지만 요즘은 정말 좋은 LLM들이 계속 나오고 그 변화는 더 이상 벤치마크를 쓸모 없게 만드는 일의 연속인데요.

채널톡 AI 팀에서는 이러한 변화에 적응하고 상담 도메인에 맞는 Agent / TTS 벤치마크를 제작하고 있습니다. 다음 편에서는 이러한 더 최신 기술에 해당하는 벤치마크를 제작하고 평가하는 과정들을 공개해보겠습니다.

[1] https://arxiv.org/abs/2009.03300

[2] https://huggingface.co/spaces/TIGER-Lab/MMLU-Pro

[3] https://justaithings.org/complete-guide-with-code-to-top-chunking-method-you-should-know-rag-lives-or-dies-by-chunking-6b92bf6628e3

[4] https://ysymyth.github.io/The-Second-Half/

We Make a Future Classic Product