Hyper CLOVA X,  Ncloud,  클라우드

[Ncloud] RAG를 활용한 하이퍼 클로바 X 사용기

오늘날의 인공지능 기술은 놀라운 속도로 발전하고 있으며, 그 중심에는 인공지능 언어모델이 있습니다. 해외에는 Open AI 사에서 제공하는 Chat GPT, 마이크로소프트 사에서 제공하는 Bing AI, 구글 사에서 제공하는 Gemeni 등이 있으며, 한국에서는 네이버 클라우드 사에서 제공하는 Hyper CLOVA X가 있습니다.

이 중 오늘의 주제는 Hyper Clova X로, 네이버 클라우드 유저 커뮤니티(NCUC)를 통해 2024년 6월 1일부터 7월 10일까지 진행된 온라인 스터디 “[N STUDY] AI 막차 탑승 : HyperCLOVA X 프로젝트 챌린지”에서 학습한 내용에 대해 공유해 드리고자 합니다.

인공지능 언어모델

인공지능 언어모델(AI Language Model)은 자연어를 이해하고 생성할 수 있는 기계를 만드는 기술입니다. 이 모델은 방대한 양의 텍스트 데이터를 학습하여 인간처럼 문장을 이해하고, 적절한 문장을 생성할 수 있습니다. 이러한 모델은 챗봇, 번역기, 자동 요약 도구 등 다양한 응용 분야에서 사용되고 있습니다.

Hyper CLOVA X

Hyper Clova X는 네이버의 초 대규모 언어 모델로, 네이버의 다양한 서비스에서 수집한 대규모 텍스트 데이터를 기반으로 학습되었습니다. 이를 통해 사용자의 발화를 정확하게 이해하고, 이에 맞는 적절한 답변을 제공할 수 있습니다. 일상 대화부터 전문적인 주제까지 다양한 주제에 대해 대화를 나눌 수 있으며, 한국어를 포함해 영어, 일본어, 중국어(간체), 중국어(번체) 등 다양한 언어를 지원합니다. 뛰어난 확장성을 가지고 있어, 번역, 요약, 글쓰기 등의 작업에 활용될 수 있습니다. 대규모 트래픽에도 안정적으로 동작하며, 빠른 응답 속도를 제공합니다.

Hyper CLOVA X의 현위치

위에서 소개한 내용과 같이, 현재 전세계적으로 다양한 LLM 모델이 출시되어 있습니다. 사용자들은 어떤 LLM 모델이 정확한지 객관적인 지표를 통해 확인하고 싶어합니다. 이를 위해 MMLU (Massive Multitask Language Understanding) 라 불리는 벤치마크 모델이 출시되었습니다. MMLU는 다양한 주제와 난이도를 포함한 여러 테스트를 통해 모델의 전반적인 언어 이해 능력을 측정합니다. 이 벤치마크는 모델이 얼마나 다양한 작업을 수행할 수 있는지, 그리고 이러한 작업을 얼마나 잘 수행하는지를 평가합니다. 또한, 모델이 단일 작업에서 우수한 성능을 발휘하는지뿐만 아니라, 여러 작업에서 얼마나 일관되게 높은 성능을 발휘하는지도 평가합니다.

하지만 MMLU는 영어문화권 사용자를 위해 설계되어, 한국어로 테스트를 진행할 경우 문장들을 단순 번역 하여 활용해왔습니다. 그러나 단순 번역을 통해 테스트를 진행할 경우, 오타나 문법적 실수를 발생시킬 뿐만 아니라 부자연스러운 표현이 발생하게 되고, 영어권의 문화나 속어 등을 반영하지 못해 한국어 특화 모델이 타 모델 대비 높은 점수를 받기 어렵게 되었으며, 이는 KMMLU가 등장하는 계기가 됩니다.

KMMLU (Korean Massive Multitask Language Understanding) MMLU의 한국어 버전으로, 한국어로 된 다양한 작업을 포함한 벤치마크입니다. 기존 영어 벤치마크를 한국어로 번역한 이전 벤치마크와 달리, KMMLU는 한국어 고시 등 원본 한국어 시험에서 수집하여 한국어의 언어적, 문화적 특징을 반영하고 있습니다.

이에 KMMLU 를 통해 다양한 언어모델을 비교한 결과는 아래와 같습니다. 한국과 관련된 다양한 분야의 지식이 요구되는 영역에서 특히 우수한 성능을 보였으며, 구체적으로는 한국의 법률, 지리, 문화의 영역에서 타 모델들 대비 가장 우수한 점수를 기록했습니다.

KMMLU 벤치마크 모델 비교 결과
출처 : https://www.ncloud-forums.com/topic/225/

Clova Studio

이와 같이 뛰어난 성능을 보이는 LLM 모델은 Clova X 홈페이지를 통해 사용할 수 있습니다. 그러나 여기서 끝나지 않고, 개발자들이 이 LLM 모델을 사용하여 특정 기능이나 분야에 특화된 서비스를 사용자들에게 제작 및 제공할 수 있도록 Clova Studio 서비스를 Ncloud 를 통해 제공하고 있습니다.

