LLM과 RAG, 쉽게 이해하기

2024-10-19

ChatGPT가 등장하면서 모든 분야가 급격하게 변화하고 있다. 텍스트만 입력하면 영상을 만들어주는 Sora, 기존 노래의 목소리를 다른 인물의 목소리로 바꾸는 AI 커버, 아나운서 말투를 학습한 AI 앵커 등, 여러 분야에서 무서울 정도의 속도로 사람의 자리를 대체하려 하고 있다.

이런 시기에 과연 프론트엔드 개발자는 어떻게 해야 좋을까? 일각에서는 AI 때문에 개발자의 입지가 줄어들고 힘들어질 것이라 생각한다. 실제로 전 세계 많은 IT 기업에서 대규모의 구조조정이 일어나기도 했고, 일어나고 있다.

처음에 나 역시 '언제까지 개발할 수 있을까..'라는 망연자실한 생각이 들었다(사실 지금도 여전히 마음속에 있긴 하다). 그러나 이런 시기일수록 더욱더 이러한 도구를 잘 활용해야 하지 않을까? 라는 생각이 들었고, 곧 'AI랑 친해지기'라는 목표를 세웠다.


해당 글은 관련 개념을 깊게 파고들기보다, (내가 이해할 수 있도록) 최대한 쉽게 정리하는 것이 목표다.

LLM(Large Language Model, 대규모 언어 모델)

LLM은 개발자라면 한 번이라도 써봤을 ChatGPT, 그리고 얼핏 이름을 들어봤을 법한 Claude, Gemini 등의 서비스가 있다.

가장 큰 특징이라면, 이들은 보통 수십억에서 수조 개의 토큰(단어, 스페이스, 특수 문자 등)을 학습한 모델이다. 여기서 학습은 컴퓨터가 사람처럼 언어를 이해하고 생성하도록 훈련하는 과정이라 볼 수 있다.

한국어를 모르는 컴퓨터에 '안녕하세요'라는 단어를 주면 이게 어떤 뜻인지 알지 못한다. 따라서 ['안', '녕', '하', '세', '요'] 이렇게 작은 단위로 나누는데 이를 토큰화(Tokenization)라고 한다. 그리고 이 토큰은 컴퓨터가 이해할 수 있는 숫자 형태로 변환된다.

그리고 수집한 다양한 데이터에서 '안녕' 다음에 '하세요'가 자주 등장한다는 사실을 배운다. 이렇게 많은 문장을 반복적으로 학습하면서, 한국어의 문법, 문장 구조, 맥락 등을 이해한다. 이처럼 학습한 내용을 바탕으로 다음 단어를 예측할 수 있게 된다. 그리고 이처럼 예측하는 방식은 가중치(weights)를 학습하는 과정이라고 볼 수 있다.

최초에는 모델이 가중치를 무작위로 초기화한다. 따라서 처음에는 입력한 내용을 제대로 이해하거나 예측할 수 없다. 수많은 데이터를 학습하면서 가중치를 조정하며 '안녕' 다음에는 '하세요'가 나오는 값을 찾게 된다. LLM의 핵심은 이 가중치에 있다고 보면 된다. 따라서 이 가중치는 공개하는 모델은 많지 않다.

이처럼 LLM은 방대한 양의 데이터를 학습해야 하므로 실시간 업데이트가 불가하다.

gpt-4o 모델 설명

https://platform.openai.com/docs/models/gpt-4o

위는 gpt-4o에 대한 설명인데, 제일 우측 'TRAINING DATA'를 보면 날짜가 쓰여 있다. 이는 이날까지 학습한 데이터를 뜻하는데, gpt-4o도 2023년 10월까지의 데이터이기 때문에 올해 업데이트된 내용은 모른다.

이미 방대한 양의 데이터를 학습했기 때문에 대부분의 질문에는 잘 대답할 것이다. 하지만 만약 특정 도메인에 대한 학습이 충분하지 않을 경우 엉뚱한 답변을 할 때가 있고, 아예 거짓된 정보(Hallucination, 환각)를 반환할 때도 있다. 이 때문에 RAG라는 개념이 등장했다.

RAG(Retrieval-Augmented Generation, 검색 증강 생성)

RAG는 정보 검색(Retrieval)과 언어 생성(Generation)을 결합한 방식으로, 사용자가 질문하면 모델이 먼저 외부 데이터베이스에서 문서를 검색한 후, 검색한 정보를 바탕으로 응답을 생성한다. 즉, RAG는 기존에 갖고 있는 데이터와 외부에서 검색한 정보를 통합하여 답변을 생성한다. 덕분에 모델이 최신 정보에 대한 답변을 줄 수도 있고, 할루시네이션도 줄어들었다.


그렇다면 RAG에서 말하는 외부 데이터는 무엇일까?

만약 회사에서 LLM을 도입한다고 가정해 보자. 대부분의 회사가 정보 유출 때문에 공개된 LLM보다는, 내부에 직접 LLM을 구축하여 회사 내부 데이터(ex. 사내 규율, 조직도, 프로젝트 정책 등)을 학습시킬 것이다. 그리고 이 데이터는 Wiki, Notion 혹은 Word, PDF 등 여러 가지 형태의 데이터가 있을 텐데, 바로 이 데이터를 외부 데이터(DB화된 데이터)라 한다.

