📝 한줄 요약
첨단 바이오의약품 규제 업무 중 문서 검색이 답답해서, Claude Code와 함께 19개 PDF를 AI가 검색하고 답변해주는 RAG 시스템을 하루 만에 만들었습니다.
🎯 이런 분들께 도움돼요
업무용 PDF 문서가 많은데, 필요한 내용 찾기가 번거로운 분
AI로 뭔가 만들어보고 싶은데 코딩을 모르는 비개발자
Claude Code가 실제로 어떻게 활용되는지 궁금한 분
😫 문제 상황 (Before)
유전자치료제, 세포치료제 같은 첨단 바이오의약품 개발 업무를 하고 있습니다. 이 분야는 규제가 복잡하고 자주 바뀝니다.
궁금한 점이 생기면 식약처에 문의하지만, 답변이 늦거나 명확하지 않은 경우가 많았습니다. 외부 CRO에 자문을 구하면 비용이 만만치 않고요.
식약처에서는 아직 의약품 규제 및 허가에 대한 ai 챗봇같은 것은 도입 검토만 하고 있습니다. 이게 마냥 식약처 탓만 하기 힘든게 만약 ai 챗봇 같은 것을 도입하면 아무리 경고문구를 넣어도 사용자가 ai 챗봇 답변을 식약처 공식 답변으로 생각하거나 이용하기 때문이기도 합니다.
결국 "내가 가진 규제 문서들을 AI가 검색해서 바로 답변해주면 좋겠다"는 생각에 RAG 시스템을 만들게 됐습니다.
🛠️ 사용한 도구
도구: Claude Code (CLI)
모델: Claude Sonnet 4
특이사항: Python, Streamlit 등은 Claude Code가 알아서 설치하고 코드 작성
🔧 작업 과정
1단계: 기본 RAG 시스템 만들기
처음에는 단순히 "PDF를 검색할 수 있는 시스템 만들어줘"라고 요청했습니다.
PDF 문서를 벡터 데이터베이스로 만들어서 자연어로 검색할 수 있게 해줘
Claude Code가 PyMuPDF로 PDF 텍스트를 추출하고, ChromaDB에 벡터로 저장하는 기본 시스템을 만들어줬습니다. 터미널에서 질문하면 관련 문서 내용을 찾아주는 방식이었죠.
2단계: 웹 대시보드 추가
터미널로 검색하는 건 불편해서 웹 화면을 요청했습니다.
지금 대시보드를 만들어줄 수 있나?
Streamlit으로 웹 UI를 만들어줬습니다. 질문 입력, PDF 업로드, 검색 결과 시각화까지 한 번에 완성됐습니다.
3단계: 표와 이미지 추출 기능
규제 문서에는 표가 많은데, 처음엔 표 내용이 제대로 추출되지 않았습니다.
PDF 파일에서 표와 이미지를 추출할 수 있어?
pdfplumber를 사용해서 표를 마크다운 형식으로 변환하도록 개선해줬습니다. 덕분에 "OO 시험의 평가 기준이 뭐야?"라고 질문하면 표 내용까지 검색됩니다.
4단계: 자동 DB 구축 스크립트
PDF가 19개나 되니까 하나씩 업로드하는 게 너무 오래 걸렸습니다.
특정 폴더에 PDF를 넣으면 자동으로 DB에 추가해줄 수 있어?
build_db.py 스크립트를 만들어줬습니다. 이제 pdfs/ 폴더에 파일을 넣고 스크립트만 실행하면 한 번에 처리됩니다.
5단계: LLM 답변 생성 연동 (하이라이트)
여기까지는 "관 련 문서를 찾아주는" 수준이었습니다. 검색 결과를 보고 직접 해석해야 했죠.
검색 결과를 바탕으로 Claude가 직접 답변을 생성해줄 수 있어?
llm_client.py를 만들어서 검색 결과를 Claude API에 자동으로 전달하고, 답변을 생성하도록 연동해줬습니다.
이게 RAG의 핵심입니다. AI가 아무 말이나 하는 게 아니라, 내 문서를 근거로 답변합니다. Hallucination이 줄어들고 정확도가 높아집니다.
6단계: 프롬프트 개선 (인상적인 순간)
처음엔 문서에 정확한 답이 없으면 "답변드릴 수 없습니다"라고 나왔습니다.
프롬프트 를 수정해서 문서에 직접적인 답이 없어도 전문 지식으로 추론해서 답변하고, 마지막에 "전문가 상담이 필요하다"는 문구를 넣어줘
한 번의 요청에 Claude Code가 프롬프트를 완전히 재설계해줬습니다:
규제과학 전문가 역할 부여
문서 기반 + 추론 기반 답변 구조
"일반적으로", "통상적으로" 같은 표현 사용
마지막에 면책 문구 자동 추가
"추론해서 답변해줘"라는 한 마디에 이렇게 완성된 걸 보고 놀랐습니다.
막혔던 부분: ChromaDB 배치 오류
19개 PDF를 처리하니 79,820개 청크가 생성됐는데, 한 번에 DB에 넣으려다 오류가 났습니다.
ValueError: Batch size of 6405 is greater than max batch size of 5461
오류 메시지를 그대로 보여줬더니, Claude Code가 바로 5,000개씩 나눠서 처리하도록 수정해줬습니다. 오류가 나면 그대로 보여주는 게 중요합니다.
✅ 결과 (After)
Before vs After
항목
Before
After
문서 검색
PDF 파일 열어서 Ctrl+F
자연어로 질문하면 AI가 찾아줌
답변 방식
직접 읽고 해석
AI가 문서 기반으로 답변 생성
정확도
AI 환각 위험
RAG로 문서 근거 기반 답변
소요 시간
문서마다 수십 분
질문당 수 초
결과물
19개 PDF, 79,820개 청크 벡터 데이터베이스
웹 대시보드 (Streamlit)
CLI 버전 (터미널에서도 사용 가능)
GitHub 저장소: https://github.com/khyungpark/pdf-rag-system
💬 이 과정에서 배운 AI 활용 팁
효과적이었던 것
하나씩 문제 해결하기 - "전부 다 만들어줘"보다 "대시보드 만들어줘" → "표 추출 추가해줘" 순서로 점진적으로 요청
오류는 그대로 보여주기 - 에러 메시지를 복사해서 붙여넣으면 Claude Code가 알아서 원인 파악하고 수정
구체적으로 요청하기 - "프롬프트 수정해줘"보다 "추론해서 답변하고, 마지막에 면책 문구 넣어줘"처럼 구체적으로
이렇게 하면 안 돼요
한 번에 다 하려고 하기 - Claude Code는 만능이 아닙니다. 프롬프트 하나로 모든 게 해결되지 않아요
오류 무시하기 - 오류 메시지가 해결의 열쇠입니다. 숨기지 말고 보여주세요
🌍 다른 업무에 적용한다면?
이 방식은 PDF 문서가 많은 모든 업무에 적용할 수 있습니다:
법무팀: 계약서, 법률 문서 검색
인사팀: 사내 규정, 매뉴얼 검색
연구팀: 논문, 기술 문서 검색
고객지원: FAQ, 제품 매뉴얼 기반 답변
핵심은 "내 문서를 AI가 검색해서 답변한다"는 점입니다.
🚀 앞으로의 계획
문서 추가 - ICH 가이드라인, FDA 문서 등 해외 규제 문서 추가
DB 세분화 - 답변 노이즈를 줄이고 API 소모량을 최소화 전략으로 DB 세분화
대화 히스토리 - 이전 질문/답변을 기억해서 후속 질문에 활용
규제 대응 통합 웹앱 - 임상 신청 문서 체크리스트, 연습용 규제문서 작성기, 분야별 챗봇까지 확장
궁극적으로는 신약 연구자와 개발자를 위한 규제 대응 통합 플랫폼을 만드는 게 목표입니다.
📋 재사용 가능한 프롬프트
프롬프트 1: RAG 시스템 기본 구축
PDF 문서를 벡터 데이터베이스로 만들어서 자연어로 검색할 수 있게 해줘. ChromaDB와 Sentence-Transformers를 사용해줘.
프롬프트 2: 웹 대시보드 추가
Streamlit으로 검색 결과를 보여주는 웹 대시보드를 만들어줘. 질문 입력, 검색 결과 표시, PDF 업로드 기능을 넣어줘.
프롬프트 3: LLM 답변 생성 연동
검색 결과를 Claude API에 자동으로 전달해서 답변을 생성하도록 연동해줘. [본인 분야] 전문가 역할을 부여하고, 문서 기반 답변을 우선하되 전문 지식으로 추론도 하도록 해줘.
작성: Claude Code와 함께 소요 시간: 하루 (실제 작업 시간 기준) GitHub: https://github.com/khyungpark/pdf-rag-system