Post

[모두의 연구소 데이터 사이언티스트 4기] 랭체인톤 회고

[모두의 연구소 데이터 사이언티스트 4기] 랭체인톤 회고

👩‍💻 GitHub

이번 LangChainThon에서는 RAG를 활용한 MVP 프로젝트를 진행하였다. 전에 데이터 전처리 -> 모델링 -> 평가 지표를 확인하여 발표했던 DataThon과 달리, 우리가 문제를 정의하고 그 문제를 개선할 수 있는 RAG 시스템 기반의 LLM 응용 시스템을 만드는 것이였다. 사실 LLM을 공부하면서 제대로 이해하지 못했기에 이번 프로젝트를 잘 할 수 있을까… 라는 생각이 들었는데, 좋은 팀원들을 만나 잘 마무리 한 것 같다.


1. 프로젝트 소개

“세봇이” - 소상공인과 개인사업자를 위한 부가가치세 Q&A 자동응답 챗봇

우리의 프로젝트는 부가가치세 Q&A 챗봇을 만드는 것이였다. 시작은 간단했다. 편의 개선과 공익적 가치를 동시에 담을 수 있는 주제가 뭘까 고민하다가, 실제로 겪었던 문제들을 해결하자는 방향으로 아이디어가 구체화됐다. 그래서 내가 아르바이트 했던 경험을 떠올려보았다. 나는 올해 1월, 세무서에서 민원인의 부가가치세 신고를 도와주는 신고 도우미 아르바이트를 했었다. 실전에서 수많은 민원인을 직접 만나며 겪은 가장 큰 인상은,

“세금은 내야 하는데, 뭘 어떻게 해야 할지 물어볼 곳이 없다.”

는 말이었다.
실제로 자영업자나 프리랜서 분들은 본인의 세금 상황을 정확히 모르고, 세무사 비용은 부담되며, 그렇다고 인터넷에서 찾기에는 정보가 너무 흩어져 있었다.
우리는 이 문제를 분석해 다음과 같은 세 가지 핵심 인사이트를 도출했다:

  1. 내 상황에 딱 맞는 세법을 적용하기 어렵고,
  2. 관련 정보를 찾으려 해도 너무 복잡하며,
  3. ChatGPT 같은 AI에게 물어봐도 시시각각 변하는 세법 때문에 ‘환각현상’을 알려줄 위험이 크다.

결국 해결책은 명확했다.
👉 가장 믿을 수 있는 원천인 국세청 문서를 바탕으로, 사용자 맞춤형 Q&A 시스템을 만들자.
그래서 우리는 LangChain을 활용한 RAG(Retrieval-Augmented Generation) 구조로, 세무 지식을 상황에 맞게 안내하는 챗봇을 개발하게 되었다.


2. 프로젝트 과정 및 결과

2-1. 아이디어 도출 및 문제 정의

세무서 신고 도우미 아르바이트 경험을 바탕으로 프로젝트 주제를 제안했다. 실제 현장에서 느꼈던 문제들을 팀에 공유하고, 그 문제를 기술적으로 어떻게 풀 수 있을지에 대해 다양한 의견을 제시했다. 단순히 “챗봇을 만들자”는 아이디어가 아니라,

“누가? 왜? 언제? 어떤 맥락에서 이런 챗봇이 필요한가?”

라는 사용자 중심의 질문을 바탕으로 문제 정의를 구체화해나갔다. 이런 관점을 공유하는 과정에서 팀원들과의 소통도 활발히 이루어졌고, 그 결과 실제 사용자에게 도움이 되는 서비스 방향을 함께 정립할 수 있었다.

2-2. 데이터셋

250706_5.png

이번 프로젝트에서 가장 중요한 기반은 정확하고 신뢰할 수 있는 문서 기반 데이터셋이었다. 단순히 국세청 매뉴얼만 활용하는 데서 그치지 않고, 실제 사용자의 상황을 더 반영하기 위해 내가 직접 겪었던 민원 사례와 세무사 커뮤니티에서 공유된 사례들을 함께 반영해보기로 했다. 이 과정에서 처음으로 비정형 데이터 수집과 통합 작업을 경험하게 되었고, 그동안 늘 주어진 데이터셋만 사용했던 나에게 꽤 도전적인 과정이었다.

💡 수집 기준 및 전략

  • 공신력 있는 자료 위주로 수집: 국세청 유권해석, 신뢰도 높은 세무사 커뮤니티, 실제 사례 등
  • 다양한 상황을 포괄하는 예시 확보: 자영업자, 프리랜서, 임대소득자 등 다양한 유형의 질문과 사례를 포함
  • 수동 수집의 한계 체감: 자동화가 어려운 만큼, 콘텐츠의 진위 여부를 직접 판단해야 했고 시간도 많이 소요되었다.

