딥러닝/딥러닝: 자연어

RAG와 Langchain 기초

qordnswnd123 2025. 6. 3. 20:37

1. RAG(Retrieval Augmented Generation)란 무엇인가

1.1 RAG의 정의와 등장 배경

기존 LLM은 사전에 학습한 데이터 기반으로만 답변을 하기 때 문에 한정된 지식 안에서 답변할 수밖에 없습니다. 새로운 정보에 대 해서는 제대로 반응하지 못하는 것이 큰 한계점입니다.
RAG는 마치 오픈북 시험에서 학생이 시험 문제와 관련된 교과서의 챕터나 참고 자료를 찾아보면서 답안을 작성하는 것처럼, AI가 질문 을 받았을 때 관련된 자료들을 찾아보고 이를 참고하여 더 정확한 답변을 만드는 방식입니다.
즉, RAG는 LLM에게 '외부 지식을 참고할 수 있는 능력'을 부여해줍니다. 우리가 모르는 것이 있을 때 검색을 하거나 참고 자료를 찾 아보는 것처럼, AI도 질문에 답할 때 관련된 문서나 데이터를 찾아볼 수 있게 된 것입니다.
이런 RAG의 등장으로 AI는 더 정확하고 신뢰할 수 있는 답변을 제공 할 수 있게 되었고, 현재까지도 많은 기업과 연구자들의 관심을 받고 있습니다.

 

※ RAG의 필요성

  • 최신 정보 반영의 한계: LLM은 학습된 시점 이후의 새로운 정보를 알지 못합니다.
  • 제한된 지식: 특정 회사의 내부 문서나 전문 분야의 자료 등은 학습 되어 있지 않습니다.
  • 환각현상: LLM이 가끔 실제로 없는 정보를 만들어내는 현상이 있습니다.

RAG의 등장 배경을 살펴보았으니, 이제 기존 LLM과 RAG 시스템을 비교하면서 RAG의 작동 원리를 알아보겠습니다.

 

1.2 RAG의 작동 원리

 

우리가 일상적으로 챗GPT와 같은 AI 시스템을 사용할 때는, 질문이 별도의 과정 없이 바로 LLM (대규모 언어 모델)에게 전달되어 답변을 받게 됩니다. 위 그림의 첫 번째 다이어그램에서 볼 수 있듯이, 기존 LLM은 사용자의 질문이 곧바로 LLM으로 전달되는 단순한 구조입니다.
여기서 RAG 시스템은 한 단계 더 나아갑니다. 우리가 중요한 의사결정을 할 때 관련 자료들을 찾아보고 참고하듯이, RAG는 질문에 답하 기 전에 먼저 관련 정보들을 찾아보고 활용합니다.
위 그림의 두 번째 다이어그램은 RAG의 작동 방식을 보여주는데, 일 반 LLM이 단순히 질문을 받고 답하는 것과 달리 다음과 같은 과정을 거칩니다.


1) 질문하고 검색하기
사용자의 질문을 받으면, RAG는 먼저 이 질문과 관련된 정보들을 찾 아보기 시작합니다. 마치 우리가 무언가를 물어봤을 때 "잠깐만요. 제가 한번 찾아볼게요"라고 하는것처럼 말입니다.


2) 질문과 관련된 참고 자료 찾기
RAG는 문서가 저장된 데이터베이스(책장 모양)에서 관련 정보들을 찾아내고, 이 중에서 가장 도움이 될 만한 내용들을 골라 정리합니 다. 마치 도서관에서 필요한 책들을 찾아 중요한 페이지들을 북마크 해두는 것과 비슷합니다.


3)참고 자료 활용하여 답변하기
이렇게 찾은 자료들은 LLM에게 전달되어, LLM의 기본 지식과 결합 됩니다. 덕분에 LLM은 자신이 원래 알고 있던 것에 더해, 방금 찾아 본 정보들까지 활용해서 더 정확하고 신뢰할 수 있는 답변을 만들어 낼 수 있게 됩니다.


이런 방식으로 RAG는 마치 "책도 찾아보고, 자료도 확인하고, 거기 에 제가 아는 것도 보태서 설명해드릴게요" 라고 하는 친절한 전문가처럼 작동합니다.

 

2. RAG의 특징 및 활용 사례

