많은 기업이 생성형 AI를 활용해 업무용 챗봇을 개발하고 있습니다. 최근 LLM(대형 언어 모델)의 성능이 상향 평준화된 이유도 있지만, AI에게 기업의 데이터를 학습시키는 다양한 방법이 등장했기 때문입니다.
과거에는 Fine Tuning 방식을 통해 대량의 데이터 입력과 수작업이 필요했지만, 최근 RAG(Retrieval-Augmented Generation)를 활용하면 간단하게 데이터를 학습한 업무용 챗봇을 만들 수 있게 되었습니다.
RAG의 원리는 간단합니다. 기본적으로 두 가지 요소로 구성됩니다:
RAG는 LLM의 학습 한계와 시간의 흐름에 따른 정보 업데이트 문제를 해결하는 데 유용합니다. 기본적으로 LLM이 최신 데이터나 기업 내부의 기밀 자료 등을 활용한 맞춤형 응답을 제공할 수 있도록 도와줍니다.
1. Vector Store에 데이터 입력
2. 사용자 질문 수신
-> 사용자 문맥 저장 및 조회
3. 질문 분석
-> AI는사용자로부터 입력된 명령어 또는 질문을 자연어 처리(NLP)로 분석함. 예를들어, “갤럭시 S24 장점이 뭐야?"라는명령어가 있으면 AI는 날씨 정보를 제공하는 함수가 필요하다는 것을 이해
4. 정보 검색
-> 질문을벡터로 변환한 후, 사전 입력된 Vector Store에서 코사인 유사도 등을 기반으로 관련성 있는 정보를 찾음(학습된데이터에 품질에 따라 할루시네이션 있을 수 있음)
5. 결과 반환
-> 질문의 의도에 맞게 답변을 자연스럽게 정리하고 프롬프트에 맞춰서 답변함
RAG를 활용하여 다양한 리서치를 진행했습니다. 많은 회사들이 RAG를 도입해 챗봇을 개발하고 있으며, 우리도 이 기술을 적극적으로 활용하고자 했습니다. 그러나 특정 환경에서 RAG는 다음과 같은 한계점을 드러냈습니다.
RAG의 에이전트를 분리하고 프롬프트를 최적화하는 등 여러 절차를 거쳤으나, 어느 순간 더 이상 답변의 신뢰도가 향상되지 않았습니다. 그래서 다른 방법을 찾았고, 그 해결책이 바로 Function Calling이었습니다.
Function Calling은 RAG의 한계를 극복할 수 있는 여러 장점을 제공합니다.
1.사용자 질문 수신
-> 사용자 문맥 저장 및 조회
2.질문 분석
-> AI는사용자로부터 입력된 명령어 또는 질문을 자연어 처리(NLP)로 분석함. 예를들어, “갤럭시 S24 장점이 뭐야?"라는 명령어가 있으면 AI는 날씨 정보를 제공하는 함수가 필요하다는 것을 이해
3.함수 호출
-> 명령을분석한 후, 해당 작업을 처리할 수 있는 함수(또는 API)를 호출 이때 함수는 미리 정의된 명령어와 파라미터를 기반으로 호출됨. 예)뉴스룸 Search API에갤럭시 S24를 검색함
(검색된결과를 반환하므로 할루시네이션 없음)
4.결과 반환
-> 함수가 실행되고 나면, 그 결과를 사용자가 이해할 수 있는 형태로 다시 제공
예) 가져온 정보에서 갤럭시 S24의 장점만 뽑아서 대답(이때 프롬프트 엔지니어링이 적용됨)
기업용 AI 에이전트를 구축할 때는 RAG와 Function Calling 기능을 적절히 결합하는 것이 중요합니다. 그 이유는 모든 기업 데이터가 시스템에 존재하지 않기 때문에, API로 호출할 수 없는 정보도 많기 때문입니다. 예를 들어, 기업의 규정처럼 단일 사실로 존재하는 데이터는 RAG가 더 효율적입니다.
반면, 영업, 물류, 관리 등 실시간으로 변하는 비즈니스 프로세스 데이터는 Function Calling을 활용해 처리해야 합니다.
RAG와 Function Calling을 효과적으로 결합해 AI 에이전트를 구축한다면, 기업 환경에서 더 신뢰할 수 있고 효율적인 AI 솔루션을 만들 수 있습니다.