안녕하세요?
저는 유튜브에서 코딩 강의 채널을 운영하고 있습니다 😊
랭체인 + RAG를 주제로 초보자 분들을 위한 새로운 강의를 만들었는데, 관심 있으신 분들에게 간략하게나마 개념 설명을 드리고자 글을 쓰게 되었습니다.

챗GPT 는 이제 모르는 분들이 아무도 없을거라 생각했는데, 몇 개월 전에 만든 챗GPT 기본 사용법 무료 강의 영상의 조회수가 최근에 100만을 돌파하였고 현재도 많은 분들이 꾸준히 영상을 시청하고 계신 것을 보면서 조금 의아했습니다.

그런데 제 채널의 일반 코딩 교육 영상들과 챗GPT 영상의 다른점을 확인해보니, 바로 시청 연령대였는데요. 대부분의 영상은 2~30대 분들의 시청률이 높은 반면 챗GPT 영상은 4~50대 이상 분들의 시청률이 높았습니다. 60대 이상 분들도 AI에 관심을 많이 보이고 계시구요. 아마도 코딩 교육 영상은 취업을 준비하는 분들 또는 개발에 관심이 있는 젊은 분들에게 수요가 많다면, 챗GPT 는 생산성 및 실용적인 활용에 관심이 많은 분들에게 수요가 많은 것 같아요.

비유하자면 코딩과 챗GPT 는 어쩌면 '요리를 직접 배워서 하는 것'과 '에어 프라이어 몇 분 돌리면 짠 하고 만들어지는 요리' 정도의 차이가 아닐까 합니다. 직접 요리를 하려면 재료 손질부터 모든 것을 다 해야 할텐데 저같은 똥손은 다 태워먹거나 간이 안 맞거나 속이 안익거나 질겨지거나 에휴.. 하지만 에어 프라이어는 그냥 시키는대로 돌리기만 하면 완성되지요.
(직접 요리)

(에어 프라이어)

그러다 문득, 어쩌면 이번 랭체인 주제도 필요로 하는 분들이 있지 않을까? 하는 생각이 들었어요. 그 이름을 들어보기는 했지만 그게 뭔지 어떻게 활용하는지 왜 쓰는지를 잘 모르면 크게 관심을 두지 않고 그냥 지나치기 마련이니까요!
그래서 그리 길지 않은 내용으로 여러분들에게 쉽게 한 번 설명을 드려보려고 합니다. 글을 보시고 나면 "어? 괜찮은데? 한 번 써볼까?" 라는 생각이 드실 수도 있어요 ㅎㅎ

(그렇다고 해주세요. 젭알)
먼저 랭체인은 거대 언어 모델(LLM)을 활용한 애플리케이션을 더 쉽고 효율적으로 개발할 수 있도록 다양한 기능과 도구를 제공하는 프레임워크입니다. 그리고 RAG(Retrieval Augmented Generation)는 외부 데이터를 활용하여 LLM의 답변을 보강하는 기술인데요. 랭체인은 RAG 시스템을 구축하는 데 필요한 다양한 도구와 기능을 제공해서 LLM이 가지는 한계를 극복하고 더욱 정확하고 신뢰성 있는 답변을 생성하도록 돕습니다.

그러니까 쉽게 말해서 챗GPT 가 제대로 답변하지 못하거나 거짓으로 꾸며서 하는 얘기를, RAG 를 이용하면 정확한 답변이 가능해지는 것입니다.

이런 경우를 생각해볼까요?
제가 10명의 팀원들을 데리고 어떤 프로젝트를 진행하고 있습니다.
그리고 저희 팀에는 자체적으로 만든 그라운드 룰이 있는데요.
예를 들어,
1. 회의는 반드시 30분 안에 끝낸다
2. 파일 이름에는 날짜를 포함한다
3. 출퇴근 시 서로 인사하지 않는다.
와 같은 규칙이 있습니다.
그런데 시간이 지나면서 팀원 중 몇 명은 이 룰을 까먹기도 하고, 새로운 팀원이 들어오면서 룰을 잘 모르기도 합니다.
이때 누군가 질문을 해요.
"파일 이름 규칙이 어떻게 되나요?"
위 질문을 챗GPT 에게 직접 한 번 해보겠습니다.

뭔가 그럴듯한 답변을 해주고 있네요. 일반적인 파일 이름 규칙으로 작성일자 관련 언급이 있기는 하지만, "파일 이름에는 날짜를 포함한다" 라는 내용이 따로 보이지는 않습니다. 챗GPT 는 자기가 알고 있는 학습된 내용을 바탕으로 훌륭한 답변을 하기는 했지만 우리 팀의 그라운드 룰에 대해서는 사실은 알고 있는 바가 없는 상태죠.
그런데 이렇게 물어보면 어떨까요?

이번에는 그라운드 룰의 내용을 제공했더니, 이 내용을 참고해서 장황하지 않게 딱 필요한 내용만 정확하게 답변을 해주는 것을 보실 수 있습니다.