📄 가공 방식 및 형식 통일
수집한 자료는 정제 과정을 거쳐 질문 - 답변 - 분류 - 출처 형식으로 일관되게 가공했다. 그 결과, 총 약 50개의 Q&A 샘플을 만들어 PDF로 통합했으며, 기존 국세청 공식 문서와 함께 벡터화하여 챗봇의 응답 정확도를 높이는 데 활용했다.

이 과정을 통해 단순히 기술 구현뿐 아니라, 데이터의 질이 얼마나 중요한지, 실제 서비스에 어떤 영향을 미치는지를 체감할 수 있었다.

2-3. 기술 스택

구성기술
LLMOpenAI GPT-4o-mini
AILangChain Agents
임베딩/검색OpenAI text-embedding-3-small / ChromaDB
문서 처리PyPDFLoader + RecursiveCharacterTextSplitter
에이전트 도구문서검색 RetrieverTool / 계산기 Calculator Tool / 웹검색 Tavily Search
UIStreamlit
문서출처국세청 공식 가이드북, FAQ등

기술 스택 및 개발은 든든한 팀원분이 맡아주셔서 원활하게 진행됐다. 덕분에 기술 관련 고민은 많이 하지 않았다.(!!)

2-4. 결과

250706_1.png

최종적으로 우리는 Streamlit을 활용해 챗봇을 실제로 배포했다. 단순히 프로토타입을 만드는 데 그치지 않고, 사용자가 질문을 입력하면 실제로 답변이 잘 돌아오는지, 다양한 상황에서 의도한 정보를 정확히 안내하는지를 꼼꼼히 테스트했다.

250706_2.png

또한 챗봇 좌측 사이드바에는 전자세금계산서 파일(XLSX, CSV) 업로드 기능을 추가하여, 사용자가 자신의 세금 관련 데이터를 함께 넣으면 챗봇이 그 데이터를 기반으로 한 맞춤형 응답도 제공할 수 있도록 구현했다. 파일을 올리면 데이터프레임 형태로 미리보기가 제공되고, 사용자는 그 내용을 참고하며 챗봇에게 질문을 이어갈 수 있다. 이 기능은 단순한 정보 제공에서 한 단계 더 나아가, 사용자 개인 상황에 맞는 상호작용형 챗봇을 지향하고자 했던 팀의 목표를 잘 반영한 결과물이다.


3. 인사이트

3-1. 시간 관리

이번 프로젝트에서 인상 깊었던 점은 시간 관리가 생각보다 잘 이루어졌다는 점이었다. 초기에 가장 큰 쟁점이 될 것 같았던 챗봇 구현과 Streamlit 배포가 예상보다 순조롭게 진행되면서, 이후 다른 작업들에서도 큰 막힘 없이 자연스럽게 이어졌다. 그 덕분에 프로젝트 후반에는 여유를 갖고 전체 흐름을 검토하고, 다듬는 시간까지 가질 수 있었다.

사실 이전 프로젝트에서는 일정이 부족해서 마지막 날 밤까지 회의를 이어가야 했던 경험이 있었기에, 이번에는 초반부터

“해야 할 일은 먼저, 확실하게 끝내자”는 마음가짐으로 임했다.

그 결과 정해진 시간 안에 필요한 작업을 모두 마칠 수 있었고, 일정 마감에 쫓기지 않아 더 완성도 높은 결과물을 만들 수 있었다. 첫날에 완성형이 아니더라도, 우리가 구현하고자 하는 핵심 기능을 담은 챗봇의 최소 형태를 실제로 돌려본 것이 큰 전환점이었다.

“우리가 구상한 게 실제로 작동할 수 있다”는 확신을 초반에 얻은 덕분에, 이후에는 기능을 하나씩 디벨롭하면서 점점 완성도를 높여갈 수 있었다. 이 경험을 통해 프로젝트 초반에 최소한의 작동 뼈대를 빠르게 확보해두는 것이 얼마나 중요한지를 절감했다. 계획만 길게 끌기보다는, 일단 구조를 눈에 보이게 구현해보고 거기서 디벨롭하는 흐름이 훨씬 효율적이었다.

3-2. 배운 점 & 성장 포인트

250706_3.png 이번 프로젝트에서 특히 뿌듯했던 점은 PPT 구성 능력이 한층 성장했다는 것이다. 이전 데이터톤에서는 시각화 자료 없이 글로 된 정보만 잔뜩 넣는 실수를 했고, 무엇보다 발표자의 흐름이나 청중의 입장은 고려하지 못했었다. 이번에는 그런 경험을 살려