Clova Studio 서비스는 사용자가 직접 대화형 AI 서비스를 개발할 수 있는 플랫폼으로, 사용자는 튜닝, 익스플로러, 스킬 트레이너 등의 기능을 통해 자신이 원하는 목적에 맞게 서비스를 손쉽게 커스터마이징 할 수 있습니다.

온라인 스터디 챌린지 주제 소개

이번 챌린지 주제는 법률 판례 탐색기(Legal Case Finder)로, 의학, 법률, 금융 등 특정 전문 분야에 대해 PDF 파일을 기반으로 분석 및 답변을 제공해주는 서비스를 제작하게 되었으며, 팀원 별로 각각 Frontend, Backend, Main RAG, User RAG 구성 을 맡아 진행하게 되었습니다. 저는 그중 User RAG 기능 구현을 담당하게 되었으며, Segmentation, Embedding 기능을 활용하여 업로드되는 PDF 파일의 텍스트를 추출 및 요약한 뒤, 임베딩을 통해 RAG로서 활용하는 기능을 구현해보았습니다.

RAG

RAG(Retrieval-Augmented Generation)는 텍스트 생성 모델과 정보 검색 기술을 결합한 시스템으로, 보다 정확하고 관련성 높은 텍스트를 생성하는 것을 목표로 합니다. 이를 위해 사용자의 질문을 입력받아 관련 내용을 자체 데이터베이스에서 검색하고, 가장 유사한 내용을 바탕으로 답변을 작성하는 2개 단계로 동작하게 됩니다.

이는 특정 데이터 소스를 사용해 LLM(Large Language Model)의 근거를 보완하는 기법으로, 검색 기반 모델을 생성형 언어 모델에 결합하여 생성된 내용의 정확성을 높이고 LLM의 가장 큰 문제로 꼽히는 환각 현상(Hallucination)을 효과적으로 제거할 수 있습니다.

RAG 구성 방법

이번 챌린지에서는 RAG 구성을 Main RAG 구성과 User RAG 구성으로 각각 구분하여 구성하였습니다. 먼저 Main RAG 의 경우 국가법령정보 API를 활용하여, 교통 카테고리의 법령을 API를 통해 불러와 분할 및 임베딩 과정을 거쳐PostgreSQL에 벡터 데이터로 저장하도록 하였습니다. 이후, Frontend 개발 과정에서 구현된 홈페이지에서 PDF 파일이 Object Storage로 업로드 되면, User RAG에서는 해당 PDF 파일을 찾아 텍스트를 추출하고, 요약한 뒤 PostgreSQL 내 벡터 데이터와 비교하여, 가장 유사한 데이터를 찾아 응답할 수 있도록 구성하였습니다.

구성 후기

구성 과정에서는 몇가지 문제가 발생 하였는데, 다음과 같습니다.

  1. Main RAG 구성 당시, Embedding 과정을 Hyper Clova X에서 제공하는 Embedding API를 통해 진행하였습니다. 이 경우, 1024 차원의 벡터 데이터로 구성이 진행되나, User RAG 구성 당시 SentenceTransformer 라이브러리를 사용하여 별도의 모델로 벡터 데이터를 생성하여, 384 차원의 벡터 데이터가 구성되어 비교에 실패하였습니다. 이에 동일한 1024 차원을 사용하는 모델로 변경해서 테스트를 진행하였으나, 유사 데이터를 불러오는 것을 실패하여, Main RAG와 동일하게 Embedding API를 사용하는 것으로 변경, 정상 테스트에 성공하였습니다.
  2. 벡터 데이터를 비교할 때, PostgreSQL 에서 특정 함수를 인식하지 못해 추가가 필요하나, 구성 당시 PostgreSQL에 관리자로 접근이 불가능하여 기능 추가가 불가능 하였습니다. 이에 PostgreSQL에서 데이터를 받아와서, 로컬 환경에서 비교 후 답변을 생성하도록 기능을 임시 구성하였습니다.

이와 같이 서로 다른 부분을 담당하여 구성 함에 있어 사전에 특정 기능을 사용하도록 협의가 되지 않을 경우, 전반적인 설계 및 수행 과정에서 문제가 발생할 수 있는 부분을 확인하였습니다.

마무리

“[N STUDY] AI 막차 탑승 : HyperCLOVA X 프로젝트 챌린지” 를 통해 HyperCLOVA X와 LLM 모델 에 대하여 중점적으로 학습해보고, User RAG를 구성하는 과정을 통해 LLM 모델의 단점을 보완하고, 사용자 특화 모델을 제작해보았습니다. 이후 별도 개인 학습을 통해 다른 기능들도 구현해보는 시간을 가질 예정입니다. LLM 관련 학습을 진행하며 처음보는 내용이 많아 학습 및 기능 구현에 어려움도 있었으나, 새로운 내용을 많이 알아가는 시간이 되었으며, 추후 업무나 새로운 프로젝트에서의 활용 방안을 고민해봐야 할 것 같습니다.
감사합니다.