LLM 프로젝트 쉽게 접근하기: 시작 편

2024-10-02 | 개발 이야기, 사이냅 이야기

LLM 프로젝트 구축 관심 가지신 여러분 안녕하세요, 사이냅소프트입니다 🥰

생성형 AI (LLM) 서비스를 사내에 구축하려고 하다 보면 한단계씩 해결해야 할 과제가 있습니다.

이번 시간에는 가상의 프로젝트 구축 과정을 가볍게 따라가면서, 어떤 기술과 자원이 문제 해결에 필요한지 맥락을 알아봅니다.  

AI 기술 트렌드, 비개발자

조금 오래된 강의이지만 AI 석학 앤드류 응 교수가 모두를 위한 AI(AI For Everyone)’에서 인공지능 프로젝트 구축에 대한 조언을 하는데요. (https://www.deeplearning.ai/courses/ai-for-everyone/)

처음에 조직에 적용할 사례로는 무조건 작고, 가볍고, 빠르게 시도해서 실제로 변화를 느낄 수 있는 프로젝트로 시작하라고 합니다.

앤드류 응은 많은 자원을 투입해서 한번에 성공시키려고 하는 것 보다 조직원들이 이러한 방식의 문제 해결 과정에 익숙해질 수 있어야 한다고 말합니다.

 

그런 조언을 따라서 가벼운 프로젝트로 시작해 볼까요?

시작으로 가벼운 LLM 프로젝트 만들기

사례: 아르바이트 매뉴얼 문의사항 챗봇

여론조사 기관에서 아르바이트생을 위한 매뉴얼 문의사항 챗봇을 만들었다고 해보겠습니다.

 

배경:

대선이나 총선 기간이 되면 여론조사 기관은 투표일 전날과 당일 2일 정도 업무해줄 1만명 정도의 단기 아르바이트 생을 전국에서 고용합니다. 이 과정을 간단히 정리하면 다음과 같습니다.

  1. 아르바이트 공고를 확인하고
  2. 날짜와 금액, 업무 지역, 업무 내용 등 업무 조건에 맞으면 지원서류를 작성하고 대기하고
  3. 아르바이트 지역, , 교육일정 배정 결과가 나오면
  4. 아르바이트를 수락할지 말지 결정하고 답장을 보냅니다
  5. 아르바이트 교육이 이루어지고
  6. 교육 받은 아르바이트 매뉴얼에 대해서 본사에 아르바이트생들이 질문하곤 합니다.
  7. 업무를 완료한 사람들이 업무를 증빙하고 급여를 지급받습니다

 

보통 1만명의 아르바이트생을 뽑기 위해 지원하는 사람은 약 2만명, 질문은 하루에 200건에서 500건 정도가 들어옵니다.

안내 페이지를 꼼꼼히 제작하고 개별 안내를 해도 왜 문의가 많이 들어올까요?

1. 업무 조건과 급여에 대한 문의는 매뉴얼을 바탕으로 계산이 필요한 영역입니다.

2. 여론조사 현장이 전국 각지이다 보니 예외사항이 많아 업무 매뉴얼이 방대한데, 사람들은 자기에게 필요한 부분을 찾아보는 것을 어려워합니다.

 

 

주요 질문 답변
제가 A지역에서 팀장/팀원으로 근무하면 급여가 XXX가 맞나요? , 급여계산 매뉴얼에 따라 계산하면  ‘A’지역은 비숙박 지역으로 팀장의 경우 XXX 원입니다.
신청자 231415 입니다. 배정 결과 나왔나요? , 안내 문자가 금일 2시에 나갈 예정입니다. ‘231415’님은 ‘B’지역 팀원으로 배정되었습니다.
현재 입구가 두개인 곳에서 여론조사 부스를 설치해야합니다.  계단이 가운데 있는데 어떻게 해야하나요? 업무 매뉴얼 42page를 보시면 양 입구에 사람을 나누어 배치하고 부스는 15미터 떨어진 곳에서 한개 설치하도록 되어있습니다.

 

AI 서비스를 구축해 해결하기 좋은 문제의 선택:

질문의 내용과 답변의 범위는 정해져 있습니다. 크게 두 파트로 나눕니다.

 아르바이트 신청자가 신청을 확정했는지에 대한 데이터, 업무 장소 배정에 대한 건은 SQL로 된 DB에 실시간으로 저장, 수정됩니다.

급여와 업무에 대한 질문은 매년 거의 바뀌지 않습니다.

주요 질문 답변 답변 출처
제가 A지역에서 팀장/팀원으로 근무하면 급여가 XXX가 맞나요? , 급여계산 매뉴얼에 따라 계산하면  ‘A’지역은 비숙박 지역으로 팀장의 경우 XXX 원입니다. pdf매뉴얼에 있는 표를 바탕으로 계산
신청자 231415 입니다. 배정 결과 나왔나요? , 안내 문자가 금일 2시에 나갈 예정입니다. ‘231415’님은 ‘B’지역 팀원으로 배정되었습니다. 지원자 DB (SQL)
현재 입구가 두개인 곳에서 여론조사 부스를 설치해야합니다.  계단이 가운데 있는데 어떻게 해야하나요? 업무 매뉴얼 42page를 보시면 양 입구에 사람을 나누어 배치하고 부스는 15미터 떨어진 곳에서 한개 설치하도록 되어있습니다. pdf매뉴얼에 있는 글

 

LLM을 이용하면 좋을 업무입니다.

 

기존 비용:

단기 아르바이트 인력의 문의를 응대하기 위한 2 * 인력 비용 250만원* 2개월: 1000만원
이 비용보다 저렴하면 프로젝트를 하는 것이 좋습니다.

 

기획하기
이를 위한 챗봇을 만든다고 합시다. 가장 가볍게 만들 수 있는 방법은 어떤 게 있을까요?

우선 재료를 준비하겠습니다.

  1. 모델은 OpenAIAPI를 사용했다고 해볼 게요.
  2. 답변에 참고할 데이터가 될 서너 장 정도의 매뉴얼 pdf 문서와, SQL DB 데이터가 필요합니다.
  3. RAG(검색증강생성: 대형 언어 모델의 성능을 데이터베이스를 검색하여 개선하는 기술)을 할 건데, 간단히 하고 싶으므로 여기에 랭체인을 활용할 겁니다.

 

AI 모델, API

GPT를 써보고나서 고민해 본 적 있나요? 이걸 API로 활용한다면 프롬프트를 보내고 답변을 받는 건 알겠는데, 어떻게 내가 필요한 서비스를 만들어야 할 지요.
https://platform.openai.com/docs/api-reference/introduction


(Organization overview 에서 api 키를 받을 수 있습니다)

 

하지만 이건 아직 내가 구현하고 싶은 서비스가 아닙니다. 내가 채팅으로 질문을 받을 때마다 pdf에서 자료를 찾고 editor에 인풋을 넣어서 답을 해줄 순 없습니다.

여기에 하나의 사례로  랭체인이 유용한 도구가 될 수 있습니다.

 

RAG(검색증강생성)을 위한 프레임워크 중 하나인 랭체인(LangChain)

랭체인은 LLM(Large Language Model)을 기반으로한 애플리케이션 개발을 위한 오픈 소스 프레임워크입니다. 이 프레임워크는 다양한 언어 모델을 효율적으로 활용하고, 간단한 인터페이스를 제공하여 개발자들이 언어 모델을 쉽게 활용할 수 있도록 도와줍니다. 랭체인 워크플로우의 핵심 요소는 이름에 있듯이체인(연결 고리)’을 만드는 것입니다. LLM과 상호작용하기 위한 프롬프트의 템플릿도 지정하고, 내부 데이터소스 (문서, DB)에 엑세스 할 수 있는 인덱스 와 연결시켜 주기도 합니다.

내부 데이터 소스! 중요한 이야기입니다. 드디어 AI가 제가 가지고 있는 근거자료를 참고해서 대답해줄 수 있게 되거든요. 이런 기술을 RAG(검색 증강 생성)이라고 하는데요. RAG를 하는데 다양한 방법을 쓸 수 있지만 대중적으로 알려진 랭체인으로 이야기를 하겠습니다. 

그림에서 LLM 은 우리가 할 프로젝트의 메인 기능을 담당합니다. 내가 구축한 모델이나 오픈소스 모델일 수도 있고, 지금 이야기에서는 GPT API 로 가져옵니다.

프롬프트는 거대 언어 모델에 전달하는 명령어입니다. 랭체인에서는 프롬프트 템플릿 클래스를 사용합니다. 이 템플릿은 언어 모델에 전달할 컨텍스트, 쿼리, 출력 형식을 구조적으로 정의하여 프롬프트 관리와 최적화를 용이하게 합니다.


체인
은 언어 모델 기반 앱에서 질의가 연속적으로 이어지는 형태로 동작하기 위한 구성 요소입니다. 데이터 검색, 요약, 언어 모델 질의 등 일련의 과정을 서로 연결하여 워크플로우를 만듭니다.

인덱스는 특정 날짜까지의 데이터로만 학습한 경우 최신 정보에 대한 질문에 답을 잘 내놓지 못하는 문제를 해결하기 위해 사용됩니다. 외부 데이터 소스에 접근하여 RAG (Retrieval Augmented Generation)를 구성하는 데 필요한 기능을 제공합니다. 인덱스 기능을 이루는 요소는 도큐먼트 로더 (파일 저장 서비스와 같은 소스에서 데이터 소스 가져오기 위한 것), 벡터 데이터베이스 (데이터 포인트를 벡터 임베딩으로 변환하여서 유사성을 나타나기에 매우 효율적인 검색 (Retrieval) 수단) 등이 있습니다.

https://www.synapsoft.co.kr/blog/32687/ 글에서 벡터 임베딩을 잠깐 언급했는데, 벡터 임베딩은 단어와 문장, 기타 데이터를 의미와 관계를 포착하는 숫자로 변환하는 방법입니다.
숫자로 표현을 해야 기계가 이해하기 쉽고, 벡터 표현을 해야 계산할 수 있습니다. 문장, 문서, 이미지 등이 벡터 임베딩의 대상이 될 수 있습니다.

메모리는 대화형 시스템이 과거 메시지에 직접 액세스할 수 있도록 해주는 기능을 제공합니다.

에이전트는 상위 지시문을 받아 어떤 툴을 사용할지 결정하여 체인을 유연하게 조작합니다.

당장은 메모리(사용자와의 대화에 대한 주요 사실을 기억하고 향후 상호작용에 해당 정보를 적용)가 중요하지는 않은 1회성 답변이 많지만, 더 복잡한 답변이 필요하면 메모리나 프롬프트 템플릿 클래스도 더 잘 사용할 필요가 있겠죠.

 

유지 비용 계산

구축 인력 비용은 정확하지 않아도, 이 프로젝트의 유지 비용은 API 비용과 개발팀의 매년 변경사항이 없는지에 대한 유지보수 정도일 것 같아요.

 

기대효과

2명의 인건비보다 저렴한 가격으로 문의사항 챗봇을 운영

생각보다 쉽게 어떤 서비스가 필요할 때 어떤 기술이 들어갈지 정리할 수 있었습니다.
다음편에서는 본격적으로 LLM 프로젝트를 키워보겠습니다. 바로 다음편 ‘LLM 프로젝트 쉽게 접근하기: 스케일 업 편 을 기대해주세요!


더 읽어보기

오늘의 글이 재밌으셨다면 사이냅소프트에서 다음의 페이지들을 읽어보시면 좋을 것 같아요. 다음 편의 내용과도 관련있습니다. 

 

 

    AI_마케터_Alex

    Alex는 누구인가요?

    사이냅소프트의 마케터 Alex Designthinking FT 기업과 AI 교육 기업에서 일하며 기술 커뮤니케이션을 해왔습니다.  Alex는 개발자가 비즈니스에 대해, 비개발자가 개발에 대해 쉽게 이해할 수 있는 컨텐츠를 만들고 상호 커뮤니케이션에서 시너지가 나도록 노력합니다.

    지금은 TIL(Today I Learned): 깃헙 대신 블로그에서 잔디를 심는 🌱🌱🌱 중인데요, 사이냅소프트웨어나 위 내용이 더 궁금하시다면 mkt@synapsoft.co.kr로 연락주세요.

    사이냅 문서뷰어

    어디서 어떻게 사용되고 있을까요?

    사이냅 문서뷰어의 적용사례를 만나보세요

    [개인정보 수집, 이용에 대한 동의 절차]

    사이냅 문서뷰어 적용사례를 만나보세요

    차원이 다른 HTML5 웹에디터

    사이냅 에디터

    사이냅 에디터가 어디에 활용될 수 있을까요?
    다양한 적용사례를 만나보세요

    [개인정보 수집, 이용에 대한 동의 절차]

    한 차원 높은 HTML5 웹에디터를 만나보세요