최근 AI 분야에서 주목받는 개념인 RAG와 LangChain에 대해 알아보겠습니다. LLM(Large Language Model)의 등장으로, 챗봇이나 텍스트 생성 기반 서비스에 활용되어 업무나 일상생활에서 문제 해결, 정보 검색 등에 용이하게 활용되고 있습니다. 하지만 이러한 LLM에도 한계가 존재하며, 이러한 한계를 극복하기 위해 RAG가 관심 받기 시작하였습니다. 본 글에서는 이러한 LLM의 한계와 RAG가 어떻게 극복하는지에 대해 소개하도록 하겠습니다.
1. LLM
RAG에 대해 알아보기 전에 LLM이 무엇이고, 이것이 갖고 있는 한계는 무엇인지에 대해 알아보겠습니다.
LLM이란, 방대한 양의 데이터를 수집하고 학습하는 인공지능 언어 모델을 말합니다. 우리가 말하는 언어를 이해하고, 학습한 데이터를 바탕으로 텍스트를 생성해냅니다. 말의 문맥을 이해하고, 방대한 양의 데이터 학습으로 이에 맞는 응답을 생성해낼 수 있다는 장점에 따라 LLM은 챗봇이나 번역, 글 작성 등 다양한 분야에 다양한 용도로 활용됩니다.
하지만, 한계도 존재합니다. 없는 정보를 마치 사실 처럼 만들어내거나 틀린 정보를 제공하는 **‘Hallucination 현상’**이 발생합니다. 또한, 수집한 데이터를 바탕으로 학습하여 정보를 제공하기 때문에 가장 최근의 정보를 반영하지 못하기도 합니다.
따라서, 이러한 LLM이 갖는 정확성 문제와 같은 한계를 극복하기 위해 RAG가 주목받게 됩니다.
2. RAG, LangChain
RAG는 Retrieval-Augmented Generation의 약자로, 이름에서 알 수 있듯이, **검색(Retrieval)**을 통해 정보를 얻고 응답을 **생성(Generation)**하는 검색 기반 생성 기술입니다. LLM이 사전에 수집되어 학습된 데이터에 의존하는 것과는 달리, 실시간으로 외부 정보를 검색하여 이를 바탕으로 답을 생성하기 때문에 더 정확하고 최신의 정보를 제공할 수 있다는 장점을 갖고 있습니다.
RAG의 작동 프로세스는 다음과 같습니다.
- 외부에서 문서를 검색하고 데이터 로드
- 로드한 데이터를 작은 단위로 분할
- 청크 데이터를 벡터로 변환
- 벡터 DB에 저장
- 들어온 질문과 유사한 정보를 DB에서 검색 후 응답
RAG는 위 프로세스를 통해 실시간으로 더 정확하고 최신의 정보를 제공합니다.
RAG 구현에 많이 활용되는 것으로 LangChain이 있습니다. LangChain은 LLM을 활용하여 더 많은 작업을 할 수 있도록 하는 오픈소스 프레임워크를 말합니다. LangChain에서 chain은 여러 개의 처리 단계를 연결하여 일련의 작업을 자동화하는 개념을 말합니다.
가장 기본 LLM chain은 질문하면 LLM을 통해 응답하는 단순한 구조이며, SequentialChain은 기본 chain을 순차적으로 실행하는 것을 말합니다.
이외에도, RetrievalQAChain은 RAG를 구현할 때 사용되는 chain으로, 질문이 들어오면 벡터 DB에서 검색하는 과정을 거쳐, 검색된 정보를 바탕으로 LLM이 응답을 생성하는 과정을 말합니다. 이렇게 LangChain을 통해 구현하는 RAG는 외부로의 데이터 유출에 민감한 기업들이 많이 활용하고 있습니다. 기업들은 자사 데이터를 벡터 DB에 저장한 후, RAG를 활용하여 데이터의 유출 없이 기업 맞춤형의 더 적합한 정보를 제공받을 수 있게 됩니다.
또한, LangChain은 다양한 LLM을 지원하고 다양한 데이터 소스와 연결 가능하다는 장점에 따라 복잡한 LLM 기반의 작업도 용이하게 합니다.
지금까지 LLM부터 RAG, 그리고 LangChain에 대해 알아봤습니다. LLM의 한계를 극복하여 이것이 가진 잠재력을 더욱 향상시켜주는 RAG와 LangChain을 프로젝트에 활용한다면 더 향상된 AI 서비스를 만들 수 있을 것이라고 생각합니다.