바로 이겁니다.
챗GPT 가 알지 못하는 회사 내 데이터나 개인 소장 자료 등 별도의 문서에서 내용을 참고하여 답변을 해주는 것이 RAG 의 핵심입니다. 그런데 사실 이런 문서는 크기가 매우 매우 방대합니다. 당장 책 한 권을 예로 든다면 짧게는 수십 페이지에서 길게는 수백 페이지 이상이 될 수 있을텐데요.
이 책에 있는 내용 모두를 챗GPT 에게 주면서 "이 중에 내가 궁금한 내용을 답변해줘" 라고 한다면 정확한 답변을 하지 못할 수도 있고 어쩌면 메시지가 너무 커서 대화 자체가 전송되지 못할 수도 있어요.

RAG 는 시험에 비유한다면 오픈북 시험과 비슷합니다. 시험장에서 두꺼운 책을 펼쳐놓고 참고하면서 시험을 치는 것이죠. 그러면 시험지에 나온 문제를 읽고 그 문제에서 키워드를 뽑아서 책의 목차나 색인 등을 통해서 관련 내용이 포함된 페이지를 몇 개 찾습니다. 그리고 그 페이지 내에서 필요한 내용을 참고하여 답안을 작성하는 거에요.

책이 무척 두껍다고 해도 답변을 위해 필요한 부분은 사실 몇 페이지 안될 수도 있습니다. 책을 처음부터 끝까지 다 읽어야 하는 경우는 아마 거의 없을거에요.
이렇듯, 마치 문제를 풀기 위해서 문제와 관련된 페이지를 목차나 색인 등을 통해서 빠르게 찾고, 찾은 페이지 내에서 필요한 부분만 참고하여 최종적으로 응답을 생성하는 것, 이게 바로 RAG 의 핵심입니다.
RAG 는 크게 2가지 작업으로 나뉩니다.
1. Indexing
먼저 첫 번째 단계는 우리가 필요로 하는 문서를 적절한 가공을 거쳐서 저장하는 것입니다. 몇 가지 세부 과정이 있기는 한데, 간단히 설명드리면 우선 두꺼운 책의 내용을 불러와서(Load) 지정한 길이 또는 규칙에 따라 여러 조각(Chunk 라고 부릅니다)으로 나눕(Split)니다. 이렇게 나눈 데이터를 숫자 형태로 변환(Embed)한 다음 벡터DB 라고 불리는 저장소에 저장(Store)을 하게 돼요. 이렇게 하면 이제 사용자가 문서와 관련된 질문을 했을 때 어떤 부분의 내용을 참고하여 답변할지는 준비가 된 거에요. 아, 여기서 문서는 PDF, TXT, CSV 등 다양한 형태의 파일일 수도 있고 특정 웹 페이지 내의 내용이 될 수도 있답니다!

* 한줄 요약: 긴 문서를 잘게 쪼개서 숫자 형태로 바꾼 뒤 저장
2. Retrieval-Generation
준비가 되었으니 이제 질문을 받아서 답변을 생성합니다. 이 단계 또한 여러 세부 과정이 있는데요. 우선 사용자의 질문과 가장 유사한 내용을 포함하고 있는 부분을 찾습니다. 앞의 Indexing 과정에서 여러 조각(Chunk)으로 나눈 데이터를 숫자 형태로 변환한 다음 벡터DB 에 저장한다고 했는데, 이 저장소에서 몇몇 조각들을 찾아오는 거에요.
오픈북 시험에서 문제 해결을 위해 색인에서 특정 키워드를 포함하는 페이지를 찾는 과정이라고 보시면 됩니다. 이렇게 찾아진 조각들을 포함하여 챗GPT 와 같은 LLM 에게 "이 내용들을 토대로 사용자가 질문한 내용에 적절한 응답을 생성해줘" 라고 요청을 하게 됩니다. 그러면 챗GPT 는 질문과 함께 전달된 내용 중에서 사용자의 질문에 해당하는 부분을 찾아서 답변을 만들게 됩니다.

* 한줄 요약: 질문과 유사한 내용들을 찾은 뒤 이를 토대로 답변 생성

