프로젝트 소개 • 주요 기능 • 기술 스택 • 주요 화면
Dr.B는 RAG(Retrieval-Augmented Generation) 기술을 활용하여 환자의 증상에 맞는 최적의 전문의를 추천하는 AI 기반 의료 정보 통합 시스템입니다.
"암 정보를 찾을 때 가장 신뢰하는 것은 '실제 환자 사례'(58.4%)"
— 2025년 11월 대한종양내과학회 설문조사
- 정보 과다로 인한 신뢰 판단 어려움 (53.7%)
- 진단 상황 이해 부족 (40.8%)
- 신뢰 가능한 채널 구분 어려움 (38%)
암 환자 및 보호자들은 현재 네이버 카페, 카카오톡 오픈채팅 등을 통해 의료진 정보를 얻고 있지만:
- 개인 경험 중심의 비객관적 정보
- 병원별로 흩어진 비표준화 데이터
- 진료 시간·예약 방법까지 다시 찾아야 하는 과도한 검색 과정
Dr.B는 이러한 문제를 해결하기 위해 개발되었습니다.
- 서울대병원·삼성서울병원·서울성모병원 등 주요 병원의 의료진 프로필 수집
- 전문분야·경력·진료 일정·예약 링크 등 구조화된 DB 구성
- 증상·질병명을 자연어로 입력받아 자동으로 전문 분야 매핑
- 벡터 기반 임베딩 검색(ChromaDB) + 키워드 검색 결합
- 전문 분야 적합도·경력·진료 경험 기반의 추천 사유 생성
- RAG를 통한 출처 기반 응답 생성으로 신뢰성 확보
사용자가 입력한 증상 문장을 분석하여 관련 장기/질병 계통(심장, 폐, 위장, 대장 등)을 파악하고, get_doctor_metadata 도구를 통해 적절한 진료과(소화기내과, 순환기내과 등)를 자동으로 매핑합니다.
retrieve도구를 사용해 Knowledge Base에 저장된 의료진 데이터를 검색- "위암 위암센터 소화기내과", "두통 신경과", "간암 간암센터 간담췌내과" 등 증상에 맞춘 키워드를 조합
- 최대 8건의 검색 결과 중 질문과 관련도가 높은 전문의를 최대 3명까지 선별
- 가능하면 서로 다른 병원에서 고르게 추천
각 전문의에 대해 다음 정보를 구조화된 형식으로 제공:
- 기본 정보: 이름, 병원, 진료과, 직위
- 전문 분야
- 학력 / 경력: 연도 기준 최신 내용 위주
- 진료 정보: 진료 시간, 예약 방법, 병원 홈페이지 URL
- 주요 진료 질환 및 증상
- 추천 이유: 해당 전문의를 선택한 의료적 근거를 간단히 설명
- 웹 브라우저 기반 직관적인 UI (localhost:8501)
- 증상 입력창 + 검색 버튼으로 구성된 심플한 사용자 경험
- 실시간 검색 결과 표시
- 로딩 스피너, 지원 질병 안내, 에러 핸들링, 의료 면책 공지 자동 표시
- 그라데이션 헤더, 카드 레이아웃, 다크모드 대응 등의 모던 디자인
- Vector Embedding을 통한 의미 기반 검색
retrieve도구: Knowledge Base 검색get_doctor_metadata도구: 진료과 매핑
strands.Agent를 이용한 도구 기반 에이전트 설계- LLM:
us.amazon.nova-lite-v1:0 - Hard Negative Sampling 적용으로 검색 정확도 향상
사용자 질문: "위암 전문의 추천해줘"
↓
Agent 시스템 프롬프트: retrieve를 먼저 호출
↓
retrieve(
query = "위암 전문의",
vector_index = "cc-project-vector-index",
bucket = "cc-project-vector-bucket"
)
↓
관련 문서 3~5개 반환
↓
LLM이 검색된 문서를 기반으로 최종 답변 생성
| Category | Technology |
|---|---|
| Cloud Platform | AWS (Bedrock, S3, Lambda) |
| LLM | AWS Bedrock Nova Lite v1.0 |
| RAG Framework | AWS Bedrock Knowledge Base |
| Vector DB | ChromaDB |
| Embedding | AWS Bedrock Embeddings |
| Agent Framework | Strands Agent |
| Category | Technology |
|---|---|
| Framework | Streamlit |
| Language | Python 3.x |
| UI Components | Custom Streamlit Components |
| Category | Technology |
|---|---|
| Web Scraping | Selenium, BeautifulSoup |
| Data Format | JSON → TXT → S3 |
| Storage | AWS S3 |
- Selenium: JavaScript 동적 렌더링 페이지 처리
- BeautifulSoup: HTML 파싱
- 의사 이름
- 소속 병원 및 진료과
- 전문 분야 (speciality)
- 경력 정보
- 진료 시간표
- 예약 연락처
- 온라인 예약 링크
- 이대서울병원 / 이대목동병원
- 세브란스병원
- 삼성서울병원
- 서울아산병원
- 기타 2개 병원
- 동적 페이지 처리: JavaScript 렌더링을 위한 Selenium 활용
- 진료과별 크롤링: 각 병원의 진료과 코드 탐색 및 접근
- robots.txt 준수: 크롤링 제한 확인 및 우회 방법 적용
- JSON 형식으로 구조화
- 의사별로 하나의 문서로 통합
- ChromaDB에 벡터로 저장
- Python 3.8 이상
- AWS 계정 (Bedrock 액세스 권한)
- pip package manager
# 1. 저장소 클론
git clone https://github.com/Doctor-Be/.github.git
cd Doctor-Be
# 2. 가상환경 생성 (선택사항)
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 3. 의존성 설치
pip install -r requirements.txt
# 4. 환경 변수 설정
# .env 파일 생성 후 다음 내용 추가:
AWS_REGION=us-east-1
KNOWLEDGE_BASE_ID=your_kb_id
VECTOR_INDEX_NAME=cc-project-vector-index
BUCKET_NAME=cc-project-vector-bucket# Streamlit 웹 인터페이스 실행
streamlit run frontend/frontend.py브라우저에서 http://localhost:8501 접속
입력: "가슴이 답답해요"
출력:
추천 전문의
용담 병원
이름: 박찬은 교수
병원: 서울대병원
진료과: 순환기내과
전문분야: 심장, 혈관병, 심근경색, 부정맥, 고혈압, 심장판막증, 심부전
진료시간: 월·수 오전
예약: https://www.snuh.org/...
추천이유: 박찬은 교수는 고도의 전문성을 갖춘 순환기내과 전문의로...
✅ 의료 선택권 향상: 객관적 정보 기반으로 합리적 의사 결정 가능
✅ 시간 절약: 기존 카페 질문→답변 대기(1-3일) → 병원 확인(1-2시간)에서 즉시 검색으로 단축
✅ 정보 비대칭 해소: 전문의 경력, 실적 등 투명한 정보 접근
✅ 원스톱 서비스: 검색 → 비교 → 예약 정보까지 통합 제공
✅ 환자-의사 매칭 효율화: 적합한 전문의에게 환자 연결
✅ 우수 의료진 홍보: 객관적 데이터(경력 등)로 전문성 어필
✅ 병원 행정 효율화: 부적절한 진료과 방문 감소
💰 의료비 절감: 적절한 전문의 선택으로 불필요한 재진료 감소 (추정 연간 수백억원 절감)
💰 생산성 향상: 정보 검색 시간 단축으로 환자 및 보호자의 시간 비용 절감
💰 조기 진단: 적시 전문의 방문으로 중증 질환 예방 → 사회적 의료비 감소
🔧 AI 실전 경험: 최신 RAG 기술의 실제 응용 사례 구축
🔧 확장 가능성:
- 전국 병원으로 확대
- 치과, 한의원 등 다른 의료 분야 적용
- 영어 버전 (외국인 환자용)
- 모바일 앱 출시
🔧 오픈소스 기여: 다른 의료 기관에서도 활용 가능한 프레임워크 제공
🌍 의료 접근성 향상: 지방 거주자, 고령자 등도 쉽게 전문의 정보 접근
🌍 건강 불평등 완화: 정보 격차 해소로 의료 형평성 증진
🌍 환자 권익 강화: 의사-환자 간 정보 비대칭 개선
🌍 신뢰도 향상: 출처 기반 정보 제공으로 온라인 의료 정보 신뢰성 제고
- 증상 입력창
- 지원 질병 안내
- 의료 면책 공지
- 추천 전문의 카드 (최대 3명)
- 의사별 상세 프로필
- 진료 시간 및 예약 링크
- 이 시스템은 참고용 정보 제공을 목적으로 합니다
- 의학적 조언이나 진단 대체지 역할을 하지 않습니다
- 정확한 진료를 위해서는 반드시 의료기관에 방문하시기 바랍니다
- 전국 주요 병원으로 데이터 확장
- 실시간 예약 시스템 연동
- 환자 리뷰 및 평가 시스템 추가
- 다국어 지원 (영어, 중국어)
- 모바일 앱 개발
- 의료 챗봇 기능 강화
- 질병별 맞춤 건강 정보 제공
| 이름 | 역할 |
|---|---|
| 양다원 | Frontend, Backend, Data |
| 서윤혜 | Backend, Data, AI |
이 프로젝트는 교육 목적으로 개발되었습니다.
프로젝트에 대한 문의사항이나 제안이 있으시면 Issues를 통해 연락 주세요!