동작한다 ≠ 충분하다 — RAG를 더 똑똑한 방식으로 갈아엎고 '청킹 무용론'까지 따져본 하루

📚 「AI 헬스케어 파이널 프로젝트」 연재 8편입니다. (7편: AI가 의료 질문을 거절했는데, 알고 보니 그게 정답이었다)

표지

📝 한줄 요약

지난 편에서 의료 RAG 챗봇의 첫 PoC가 돌아갔습니다. 그런데 “돌아간다”에 만족하지 않고, 더 정확한 답을 위해 RAG의 뼈대를 더 똑똑한 방식(LangGraph)으로 갈아엎었습니다. 여기서 RAG는 “자료를 찾아 근거로 답하는 방식”입니다. 그 과정에서 “요즘 AI는 똑똑해져서 청킹(긴 문서를 잘게 나눠 저장하는 것)이 필요 없다”는 유행하는 주장도 직접 따져봤고, 챗봇이 실제로 살아갈 집(인프라)까지 세웠습니다.

바쁘시면 이것만 읽어도 돼요:

  • 결단: PoC가 이미 돌아갔지만, 더 정확한 방식이 보여서 뼈대를 갈아엎음 (“동작한다 ≠ 충분하다”)
  • 신중함: 큰 변경이라 작은 PoC로 먼저 검증하고 본 작업에 들어감
  • 판단력: “청킹은 이제 필요 없다”는 유행 주장을 그대로 믿지 않고, 우리 맥락에서 직접 따져 “여전히 필요”라고 결론
  • 준비: 챗봇이 살 집(벡터 DB·관찰 도구)을 Docker로 미리 세움
  • 핵심 교훈: 통설·유행을 맹신하지 말고 “우리 경우엔 어떤가?”를 AI와 따져보라

🎯 이런 분들께 도움돼요

  • “일단 되니까 그냥 두자” vs “더 나은 방식으로 다시” 사이에서 고민하는 분
  • AI·기술 분야의 유행하는 주장을 어디까지 믿어야 할지 헷갈리는 분
  • 큰 변경을 안전하게 적용하는 방법이 궁금한 분
  • RAG·AI 챗봇을 실제 서비스로 준비하는 분

😫 문제 상황 (Before)

지난 편에서 RAG 챗봇의 첫 PoC(개념 증명)가 잘 돌아갔습니다. 보통은 여기서 “오, 되네!” 하고 다음으로 넘어가죠. 그런데 자료를 더 보다 보니, 검색 결과를 스스로 점검하고 교정하는 더 똑똑한 방식이 있다는 걸 알게 됐습니다.

고민이 됐습니다. “이미 돌아가는데, 굳이 갈아엎어야 하나?” 동시에 커뮤니티에선 “요즘 AI는 한 번에 읽는 양(컨텍스트)이 커져서 자료를 잘게 쪼개는 청킹은 이제 필요 없다”는 주장도 보였습니다. 이게 맞다면 제 작업 방향이 통째로 바뀔 수도 있었어요.

그래서 이번 편의 숙제는 두 가지였습니다. 더 나은 방식으로 갈아엎을 것인가, 그리고 ‘청킹 무용론’이 우리에게도 맞는가를 따지는 일이었죠.

🛠️ 사용한 도구

  • 도구: Claude Code
  • 모델: Claude Opus
  • 특이사항: 더 나은 구조를 함께 설계하는 아키텍트이자, 유행하는 주장을 우리 맥락에서 검증해주는 토론 상대로 활용

🔧 작업 과정

1) “동작한다”에 안주하지 않고 — 더 똑똑한 방식으로 갈아엎기

PoC가 돌아갔지만, 더 정확한 방식이 보였습니다. 그래서 결단했어요.

변경사항이 있어. RAG의 시스템을 LangChain에서 LangGraph로 변경하려고 해
(자료 참고) 이 이미지의 구조와 비교를 해줘