이전 스텝에서는 RAG의 개념과 작동 방식에 대해 알아보았습니다.
그렇다면 이번엔 RAG가 가진 장점과 한계점은 무엇이고, 실제로는 어떤 곳에서 사용되고 있는지 자세히 살펴보도록 합니다.


2.1 RAG의 장점

RAG는 LLM에 더 많은 가능성을 열어주는 특별한 장점들이 있습니다.


1) 최신 정보 반영
외부 데이터베이스를 활용해 최신 정보를 포함하는 응답을 제공할 수 있습니다. 예를 들어, 기존 AI가 2022년까지의 뉴스만 알고 있다면, RAG는 오늘 아침에 올라온 뉴스도 바로 찾아볼 수 있습니다. 또한 회사의 새로운 정책이 발표되었을 때도 시스템에 추가만 하면 곧바로 이를 반영한 답변이 가능합니다.


2) 신뢰성 향상
AI한테 어떤 정보의 근거를 물어봤을 때, "정확한 출처는 알 수 없습니다."라는 답변보다는 "~논문에서 그렇게 주장하였습니다." 라는 답변이 더 신뢰가 갑니다. RAG는 모든 답변에 문서의 출처를 알려주기 때문에 답변의 신뢰성을 향상시킵니다. 이로 인해 사용자들이 왜 이런 답변이 나왔는지 이해하기가 쉬워지고, 의사결정 과정에서도 더 안전하게 사용할 수 있습니다.


3) 비용 효율성
RAG는 새로운 정보가 생길 때마다 AI를 처음부터 다시 학습시킬 필요 없이, 그냥 새로운 정보만 추가하면 최신 정보를 반영할 수 있습니다. 마치 새 책이 나오면 책장에 꽂아두기만 하면 되는 것과 같습니다.
기존의 언어 모델은 방대한 데이터를 사전에 학습시키기 위해 많은 비용과 시간이 필요하지만, RAG는 필요할 때 외부에서 정보를 가져오는 방식을 사용하기 때문에 비용을 절감할 수 있습니다.


4) 커스터마이징 용이성
우리 집 냉장고에는 우리 가족이 좋아하는 음식을 채워 넣는 것처럼, RAG에도 필요한 정보들을 원하는 대로 넣을 수 있습니다. 예를 들어, 의료 분야의 병원에서는 병원 내 연구 자료나 환자 데이터베이스를 연결해 보다 맞춤화된 의료 정보를 제공할 수 있습니다.

 

2.2 RAG의 실제 활용 사례

RAG는 최근 곳곳에서 다양하게 활용되고 있습니다.

 

1) 기업 내부 지식베이스 검색
새로 입사한 직원이 "휴가는 어떻게 신청하나요?"라고 물으면, RAG가 회사 규정을 찾아서 친절하게 알려줘요. 수많은 회사 문서, 정책, 절차 중에서 꼭 필요한 정보만 골라서 빠르게 알려주어 직원들이 시간을 아끼고 업무에 집중할 수 있습니다.


2) 고객 서비스 챗봇
고객이 특정 제품의 문제를 해결하려고 할 때, 챗봇은 관련 정보를 빠르게 찾아 제공하므로 고객 만족도를 높일 수 있습니다. 예를 들어, 새로 산 전자레인지 타이머 설정이 안 돼요"라고 문의하면, RAG가 제품 설명서에서 관련 내용을 찾아 친절히 알려줄 수 있습니다. 고객도 빠른 답변을 받을 수 있고, 상담원도 더 정확한 안내를 할 수 있죠.


3) 법률 문서 분석
법률 분야에서는 RAG가 판례나 법률 문서를 효율적으로 검색하고 분석하는 데 도움을 줍니다. 변호사나 법률 전문가가 특정 사건과 유사한 판례를 찾거나, 관련 법 조항을 확인해야 할 때, RAG는 필요한 정보를 정확히 찾아줄 수 있어요. 예를 들어, 변호사가 "이런 사건의 판례가 있 었나요?"라고 물으면, RAG가 수많은 판례 중에서 꼭 필요한 사례들을 찾아 빠르게 일 처리를 할 수 있도록 도와줍니다.


