Medinote
흩어져 있는 의료 기록을 한곳에 모으고, 복약 정보를 정리·확인할 수 있도록 돕는 서비스입니다.

소개
Medinote는 흩어져 있는 처방전과 진료 기록을 구조화된 데이터로 정리하고, 복약 이력을 체계적으로 관리할 수 있도록 설계한 의료 정보 관리 서비스입니다. 단일 RAG 구조의 한계를 개선하기 위해 Supervisor 기반 멀티 에이전트 아키텍처를 도입해 질병·약·비의료 질문을 분리 처리하며, 안전한 의료 정보 제공을 위한 가드레일을 함께 설계했습니다.
핵심 기능
자동 복약 기록
처방전과 약 사진을 찍으면 OCR이 핵심 정보를 추출하여 자동으로 복약 리스트를 생성합니다.
상호작용 위험 경고
병용 금기나 주의 사항을 데이터베이스 기반으로 분석해 사용자에게 즉각적인 주의 메시지를 전달합니다.
AI 건강 상담 챗봇
사용자의 과거 복약 이력과 진료 기록을 바탕으로 맞춤형 건강 질문에 답변합니다.
데이터 시각화
복잡한 의료 데이터를 로드맵 형태로 요약하여 사용자가 자신의 건강 흐름을 이해하도록 돕습니다.
아키텍처

* OCR·LLM·STT 처리는 Redis Queue 기반의 비동기 파이프라인으로 구성해, 요청이 몰리는 상황에서도 메인 API 응답을 안정적으로 유지하도록 설계했습니다.
문제점 & 해결방법
비정형 의료 데이터의 체계적인 정규화
문제 — 약물·질병 데이터 출처별 구조와 표현 방식 상이 → 서비스 활용 어려움
- AIHub 의사–환자 대화 기반 질병 데이터 → 서비스 구조에 맞춘 재정리 필요
- 약품 데이터 전문 용어·불필요 정보 다수 → 검색·매칭 품질 저하
- 상품명·성분명·주의사항 표현 불일치 → 동일 의미 데이터 중복 인식 문제
해결 — 질병·약품 데이터 분리 전처리 전략 및 약품 중심 정규화 파이프라인 구축
- 약물·성분·주의사항·금기·병용주의 기준 데이터 구조 통일
- 장문 주의사항 의미 단위 분리 및 핵심 정보 재구성
- 질병·성분·위험도 태그 추가 → 챗봇 검색 정확도 개선
근거 기반 의료 정보 제공 가능한 정규화 데이터 구조 확보
단일 RAG 구조의 한계와 멀티 에이전트 아키텍처 전환
문제 — 하나의 RAG 파이프라인으로 모든 질문 처리 → 도메인 혼선 및 확장성 한계
- 질병·약·비의료·이력조회·외부검색 질문이 동일한 검색 전략으로 처리됨
- 약 질문이 질병 정보로 연결되는 등 도메인 혼선 발생
- 프롬프트 수정 시 전체 흐름에 영향 → 유지보수 어려움
- 질문 유형별 다른 처리 전략 적용 불가
해결 — LangGraph 기반 Supervisor + 도메인별 멀티 에이전트 구조 도입
- Supervisor가 질문 의도 분석 후 적절한 에이전트로 라우팅
- DB·History·WebSearch·질병·약·비의료 에이전트 역할 분리
- LangGraph prebuilt agent(create_react_agent) 기반 구조 구현
- 도메인별 독립적 프롬프트·검색 전략 적용 가능 구조 설계
질문 유형별 처리 경로 분리 및 확장 가능한 RAG 아키텍처 확보
안전한 의료 정보 제공을 위한 LLM 가드레일 설계
문제 — 의료 챗봇 답변의 법적·윤리적 위험 관리 필요
- 진단·처방 오인 가능성 존재
- 복용 여부 결정 등 고위험 질문 대응 체계 부재
- 정보 유용성 vs 답변 안전성 균형 필요
해결 — 프롬프트·응답 템플릿 기반 답변 범위 제한 가드레일 설계
- 답변 구조 고정: 주의 고지 → 정보 안내 → 체크포인트 → 전문가 상담 권유
- 위험 의도 감지 시 제한 응답 출력 로직 적용
- 근거 없는 추측성 답변 생성 차단
법적 리스크 최소화 및 안전 중심 의료 챗봇 UX 확보