쉽게 말하면, 챗봇이 “검색한 자료가 질문에 맞나?”를 스스로 점검하고 부족하면 다시 찾는 구조(자기교정 방식)로 뼈대를 바꾼 겁니다. 답이 더 정확해지니까요. “돌아간다”와 “충분하다”는 다르다 — 이게 이날의 첫 번째 교훈이었습니다.

💡 이미 돌아가는 결과물을 더 나은 방식으로 다시 짤지는, “지금이 바꾸기 가장 싼 시점인가”로 판단하면 됩니다. 초반일수록 전환 비용이 쌉니다.


2) 큰 변경은 작게 먼저 — PoC로 검증

뼈대를 통째로 바꾸는 건 위험한 일이죠. 그래서 바로 본 작업에 들어가지 않았습니다.

새로 변경된 사항을 PoC로 테스트 해봐야하지 않을까?

작은 PoC를 먼저 만들어 새 방식이 실제로 흐름이 통하는지 확인한 뒤에 진행했습니다.

💡 큰 변경일수록 작게 먼저 시도하세요. 핵심 흐름만 빠르게 확인하면, 통째로 바꾼 뒤에 터지는 사고를 막을 수 있습니다.


3) ‘청킹 무용론’을 그대로 믿지 않고 직접 따지기

이제 두 번째 숙제. 유행하는 주장을 그대로 받아들이지 않고 물었습니다.

질문: 요즘은 AI의 컨텍스트 윈도우가 커졌기 때문에
청크(자료 쪼개기) 과정이 의미 없다는 의견이 있는데 어떻게 생각해?

AI와 따져보니, 우리 경우엔 여전히 청킹이 필요했습니다. 자료를 통째로 넣으면 ① 비용이 커지고 ② 엉뚱한 부분까지 섞여 답이 흐려지고 ③ “정확히 어느 근거에서 나온 답인지” 대기 어려웠거든요(의료에선 치명적입니다). 그래서 오히려 “작게 찾아서, 큰 맥락으로 답하는” 더 정교한 방식(Parent-Child)을 다음 단계에 미리 반영했습니다.

💡 유행하는 주장도 “우리 경우엔 어떤가?”를 따져봐야 합니다. “남들이 그렇다더라”는 의사결정의 근거가 아닙니다.


4) 챗봇이 살 집을 세우다 — 인프라 준비

코드를 본격적으로 짜기 전에, 챗봇이 실제로 돌아갈 환경을 먼저 준비했습니다.

RAG Phase 2 인프라부터 진행해줘

AI가 벡터 DB(자료를 의미로 검색하는 저장소)와 관찰 도구(챗봇이 일을 잘하는지 지켜보는 장치)를 Docker로 묶어 세팅했습니다. “집을 먼저 짓고 가구를 들이는” 순서로, 나중에 코드를 붙이기 쉽게요.

💡 코드를 짜기 전에 그 코드가 돌아갈 환경부터 세우면, 뒤따르는 작업이 한결 매끄럽습니다.


5) 다음 단계 재료 모으기 — 인덱싱 자료 탐색

마지막으로, 챗봇이 근거로 삼을 신뢰할 의료 자료를 찾기 시작했습니다.

인덱싱 전에 인덱싱에 사용할 자료를 찾아봐줘
우리는 생활습관 개선이 목표인데 더 자료가 없을까?

신장학회·질병관리청 가이드라인을 탐색하며, “생활습관 개선”이라는 우리 목적에 맞는 자료를 골라뒀습니다. 이 자료 수집은 다음 편에서 본격적으로 이어집니다.

💡 AI에게 자료를 찾게 할 때는 “우리 목적”을 분명히 박아주세요. 목적을 주면 양으로 채우는 대신 맞는 것만 골라옵니다.


✅ 결과 (After)

Before vs After

항목BeforeAfter
RAG 뼈대PoC 수준 (동작은 함)더 정확한 자기교정 방식(LangGraph)으로 전환
청킹 방향”무용론, 따라야 하나?” 흔들림우리 맥락에서 “필요” 확정 + 더 정교한 전략 채택
인프라없음벡터 DB·관찰 도구 Docker 세팅
변경 안전성큰 변경을 PoC로 먼저 검증