하지만 LLM이 바로 Wiki나 Notion을 검색할 수는 없다. 이 데이터들을 LLM이 검색하기 쉽도록 DB화해야 하는데, 이때 효율적인 정보 검색을 위해 보통 벡터 데이터베이스(Vector Database)를 구축한다.

벡터 데이터베이스는 일종의 '디지털 책장'처럼 생각할 수 있다. 각 책(데이터)을 벡터로 변환하고, 이 벡터들은 비슷한 주제의 책들이 같은 선반에 배치되듯 유사한 의미의 데이터들이 가까이 위치하게 된다. 이런 구조 덕분에 찾고자 하는 데이터와 유사한 주제의 데이터를 빠르게 찾아낼 수 있게 된다.

사내에 있는 데이터를 벡터(임베딩)로 변환한다. 벡터는 텍스트의 의미를 숫자 배열로 표현한 것으로, 의미적으로 유사한 데이터는 벡터 공간에서 가깝게 위치하게 된다. '프로젝트 A의 2023 매출 보고서'와 '프로젝트 B의 2023 매출 보고서'는 벡터 공간에서 가까운 위치에 있다. 그리고 이런 벡터 표현을 저장한 DB를 구축한다. 이 DB는 벡터 간의 유사도를 빠르게 계산하고, 가장 관련성 높은 데이터를 검색할 수 있도록 설계되어 있다. 이를 통해 전체 텍스트를 매번 읽고 분석하는 대신, 유사도 검색을 통해 필요한 데이터만 효율적으로 찾아낼 수 있다.

사용자가 질문하면 그 질문 역시 벡터로 변환된다. 그리고 이렇게 변환된 질문 벡터를 벡터 DB에서 유사한 벡터를 검색하는 데 사용된다. 그리고 벡터 DB에서 유사도가 가장 높은 벡터(데이터)를 빠르게 찾아낸다. 주로 가장 관련성 높은 상위 몇 개의 문서로 제한하기 때문에 전체 데이터를 검색하지 않는다. 이렇게 검색된 상위 문서들은 RAG의 '검색 결과'로 사용된다. 그 이후, 언어 모델은 검색된 정보를 기반으로 질문에 대한 응답을 생성한다.


우리가 사용해 볼 수 있는 RAG를 적용한 서비스에는 Microsoft Bing Chat, Perplexity AI(실시간으로 외부 정보와 문서를 검색해 답변 생성), Humata AI(논문, 기술 문서 등 문서 내 정보를 검색하여 요약 및 해석) 등이 있다.

하지만 RAG도 한계는 존재한다. 만약 실시간으로 업데이트가 필요할 경우 매번 임베딩 및 벡터 DB를 구축해야 하므로 RAG를 사용하기에는 적합하지 않다. 따라서 RAG는 상대적으로 업데이트가 자주 안 일어나는 정적인 문서들에 대해서만 가능하다.

그 외...

텍스트로만 대화할 수 있었던 ChatGPT에 어느 순간 이미지도 업로드 가능하게 되었다. 이와 같이 두 개 이상의 데이터 유형을 동시에 처리할 수 있는 것을 멀티 모달 AI(Multi Modal AI)라 부른다. 최근에 주목된 멀티 모달 AI로는 문서를 기반으로 두 명이 팟캐스트 형식으로 대화하는 음성을 만들어주는 NotebookLM이 있다.


그리고 최근에 AI Agent라는 단어가 보이고 있는데, 이는 AI가 목표를 달성하기 위해 자율적으로 학습하고 의사 결정을 해서 행동한다. 하지만 AI가 모든 것을 다 해주는 것은 아니고, 사람이 컴퓨터로 할 수 있는 업무를 GPT가 할 수 있다.

가장 먼저 떠올릴 수 있는 건 영화 Her에서 나오는 가상 비서인 것 같다. 머지않은 미래에 Siri나 빅스비에 '여름휴가 계획 세워줘'라고 말하면 유저의 여행 패턴을 기반으로 가장 적합한 계획을 짜오고 결제까지 완료해 주지 않을까 한다. (만약 이런 날이 온다면 검색 플랫폼을 포함해서 지금 우리가 너무 당연하게 사용하고 있는 다른 서비스들도 없어지지 않을까?)

지금 가장 유명한 AI Agent 프레임워크로는 LangChain, LangGraph, CrewAI, Microsoft AutoGen이 있다.

마치며

프론트엔드 기술이 격변하는 시기에 관련 기술들의 업데이트를 좇아가고 이해하는데 벅차다는 생각이 들었다. 조금 익숙해질 찰나에 새로운 기술이 나오고, 이를 학습하고 다시 반복되었다. 그런데 그때보다 현재의 LLM 쪽이 더 변화무쌍한 것 같다. 또한 이들이 얼마나 발전해서 나왔느냐에 따라 과장되게는 스타트업의 BM을 쉽게 따라 할 수 있게 해주는 것 같다.

실제로 몇 년은 더 거릴 줄 알았던 기술이 최근에 Aria와 같은 오픈 소스로 공개 되었다. 동영상의 편집점을 찾고 요약하는 것은 꽤 까다로운 기술 중 하나라고 생각했는데, 오픈소스로 풀리다니 놀랍기도 하면서 무섭기도 하고 한 편으로는 다음에는 어떤 대단한 모델이 나올지 기대도 된다.