4) 의료 정보 시스템
의료 분야에서 RAG는 최신 의학 논문과 임상 데이터를 검색하여 의료진의 의사결정을 지원해요. 환자 진단이나 치료법을 결정할 때, 의료진은 RAG를 통해 최신 연구 결과를 기반으로 가장 적합한 정보를 빠르게 확인할 수 있습니다. 예를 들어, 의사 선생님이 환자를 진찰하면서 "이런 증상의 최신 치료법은 뭐가 있을까?"라고 찾아보면, RAG가 최신 의학 논문들을 검토해서 도움이 될 만한 정보를 알려줘요.


2.3 RAG의 한계점

세상의 모든 도구가 그렇듯, 아무리 좋은 기술도 완벽할 순 없어요. RAG도 뛰어난 장점이 있는 만큼 부족한 부분도 있습니다.

 

1) 계산 복잡성 증가
도서관에서 책을 찾고 읽는 시간이 필요한 것처럼, RAG도 관련 정보를 찾고 확인하는 시간이 더 필요합니다. 기존 언어 모델은 검색 과정 없이 바로 답변하는 반면에, RAG는 검색 시간이 추가로 들기 때문에 빠른 답변이 필요할 때는 좀 아쉬울 수 있어요.

 

2) 데이터 품질 의존성
아무리 RAG를 활용한다고 해도 정확하고 좋은 정보가 있어야 제대로 된 답변을 할 수 있어요. 따라서 관련 정보가 없거나 부정확하다면 잘못 된 응답을 생성할 수 있으므로 엄격한 데이터 품질 관리를 요합니다.

 

3) 데이터 보안 문제
우리의 개인정보를 잘 지키는 것처럼, RAG에 들어가는 중요한 정보들도 잘 보호해야 해요. 외부 데이터베이스 사용으로 데이터가 노출될 수 있기 때문에 개인정보나 기업 기밀 정보가 유출되지 않도록 엄격한 보안 조치가 필요합니다.

 

3. RAG vs Fine-tuning vs Prompt

3.1 프롬프트 엔지니어링(Prompt Engineering)

가장 간단한 방법은 질문하는 방식을 개선하는 것입니다. ChatGPT를 사용 한 적이 있으신 분은 대부분 경험하셨을 텐데요, 똑같은 주제라도 어떻게 질문하느냐에 따라 AI의 답변 품질이 크게 달라질 수 있습니다.
프롬프트 엔지니어링은 AI에게 더 똑똑하게 질문하는 방법이라고 생각하시면 됩니다. 도서관 사서에게 책을 찾을 때, 단순히 "경제와 관련된 책 있나 요?" 라고 물어보는 것보다 "2020년 이후에 출간된 경제 입문서 중에서 초보 자가 이해하기 쉬운 책을 추천해 주세요"라고 구체적으로 물어보는 것과 비 해요.
기존 모델의 능력을 최대한 끌어내는 방식이라 추가 비용이 거의 들지 않고, 바로 적용할 수 있다는 장점이 있습니다. 하지만 모델이 원래 가진 지식의 한계를 넘어설 수는 없어요.

 

장점

  • 개발이 빠르고 즉시 적용 가능합니다.
  • 추가 인프라나 데이터베이스가 필요 없어 비용이 적게 듭니다.
  • 상황에 따라 유연하게 프롬프트를 수정할 수 있습니다.
  • 언어 모델에 대한 이해도가 낮아도 쉽게 시도할 수 있습니다.

단점

  • Al 모델의 기본 지식에만 의존해야 해서 최신 정보나 특정 분야의 깊은 지식을 다루기 힘듭니다.
  • 복잡한 작업일수록 프롬프트가 길어지고 관리가 어려워집니다.
  • 프롬프트 길이가 길어지면 매번 입력하는 토큰 수가 많아지고, 이는 매번 LLM이 처리해야 해야 할 연산량이 많다는 것을 의미합니다.

3.2 파인 튜닝(Fine-tuning)

파인 튜닝은 AI 모델을 추가로 교육시키는 방법입니다. 마치 일하는 능력은 좋지만 회사에 대해 잘 모르는 신입 직원에게 회사의 특정 업무를 집중적으로 교육시키는 것과 비슷해요. 예를 들어, 사전에 학습된 AI를 수천 개의 고객 상담기록으로 추가 학습시키면, 그 회사만의 특별한 상담 스타일과 전문성을 가진 AI가 됩니다.
학습이 끝나면 빠르고 일관된 답변을 할 수 있지만, 많은 시간과 비용이 들고, 새로운 정보를 반영하려면 다시 학습을 시켜야 합니다.

 