결과물

  • LangGraph 기반 RAG 뼈대(자기교정) + 검증 PoC
  • Phase 2 인프라(벡터 DB·관찰 도구 Docker)
  • RAG 학습카드·로드맵 갱신 + 인덱싱 자료 후보

💬 이 과정에서 배운 AI 활용 팁

효과적이었던 것

  1. “동작한다”에 안주하지 마라 — 더 나은 방식이 보이면, AI와 함께 갈아엎는 비용을 따져보세요. 초반일수록 바꾸기 쉽습니다.
  2. 유행·통설은 “우리 경우엔?”으로 검증하라 — “요즘은 X가 필요 없대”를 그대로 믿지 말고, 내 맥락에서 AI와 따져보세요.
  3. 큰 변경은 작은 PoC로 먼저 — 통째로 바꾸기 전, 작게 시도해 흐름을 확인하면 사고를 막습니다.
  4. 코드 전에 환경(집)부터 — 도구가 돌아갈 인프라를 먼저 세우면, 나중 작업이 매끄럽습니다.

이렇게 하면 안 돼요

  1. “되니까 그냥 두자”로 안주하지 마세요 — 특히 정확도가 중요한 분야(의료 등)에선, 동작이 곧 충분함은 아닙니다.
  2. 남의 주장을 근거 없이 따르지 마세요 — “다들 그렇다더라”는 의사결정 근거가 될 수 없습니다.

🌍 다른 업무에 적용한다면?

  • 도구·방식 선택: “이 도구가 대세래”를 따르기 전에, “우리 규모·목적엔 정말 맞나?”를 AI와 따져보세요.
  • 개선 vs 안주: 이미 돌아가는 프로세스라도 더 나은 방식이 보이면 ‘바꾸는 비용 vs 얻는 이득’을 계산해보세요. 초기일수록 전환이 쌉니다.

🚀 앞으로의 계획

뼈대도 더 똑똑해졌고, 챗봇이 살 집도 세웠습니다. 이제 필요한 건 챗봇이 근거로 삼을 좋은 자료입니다.

다음 편(9편)에서는 챗봇이 공부할 의료 자료를 본격적으로 모읍니다. 신장학회 진료지침부터 시작해 금연 자료 41건을 직접 긁어옵니다. 그리고 마침 새 AI 모델(Opus 4.8)이 나와서, 그동안의 프로젝트 전체를 ultracode로 다시 점검하며 숨은 문제를 손보는 이야기도 함께 풀어볼게요. 좋은 답은 좋은 자료에서 나오니까요.

📋 재사용 가능한 프롬프트

프롬프트 1: ‘더 나은 방식으로 전환할지’ 판단

지금 [현재 방식]으로 [작업]이 돌아가고 있어. 그런데 [대안 방식]이 더 낫다는 이야기를 들었어. 두 방식의 장단점을 우리 상황([규모·목적·제약]) 기준으로 비교하고, 지금 갈아엎는 게 맞는지(전환 비용 vs 이득)를 판단해줘. 바꾼다면 안전한 전환 순서도 알려줘.

프롬프트 2: 유행하는 주장을 내 맥락에서 검증

“[유행하는 주장, 예: 요즘은 청킹이 필요 없다]“는 의견을 봤어. 이게 우리 경우([우리 상황·목적])에도 맞는지 따져줘. 일반론이 아니라, 우리 맥락에서 이 주장이 성립하는 조건과 성립하지 않는 조건을 구분해서 알려줘.

프롬프트 3: 큰 변경 전 작은 검증(PoC)

[큰 변경]을 적용하기 전에, 작은 PoC로 먼저 검증하고 싶어. 핵심 흐름만 최소한으로 만들어서, 이 변경이 실제로 통하는지 빠르게 확인할 수 있는 PoC를 만들어줘.


📌 「AI 헬스케어 파이널 프로젝트」 연재 8편입니다. 다음 막에서 또 이어집니다.

← 블로그 전체 목록