“발표자는 무엇을 말하고 싶을까? 청중은 어떤 흐름에서 설득될까?”

를 먼저 생각하며 핵심만 담고 시각적으로 간결한 슬라이드를 만들었다. 그 결과 팀원분들이 칭찬해주셨고, 이런 피드백이 이번 프로젝트에서 가장 기억에 남는 순간 중 하나였다.

또 하나 크게 느낀 건, 내 아이디어를 조리 있게 설명하고 팀원들을 설득하는 능력의 중요성이다. 그냥 ‘좋은 생각’이 아니라,

“왜 이 아이디어가 필요하고, 어떤 문제를 해결하며, 어떻게 구현 가능한지”

를 논리적으로 말할 수 있었을 때 팀원들의 공감과 동의를 끌어낼 수 있었고, 그게 곧 팀 전체의 결과물 퀄리티에도 긍정적인 영향을 준다는 걸 체감했다.

단순한 주장보다 맥락과 근거를 함께 제시하면서 소통과 설득의 밸런스를 잡는 것이 협업의 핵심이라는 걸 이번에 제대로 배운 것 같다.

발표날, 다른 팀들의 결과물을 보면서도 인상 깊은 점이 많았다. 특히 주제 선정에서 드러나는 참신함과 유쾌한 기획력이 눈에 띄었다. 우리 팀은 실제 문제 해결에 집중하는 접근이었다면, 다른 팀들은 재미 요소를 가미해 청중의 몰입도를 높이는 방식을 취한 경우가 많았다.
그 모습들을 보면서 실용성과 진정성도 중요하지만, 재치와 창의성도 함께 고민하면 더 매력적인 프로젝트가 될 수 있겠구나 하는 생각이 들었다. 다음 프로젝트에서는 기획의 무게와 유연함을 동시에 챙기는 시도를 해보고 싶다.

3-3. 아쉬웠던 점 & 다음 도전

  • 데이터 수집의 어려움

가장 어려웠던 부분 중 하나는 데이터 수집이었다. 관련 자료 수집 방법에 대한 경험이 부족하다 보니, 정확도와 신뢰도를 확보하기 위해 직접 페이지에 들어가 자료를 수동으로 수집할 수밖에 없었다. 결국 하나하나 복사하고, 출처를 남기고, 정제하는 작업을 반복하다 보니 시간이 오래 걸려서 시간 제약상 데이터의 크기를 줄였다.

이 과정을 통해 데이터 수집도 분명 기술적 전략이 필요한 영역이라는 걸 체감했고, 다음에는 웹 크롤링, API 활용 등 더 효율적인 수단을 미리 익혀둬야겠다는 생각이 들었다.

  • 다음에 적용하고 싶은 방향 - 사용자 중심 설계

이번 프로젝트를 하면서 특히 “사용자의 입장에서 본다” 는 관점에 많은 신경을 썼다. 단순히 기술을 구현하는 것이 아니라, 이 기능이 정말 사용자의 문제를 해결할 수 있는가? 라는 질문을 계속 던지며 작업했다. 덕분에 챗봇의 흐름, 응답 방식, 입력 방식 등을 설계할 때 항상 한 발 물러서서 실제 사용자라면 어떻게 느낄지를 상상하며 고민하게 되었다. 이런 사고방식은 이번 경험을 통해 더 확고해졌고, 향후에도 꼭 사용자 기반의 사고를 바탕으로 기획과 설계를 해보고 싶다.


4. 프로젝트를 끝내며

3일이라는 짧은 프로젝트 기간이었지만, 아이디어 기획부터 데이터 구축, 모델 응답 조정, UI 제작, 그리고 최종 배포까지 전체 흐름을 처음부터 끝까지 경험해본 점이 이번 프로젝트의 가장 큰 성과였다. 단순히 기술을 시연하는 수준을 넘어서, 실제로 사용할 수 있는 챗봇 서비스를 구현해냈다는 사실이 스스로도 꽤 뿌듯했다.

이번이 내 인생에서 제대로 해본 두 번째 프로젝트였는데, 이전보다 훨씬 더 자연스럽고 안정적으로 흘러갔다는 점에서 내가 조금씩 성장하고 있다는 확신도 들었다. 물론 여전히 부족한 점이 많고, 지금의 나는 그저 시작점에 서 있는 단계일 뿐이라는 것도 잘 알고 있다. 그래서 더 열심히! 더 꾸준히! 나아가야겠다는 생각이 들었다. 이런 경험들을 차곡차곡 쌓아서, 대외활동뿐만 아니라 실무에서도 자신 있게 역량을 보여줄 수 있는 날이 빨리 오기를 바라고 있는 중이다!

This post is licensed under CC BY 4.0 by the author.