장점

  • 특정 업무나 분야에 대해 전문적인 응답이 가능합니다.
  • 일관된 톤과 스타일로 답변할 수 있습니다.
  • 회사만의 독특한 업무 방식이나 규칙을 내재화할 수 있습니다.

단점

  • 언어 모델 아키텍처에 대한 깊은 이해가 필요합니다.
  • 학습에 많은 양의 고품질 데이터가 필요합니다.
  • 모델 학습에 높은 비용과 긴 시간이 소요됩니다.
  • 새로운 정보를 반영하려면 모델을 다시 학습해야 합니다.

3.3 세 가지 방법 비교(Prompt Engineering, Fine-tuning, RAG)

 

4. LangChain 프레임워크

4.1 LangChain의 정의와 목적

LangChain은 마치 앱 개발 도구처럼, AI 프로그램을 쉽게 만들 수 있도록 도와주는 특별한 도구예요. 2022년에 Harrison Chase라는 개발자가 만들었고, 지금은 전 세계 많은 개발자 들이 함께 발전시키고 있답니다.
다시 말해, LangChain은 언어 모델을 애플리케이션에 쉽게 통합할 수 있도록 도와주는 오픈 소스 프레임워크입니다.

 

4.2 LangChain의 특징

1) 모듈성
여러분이 레고로 장난감을 만들 때를 생각해 보세요. 작은 바퀴, 창문, 문, 지붕 등 다양한 블 록들을 자유롭게 조립해서 자동차도 만들고 집도 만들 수 있죠?
LangChain도 이와 똑같아요. 대화 기능, 메모리 기능, 검색 기능 같은 다양한 부품들을 마치 레고처럼 조립할 수 있어요. 채팅 프로그램을 만들고 싶다면 대화 기능과 메모리 기능을 연결 하면 되고, 검색 프로그램을 만들고 싶다면 검색 기능과 결과 정리 기능을 이어 붙이면 됩니 다. 이렇게 필요한 기능들을 자유롭게 조합해서 나만의 AI 프로그램을 만들 수 있습니다.

 

2) 확장성
우리 집에 있는 멀티탭을 생각해 보세요. TV도 꽂고, 냉장고도 꽂고, 전자레인지도 꽂아서 사 용할수 있을 거예요.
이런 멀티탭을 이용하는 것처럼 LangChain도 다양한 도구를 연결할 수 있어요. OpenAl, Hugging Face, Google 등의 다양한 LLM API를 지원하며, 데이터베이스, 검색 엔진, 브라우 저와 같은 외부 도구도 쉽게 연결할 수 있어요. 심지어 데이터베이스나 검색 엔진까지도 쉽게 연결할 수 있죠.
이런 다양한 연결 덕분에 단순히 텍스트를 주고받는 것을 넘어서 검색도 하고, 정보도 저장하 고, 계산도 할 수 있는 더 똑똑한 AI 프로그램을 만들 수 있습니다.

 

3) 추상화
스마트폰의 카메라 앱을 써보셨나요? 우리는 그냥 버튼 하나만 눌러서 사진 촬영을 쉽게 할 수 있습니다. 하지만 그 뒤에서는 빛의 양을 계산하고, 이미지를 처리하고, 저장하는 등 정말 복잡한 작업들이 일어나고 있죠.

LangChain도 이런 카메라 앱처럼 복잡한 AI 기능들을 간단하게 만들어줘요. 예를 들어, 대화 기록을 저장하는 간단한 명령어 만으로도 대화 내용을 자동으로 정리하고 보관하는 복잡한 작업을 처리할 수 있습니다. 조금 더 자세하게 이야기 하자면, 자연어 질의 처리, 대화 이력 관리, API 호출 등의 복잡한 작업을 간단한 함수 호출로 사용할 수 있다는 장점이 있어요. 덕분에 AI 개발이 처음인 사람도 어렵지 않게 시작할 수 있고, 경험 많은 개발자들은 더 빠르게 프로그램을 만들 수 있습니다.