본문 바로가기

카테고리 없음

[Green Developers] 프로젝트 후기

Modular RAG with HyperClova X라는 프로젝트 명으로 네이버 그린 디벨로퍼스 과정을 수행했다.

 

아직 갈 길이 멀지만, 중간 점검이라고 생각하고 후기를 남겨보고자 한다.

 

 

 

1. 프로젝트 개요


아이펠톤을 진행했을 때 우리는 채권 리포트 기반 Advanced RAG 시스템을 만들었다.

 

채권 리포트의 텍스트, 테이블, 이미지를 벡터스토어에 저장하고 요약 및 기타 작업을 위한 RAPTOR 아키텍처를 활용하여 요약 기능도 수행 가능한 시스템을 만들고자 했다.

 

문서 파싱에는 Upstage의 임베딩 모델이 가장 성능이 좋았고, OpenAI의 o1, o3, 4o-mini를 각각 질문 특성에 맞게 활용했다.

 

하지만 Advanced RAG와 추론 모델의 특성상 속도가 생각보다 나오지 않았다.

 

정해진 시간이 있던 프로젝트라 시간 측면을 개선하지 못한 부분이 아쉬웠는데, 그린 디벨로퍼스를 통해 해당 부분을 좀 더 개선하고자 하는 목적이 있었다.

 

 

 

2. Ncloud 활용


Ncloud 서비스 중 Clova Studio를 주요하게 사용했다.

 

사실 주요하다는 말이 웃긴 게, 실제로 모델을 생성하거나 만드는 작업을 수행하지 않고 기존 LLM 모델이 RAG 시스템 안에서 얼마나 높은 성능을 보여줄 수 있는지를 서비스화하는 과정이었다보니, 그 외의 자원이 거의 들어가지 않았다.

 

시스템 아키텍처 속에는 여러 개의 유틸리티 함수들이 포함되어 있는데, 그 중 대표적인 것이 날짜 추출 함수다.

 

채권 리포트를 기반으로 하는 시스템의 특성상, 특정 날짜의 특정 값에 대해 질문하는 경우가 많을 거라고 생각했다.

 

하지만 여러 개의 리포트에는 같은 특성을 가지고 있는 서로 다른 값들이 많기 때문에, 사용자의 쿼리에서 날짜를 정확하게 추출하지 못한다면 틀린 값을 가져오게 되는 경우가 많다.

 

따라서, 이 부분을 원래 프로젝트에서는 OpenAI의 추론 모델로 구현했다.

 

추론 모델은 답을 도출하는 데에 생각보다 오랜 시간이 걸리는데, 일반 생성형 AI의 답변이 쓸 수 없을 정도로 강건하지 못했기 때문에 어쩔 수 없는 선택이었다.

 

이런 유틸리티 함수 중에 Groundedness Checker도 있었다.

 

답변의 정확도를 측정해서 yes나 no로 답변하는 함수인데, 답변의 품질이나 컨텍스트와 쿼리의 관련성 등을 측정하는 데 주로 사용했다.

 

이 부분도 4o-mini 모델을 활용해서 구현했다.

 

임베딩 모델 또한 마찬가지다.

 

upstage의 임베딩 모델이 가장 좋은 성능을 보였기 때문에 원 프로젝트에서는 upstage의 모델을 활용했다.

 

당연히 답변을 수행하는 LLM도 OpenAI의 모델을 사용했었다.

 

위에 언급했던 모든 LLM 모델들을 HyperClova X 기반 모델로 수정했다.

 

그러니까 처음부터 끝까지 오로지 HyperClova X로 구현한 Advanced RAG, Modular RAG라고 할 수 있겠다.

 

 

시스템의 Modular 아키텍처

 

 

시스템의 Agentic 아키텍처(작업중)

 

 

 

3. Clova Studio의 장단점


Clova Studio의 HCX-005 모델을 활용했다.

 

물론 해당 모델이 가장 최신 모델이었기 때문에 선택했다.

 

최신 모델이 비싸긴 하지만, 1,000 토큰에 5원이다.

 

OpenAI가 최근 내놓고 있는 추론 모델들에 비하면 턱없이 저렴하다.

 

 

일단 속도가 빨랐다.

 

그리고 한국어에 대한 이해도가 굉장히 높았다.

 

특히 날짜 관련 유틸리티 함수를 활용하면서 추론 과정을 따로 적용하지 않았음에도 불구하고 일관성 있게 정확한 대답을 내놓는 경향을 보였다.

 

날짜 유틸리티 함수는 생각보다 많은 부분을 건드릴 필요가 없었던 것 같다.

 

Groundedness Checker의 경우에는 조금 생각해 볼 부분이 있을 것 같긴 하다.

 

