소개
다들 아시다시피 LLM은 학습 시점에 고정된 지식만 갖고 있고, 할루시네이션이 언제나 큰 문제이죠. 이 문제를 해결하기 위한 기술 중의 하나인 RAG는 질문이 들어올 때마다 외부 데이터베이스에서 의미적으로 가장 관련 있는 정보를 실시간으로 찾아와 LLM의 컨텍스트에 주입하는 방식입니다.
이게 단순한 키워드 검색과 다른 점은, 임베딩을 통해 문맥과 의미를 이해하고 찾아오기 때문에 "2024년 매출"을 물어도 "작년 실적", "연간 수익" 같은 관련 문서까지 알아서 가져온다고 합니다.
특히 기업 입장에서는 파인튜닝처럼 모델을 다시 학습시킬 필요 없이, 기존 LLM에 자사 데이터를 연결만 하면 되니까 비용도 적고 실시간 업데이트도 가능합니다. 거대한 LLM 파운데이션 모델은 빅테크가 개발하고 실제 기업들이 가장 필요로 하는 기술은 rag가 될 수도 있다고 봅니다.
크게 본다면 perplexity도 rag 회사라고 볼 수 있고, 초창기에는 Chat GPT나 claude, gemini도 웹 검색을 지원하지 않다가 웹검색을 지원하는 것도 rag가 그만큼 중요하다는 기술이기도 하고, perplexity의 경우에는 작년 12월에 rag전문 스타트업인 carbon을 인수했다는 것도 비슷한 맥락이 아닐까 싶습니다.
이번에 찾다가 알게된 Meta 출신 연구진이 만든 Contextual AI는 아예 'RAG 2.0'이라고 해서 retriever와 generator를 통합 최적화하는 기술로 작년에 8천만 달러 투자받았고, 이제는 멀티모달 RAG로 문서뿐만 아니라 이미지, 동영상까지 검색해서 답변하는 방향으로 제품이 개발되고 있다는 것도 알게되었습니다.
https://www.aitimes.com/news/articleView.html?idxno=168485
앞으로 모든 기업 AI 시스템의 핵심 인프라가 될 거라서, 지금 rag 잘하는 회사들이 차세대 AI 시장에서 앞서나갈 수 있을 것 같다는 생각도 들고, 우리 스터디원 분들이나 저 처럼 개발 베이스가 아니신 분들이 AI 서비스를 만든다고 하면, 각자 본인의 도메인에서의 전문 지식을 바탕으로 rag서비스를 구축한다면 아주 훌륭한 서비스가 탄생할 수 있다고 믿습니다!
그래서 저는 rag에 발을 한번 들여보고자 아주 간단한 수준에서 실행할 수 있는 로컬에서 실행 가능한 LLM과, Flowise라는 멀티 에이전트 워크플로우 툴을 활용해 직접 실험해봤습니다.
진행 방법
🧰 사용한 도구
msty: 로컬에서 LLM을 실행할 수 있는 애플리케이션
이렇게 모델을 고를 수 있고, llm 상세설정도 할 수 있고 무려 웹검색도 가능합니다. 그리고 관련 문서를 임베딩하여 rag를 구현할 수도 있습니다.
제가 다음 번에 진행할 멀티 에이전트를 구축하기 위한 툴, flowise에 대해서 질문해가면서 셋팅을 하려고 해서 gpt에게 먼저 물어봤습니다.
당연히 다 틀린 말 입니다ㅋㅋ 저런 노드는 없죠. 웹검색을 돌리더라도 이렇게 일반적이지 않은 지식을 물어보면 이런 답변이 나오는건 당연할 수 밖에 없습니다.
하지만 관련 문서를 다 넣고 rag를 해놓은 로컬 llm으로 질문했을 때의 결과입니다. 알리바바에서 만든 큐원이라는 모델을 써봤습니다. 한자 기반이라 한글이 잘 먹힌다 이런 이야기를 어디선가 줏어듣고 그냥 해봤습니다ㅋㅋ
아주 정확한 결과 그대로 나왔습니다. 이걸 바탕으로 flowise도 잘 모르고, 멀티 에이전트도 모르지만 하나씩 물어가면서 셋팅하면 결과가 나올 거 같습니다.
로컬LLM 설정하기
우선 로컬 llm 설정을 하고 여기에 기반 문서를 넣어서 임베딩을 진행해보겠습니다.
먼저 로컬 llm은 msty를 깔아서 모델 골라서 다운 받으면 됩니다. 허깅페이스 올라마에 그냥 바로 연결되어서 내 맘대로 모델을 골라서 써볼 수가 있습니다.
쿠팡에서 물건 고르는거 보다 쉽습니다. 지금 바로 시도!
그리고 flowise에 관련된 문서를 찾아서 다 모델에 때려넣을 생각입니다. 웹에서 관련 문서를 찾아봅니다.
다행히 공식 가이드 문서는 있는데 이게 약 90개의 페이지로 구성이 되어있습니다.
저희가 예전의 구시대의 사람이라면 이걸 하나씩 다 읽어가면서 공부해서 셋팅할 거고, 지피터스라면 이 페이지를 하나씩 캡쳐해서 md파일로 넣어서 문서에 넣었을 지도 모릅니다. 하지만 저희는 에창패이기 때문에 이걸 바이브 코딩으로 크롤러를 직접 만들어서 다 때려넣기로 결정을 합니다.
세가지 버전의 실패 이후 네번째 버전에서는 성공했습니다. 공식 가이드 문서 95개를 획득하였습니다. 이걸 msty의 knowledge stack에 다 집어넣습니다. 그리고 그 정보를 llm이 참조하여 가져오기 좋도록 토큰화, 벡터화 시키는 작업을 임베딩이라고 합니다. 임베딩도 바로 진행을 해줍니다. 임베딩할 때 cpu, gpu를 아주 많이 쓰 기 때문에 컴퓨터가 아주 뜨거워 질 수 있습니다ㅋ
이제 완성된 rag기반 flowise질문 답변 전용 로컬 llm이 완성되었습니다. 여기에 하나씩 질문해가면서 flowise를 설정해갑니다.
Flowise로 멀티 에이전트 설정해보기
Flowise: 노코드로 RAG 구성, 에이전트 연결, 문서 임베딩 등 다양한 기능을 지원
여기서도 모르는 것은 하나씩 물어가면서 어찌어찌 셋팅을 해갑니다. 저는 n8n을 써본 적이 없었는데 이번 기수 처음에 허세임님의 아주 훌륭한 강의를 듣고 대략 파악을 되어서 비슷하게 노드를 연결하는 구조인 flowise를 구성하는데도 크게 무리가 없었습니다.
이런 시나리오로 접근했습니다. 유저가 챗봇으로 질문을 하면 친근하고 일상적인 답변도 잘 대응을 해주는데, flowise에 대한 아주 정확하고 상세한 질문을 한다면 rag 기반 문서를 검색한 뒤에 그걸 바탕으로 답변을 출력하게 하는 아주 간단한 노드로 구성을 해봤습니다.
그럼 첫번째 노드에서는 다음과 같은 설정을 해줍니다.
어려운 말이 잔뜩 나왔고 저도 아직은 이런 단어에 대해 전혀 모르는 상태입니다.
이럴 때는 general한 대답을 아주 잘해주는 좋은 모델들에게 질문을 해봅니다. 모르는 말을 하나씩 ai한테 갈궈가면서 의미를 파악하고 수치를 어떻게 할건지 확인을 합니다.
요약해보면 첫번째 노드에서는 질문이 일상적인 대화인지, 전문적인 질문인지를 구분해주는 노드이기 때문에 창의적 답변이나, 반복 페널티는 전혀 필요가 없고(temperature 낮게, frequency, presence penalty 낮게 설정합니다.) 일관적인 대답을 하도록 셋팅을 해줍니다.
하지만 질문이 일상적인 질문이라면 당연히 대답을 해주는 llm도 성격이 바뀌어야겠죠. 그래서 노드의 위쪽으로 분류되어서 일상적인 질문에 대한 llm의 셋팅은 다음과 같이 해줍니다.
temperature를 높게 해서 창의적인 답변을 하게 해주고, 반복 페널티를 줘서 똑같은 말은 하지 않게 좀 더 대화를 다양한 주제를 넣어서 이야기할 수 있게 설정을 해줍니다.
반대로 아래쪽으로 전문적인 질문이라서 rag문서를 기반으로 답변을 해야하는 질문이라면 retriever 노드에 들어가서 관련 문서를 찾고, 그 문서와 유저의 질문을 쿼리로 같이 넣어서 답변을 하게 됩니다. 아래쪽 노드에 대한 상세 설정은 다음과 같습니다.
제 클로드는 저렇게 추천을 해줬습니다. tempereture를 낮게 맘대로 지어내지말고 꼭 문서대로 답변을 하게끔 하고, rag 문서를 기반으로 전문 질문에 대한 답변을 하는 것이기 때문에 당연히 같은 단어들이 반복이 될 예정이라 반복 페널티는 적게 주는 걸로 셋팅이 되었습니다.
🧪 어떻게 구성했나요?
문서 업로드: Flowise에서 문서 업로드 → 텍스트 분할 + 벡터화
벡터DB 저장: 내부 저장소 또는 외부 DB에 벡터 저장
검색 + 생성 흐름 구성: 유저 질문 → 관련 문서 검색 → LLM으로 답변 생성
결과와 배운 점
RAG 어렵지 않다! 🧩 직접 구성해보니 생각보다 간단하게 구현할 수 있었어요.
비즈니스 기회가 많다 💼 AI 챗봇, 내부 QA 시스템, 문서 요약 등 다양한 서비스에 적용 가능해요.
아직 경쟁이 덜한 블루오션 🌊 이 기술을 잘 다루는 사람이 드물어서, 기회가 많은 느낌이 들었어요.
지금이 사회의 급변기 이자 엄청난 기회가 있다고 생각합니다. 우리 같은 비개발자들이 AI 시대에 할 수 있는 아이템이 아닐까 생각이 듭니다.
좋은 점은 이제 노코드 툴과 RAG 플랫폼이 많이 발전해서, 우리가 직접 개발하지 않아도 전문 지식을 AI 서비스로 만들 수 있다는 거예요.
지금이 정말 시작하기 좋은 시점인 것 같아요. 몇 년 후에 이 기회를 놓친 걸 후회하지 않도록, 한번 진지하게 고민해보면 어떨까요?
🙌 마무리 한마디
다 같이 열심히 해봅시다! 지금 도전하면 늦지 않았어요 💪