정말 간단하게 설명하긴 했지만 사실 이 과정에서 좋은 답변을 위한 많은 고민과 노력이 필요한 것이 사실입니다. 하지만 기본적인 내용만 배운 뒤 여러분이 갖고 계신 문서로 챗봇을 만들어보시면 아마 100% 만족하지는 못하더라도 매우 훌륭한 결과물을 만들 수 있을 거에요.
요즘에는 어떤 회사의 고객센터에 전화했을 때 상담원과 직접 연결되기보다는 챗봇과 대화를 유도하는 경우가 많은 것 같습니다. 상담원이 한 명만 있고 고객 10명이 전화를 한다고 했을 때 상담원이 직접 응대를 한다면 10번째에 전화를 한 사람은 아마 한참동안 전화기를 붙들고 기다려야 할 거에요. 하지만 챗봇과의 대화로 충분히 해결 가능한 문제라고 하면 동시에 10명이 모두 기다리지 않고 일처리를 할 수 있을 겁니다. 챗봇에서 제공되지 않는 기능이라거나 사람의 도움이 필요한 경우에만 상담원이 응대를 하면 되겠죠.
RAG 기술은 우리 생활에서 굉장히 다양하게 활용될 수 있습니다.
가령 회사 직원이 "형이 결혼하는데 회사에서 제공되는 지원은 어떤 게 있나요?" 라고 물으면 인사팀에서는 관련 규정을 찾아 보거나 알고 있는 내용을 기반으로 답변을 해야할텐데 RAG 를 활용하면 사내 규정 문서 또는 매뉴얼을 AI 가 읽고 답변을 해줄 수 있을 것이구요.
병원에서 환자나 보호자가 "수술 후 식사는 언제부터 가능한가요?", "위내시경 검사 예정인데 주의사항이 어떤 게 있나요?" 와 같은 질문을 했을 때 병원의 진료 가이드, 안내문, 건강정보 자료 등을 AI가 참고해 맞춤형 답변을 제공할 수도 있을 겁니다.
또는 구매하려는 전자제품에 문의가 있을 때, "신제품은 이전 모델과 화면 크기나 무게, 배터리에서 어떤 차이가 있나요?" 라거나 "에어컨의 건조 기능은 어떻게 켜는 건가요?", "건조기를 다 돌렸는데 세탁물이 제대로 마르지 않았어요" 와 같은 작동법 및 고장 관련 문의도 가능하겠네요.

이렇게 되면 각 담당자의 반복 안내 관련 업무 부담이 확 줄어들고 고객들 또한 쾌적하게 궁금한 내용을 부담 없이 물어보고 빠르게 답변을 받아볼 수 있을 거에요.
저는 이번 강의의 프로젝트로 사용자가 등록한 PDF 파일의 내용을 토대로 질문에 응답하는 챗봇을 만들어 보았습니다. 몇 줄 안되는 코드로 간단히 웹 애플리케이션을 만들 수 있는 gradio 를 활용해봤어요.
나름 그럴듯하죠?
문서만 있다면 여러분도 이러한 Q&A 챗봇을 바로 만들어볼 수 있습니다. 재미로 공부해보셔도 좋고 실용적으로 활용해보셔도 좋습니다. 챗GPT 와 같은 언어 모델을 이미 많이들 잘 사용하고 계시겠지만 한 단계 넘어서서 내가 가진 데이터를 토대로 질문에 응답해주는 RAG 시스템을 구축한다면 어떨까요?
보다 자세한 내용을 더 공부해보고 싶으신 분들을 위해서 무료 강의 수강 쿠폰을 나눔합니다. 수량은 여유롭게 준비하였으니 아마 부족하지는 않을 거에요 ㅎㅎ
- 링크 : https://bit.ly/nadoRAG 쿠폰 소진 완료 (즉시 연결되지 않고 몇 초 기다리셔야 할 수도 있어요)
※ 주의 : 반드시 가격 0원 '무료' 인 것을 확인하신 뒤 수강신청을 해주세요 :)
강의는 총 6시간 분량으로 되어 있어서 크게 부담이 없으실 겁니다. 중요한 내용은 물론 이론으로 설명드리지만 대부분 직접 실습을 통해 체험해볼 수 있도록 구성했어요. 언어는 파이썬으로 진행되며 챗GPT 사용 경험이 있으신 분들에게 권해 드립니다.
"그리 길지 않은 내용으로 설명드리겠습니다" 라고 했는데... 많이 길어진 것 같네요 ㅎㅎ (반성합니다)
지금까지 긴 글 읽어주셔서 감사합니다 ^^
감사합니다.
---------- 4/15. 20:07 쿠폰 소진이 완료되었습니다 ----------
어느 정도 수요가 있을거라고 생각은 했지만 이렇게 많은 분들이 신청을 해주실 줄은 몰랐네요 ㄷㄷ 여유롭게 준비한다고 했는데 쿠폰 소진이 모두 마감되었습니다. 신청해주신 분들, 댓글 남겨주신 분들 모두에게 감사드리며 아쉽게 신청을 못하신 분들께는 양해를 부탁드립니다 (__)
일전에 챗지피티 강의 너무 잘 들었습니다.
강의 듣고 흥미가 더 생겨서 2월에 AI-POT(한국생산성본부 프롬프트엔지니어 자격증)까지 취득했습니다.
물론 강의가 많은 도움이 되었습니다.
이번에 또 강의 알려주셔서 염치불구하고 방금 무료 수강신청하였습니다.
감사합니다.
유투브의 파이썬 강좌 공부하려고 나도코딩님 책도 사 놓았는데, 이거 먼저하고 천천히 강의 잘 들어보겠습니다.
감사합니다.
유튜브도 너무 잘보고 있습니다.
이번기회에 좋은 배움 얻어가겠습니다~
열심히 보겠습니다
감사합니다. ^^
(나도 코딩 채널 맞으시죠?? ㅎㅎ)
좋은 기회 감사합니다! 유튜브도 구독하고 왔습니다 ㅎ
잘보겠습니다.!!!
나눔은 언제나 추천입니다!!!
저 정말 도움 많이 받고 있어요.