주로 사용했던 라이브러리가 LangChain과 LangGraph인데, LangChain에서 아직까지 지원되지 않는 기능이 몇 가지 있었다.

 

OpenAI와 Claude 등 LangChain 커뮤니티 내에서 활발한 사용이 이루어지고 있는 LLM 모델들에 비해서는 아직 그런 부분이 약간 미흡하지 않나 생각한다.

 

하지만 한국어 기반으로 월등하게 빠른 속도를 자랑하니, 해당 부분은 덜 생각해도 되지 않을까 싶다.

 

 

또한 프롬프트의 영향을 굉장히 많이 받는다는 부분이 있다.

 

HyperClova X에 대한 논문에서는 프롬프트와 p-tuning에 대한 언급이 많다.

 

프롬프트를 적절히 활용해서 모델의 성능을 끌어올릴 수 있다는 이야기다.

 

하지만 반대로 말하면, 적절한 프롬프트를 사용하지 못한다면 LLM의 성능이 극적으로 떨어질 수 있다는 의미이기도 하다.

 

한국어 프롬프트를 사용했을 때와 사용하지 않았을 때의 성능차이가 체감될 정도로 심했다.

 

물론 '한국어 특화 LLM'이라고 생각한다면 해당 부분이 단점이 아닐 수 있고 오히려 장점으로 작용할 수 있는 부분이 될 수 있다.

 

또한 프롬프트의 영향을 많이 받는다면 좀 더 세밀한 프롬프트 튜닝을 수행해서 성능을 끌어올릴 수도 있겠다.

 

 

추론 모델의 부재도 있다.

 

이제는 나온지 좀 시간이 지난 o1 모델이나 o3, o3-mini 모델을 활용해서 좋은 성능을 보이는 아키텍처의 특정 부분들이 있다.

 

이 부분들은 당연히 기존 생성 LLM을 사용했을 때 성능이 나오지 않았던 부분들이다.

 

이런 부분들을 구현함에 있어 추론 모델이 필요했는데, 현재 최고 성능 모델인 HCX-005로는 부족한 감이 없잖아 있었다.

 

 

4. 참여 소감


솔직히 네이버에서 나온 LLM 모델이라는 부분에서 크게 기대를 하지 않았던 게 사실이다.

 

API를 끌어다 쓸 거면 해외의 좋은 LLM이 있고 오픈소스 모델도 있는데 굳이 뭐하러 이 모델을 쓰냐는 생각도 들었다.

 

하지만 분명히 한국어에 특화된 모델이라는 특장점이 있고, 이를 활용해 국내에서 제공 가능한 서비스를 만드는 데에는 부족함이 없겠다는 생각이 들었다.

 

실제로 기업 내에서 사용되는 LLM을 만들거나 상담원 AI를 만드는 데에는 굉장히 효율적으로 활용될 수 있겠다고 생각했다.

 

퓨샷 러닝을 시도해보지는 않았지만, 성능을 끌어올리는 데 분명 도움이 되리라는 생각도 했다.

 

HyperClova X가 사람들에게 좀 더 널리 알려지고 활용될 수 있기를 바란다.

 

그리고 이런 프로젝트를 수행할 수 있는 기회를 더 많이, 더 폭넓게 주었으면 좋겠다.

 

또한 추론 모델을 빨리 개발해줬으면 좋겠다는 개인적인 바람도 있다.

 

 

5. 향후 계획


아래 GitHub 링크를 달아놓았다.

 

보시면 아시겠지만 아직 절반도 완성하지 못한 단계다.

 

LangGraph를 활용해서 아키텍처를 복사한 후 적당한 성능이 나오게끔 수정했다.

 

Modular RAG를 만들겠다는 소기의 목적은 달성했으나, 요즘 핫하다는 Agentic AI까지 직접 구현해보고 싶은 생각이 있다.

 

그리고 이전에 Advanced RAG 구축 프로젝트를 수행할 때는 AutoRAG와 RAGAS를 활용하여 평가를 수행하는 과정도 있었다.

 

사실 이 과정이 수치로 성능을 파악할 수 있기 때문에 유의미하다고 생각하는데, HyperClova X를 통해 이 과정을 수행해보면 어떨까 싶기도 하다.

 

HCX-005 모델의 또 한 가지 장점 중 하나는 파인튜닝, 즉 학습이 가능하다는 점인데 이 부분도 한 번 고려해봄직 하다.

 

이런 부분들을 추가적으로 수행해서 시스템을 고도화해보려고 한다.

 

 

 

GitHub 링크 : https://github.com/highlevelnotes/ModularRAG-with-HyperClovaX