본문으로

알려줄고양내과 의료 자문 챗봇 · 4인 팀 프로젝트

응급 증상은 AI 답변보다
119 안내가 먼저 나가게

내과 증상을 물으면 의학 문서를 찾아 답하는 자문 챗봇입니다. 팀은 내과 문제로 모델을 추가 학습시켰고, 저는 위험한 질문을 모델 앞에서 걸러 내는 흐름과 사용자가 거치는 화면을 맡았습니다.

응급 문구 13가지 → 모델 거치지 않고 119 안내코드 기준 · 경고 단어 37개는 경고를 띄운 뒤 답을 이어 감

내 담당팀장 · 기획 · 전체 처리 흐름 뼈대 · 응급 차단과 답변 말투 다듬기 · 일상어를 의학 용어로 바꾸기 · 화면과 사용 흐름 · 검색 방식 설계

내가 정한 것
응급 판단을 모델 앞 규칙 두 단계로 나눔(바로 119 문구 13가지, 경고 단어 37개) · 단정 어미를 권하는 말로 바꾸기
팀원이 맡은 것
모델 추가 학습 코드와 학습 결과물 · 키워드 검색 색인 · 평가 지표와 평가 실행 · 채점용 한·영 용어 사전
내가 확인한 것
시연 영상 4편으로 응급 경고, 한 번 묻기, 여러 번 묻고 요약까지 가는 흐름

이주형Python · FastAPI · Streamlit · Qwen2.5-7B · ChromaDB · 데모 단계 · 멋쟁이사자처럼 AI 엔지니어 부트캠프, 약 1주

시연 영상 4편 저장소 (GitHub) 발표자료 (PDF)

의료 정보 안내 이 챗봇은 참고용 자문 도구이며 전문 의료 상담과 진단·처방을 대체하지 않습니다. 이상 증상이 있으면 의료기관을 찾으세요.

질문 하나가 지나가는 길

화면 4단계 · 서버 한 곳에서 처리

  1. 동의와 프로필내 담당

    의사 진료를 대체하지 않는다는 데 동의해야 시작합니다. 성별과 연령대는 버튼으로 고릅니다.

  2. 응급 신호 확인내 담당

    응급 문구 13가지가 보이면 모델을 부르지 않고 119 안내로 끝냅니다. 경고 단어 37개는 경고만 띄우고 넘어갑니다.

  3. 문서 찾고 답하기

    「콕콕 아프다」 같은 일상어를 의학 용어로 바꿔 내과 문서를 찾고, 추가 학습한 모델이 그 문서를 근거로 답합니다.

  4. 말투 다듬기와 요약내 담당

    단정하는 어미를 권하는 말로 바꾸고 참고용 안내 문구를 붙입니다. 대화를 마치면 의사에게 보여 줄 문진 요약을 만듭니다.

응급 판단을 모델 앞으로 옮긴 과정

안전 장치 설계

  1. 문제

    의료 자문은 틀린 답의 대가가 큽니다. 그럴듯하게 들리는 답만으로는 믿을 수 없었고, 응급 증상을 말한 사람에게 긴 설명을 내보내면 안 됐습니다.

  2. 판단

    응급 여부를 모델에게 맡기지 않고, 모델 앞에 둔 규칙으로 먼저 가렸습니다. 아주 위험한 문구는 곧바로 119 안내로 끝내고, 덜 급한 단어는 경고를 붙여 답을 이어 가도록 두 단계로 나눴습니다.

  3. 검증

    시연 영상 4편으로 응급 질문, 한 번 묻고 끝나는 질문, 여러 번 묻고 요약까지 가는 질문을 돌려 봤습니다. 답변 품질은 팀이 세 가지 구성을 같은 평가 문제로 비교했습니다.

  4. 결과

    응급 문구는 모델과 문서 검색을 모두 건너뛰고 119·응급실 안내만 돌려줍니다. 답변 점수는 추가 학습과 문서 검색을 함께 쓴 구성이 가장 높았고, 기본 모델과 차이는 0.02~0.03이었습니다.

세 가지 구성으로 비교한 답변 점수

객관식 995문항 · 정답과 일치한 비율

막대 길이는 1.0을 끝으로 잡았습니다. 서술형 답의 의미 일치 점수(BERTScore)는 0.70 · 0.69 · 0.73, 단답형 정답 일치 비율은 모든 구성에서 0.05~0.06이었습니다. 모든 점수는 발표자료에 적은 값이고, 예측 결과 파일로 다시 돌려 확인한 값은 아닙니다.

10,299학습에 쓴 내과 문제
1,248평가에 쓴 문제
27,000검색용으로 나눈 문서 조각(약)
13 · 37응급 문구 · 경고 단어

고양이가 묻고, 요약은 의사 말로

화면과 말투

알려줄고양 앱 아이콘. 간호사 모자를 쓴 고양이

처음엔 친근하게, 끝은 진료실에 들고 갈 수 있게

처음 화면에서 알려줄고양은 「어디가 언제부터 어떻게 아프냥?」 하고 말을 겁니다. 대화를 마치면 말투를 바꿔 의사가 바로 읽을 수 있는 요약 한 장을 만듭니다.

  • 동의 버튼을 누르기 전에는 문진을 시작할 수 없음
  • 경고 단어가 보이면 답 위에 119·응급실 안내를 먼저 표시
  • 요약에 의심 진료과, 핵심 증상, 시작 시기와 강도, 참고사항을 정리
  • 요약 화면에서 가까운 내과·약국 지도 검색으로 바로 이동

궁금한 부분을 더 자세히

응급 신호를 거르는 두 단계와 답변 다듬기바로 119 · 경고 후 답변 · 말투 바꾸기
단계무엇을 보나어떻게 처리하나
바로 119문구 규칙 13가지. 예: 피를 토함, 의식을 잃음, 팔·다리·얼굴 마비, 갑자기 심한 두통, 숨을 못 쉼문서 검색과 모델을 모두 건너뛰고 「119에 연락하거나 가까운 응급실로 이동」 안내만 돌려줍니다.
경고 후 답변단어 37개. 예: 체온 40도, 전신 두드러기, 경련, 발작, 실신답변 맨 앞에 위급 증상 경고를 붙이고, 답은 평소처럼 이어 갑니다.
답변 다듬기모든 답변「해야 합니다」 같은 단정 어미를 「권장드립니다」처럼 권하는 말로 바꾸고, 끝에 참고용 안내 문구를 한 번만 붙입니다.

모델에게 주는 지시문에도 권하는 말투로 답하고, 찾은 자료의 출처를 밝히고, 불확실한 내용은 추정이라고 적게 했습니다.

전체 구조화면 · 서버 · 검색 · 모델
화면

Streamlit 4단계

동의, 프로필, 채팅, 문진 요약 화면으로 차례로 넘어갑니다. 경고 배너와 지도 검색 버튼이 이 화면에 있습니다.

서버

FastAPI 한 곳에서 처리

질문이 들어오면 응급 확인 → 문서 찾기 → 답 만들기 → 말투 다듬기 순으로 처리합니다. 평가 코드와 화면이 같은 입구를 씁니다.

검색

의미 검색과 키워드 검색

문서를 문장 뜻으로 찾는 의미 검색(한국어 문장 모델, ChromaDB)이 기본입니다. 형태소 분석기 Kiwi로 자른 키워드 검색(BM25)을 섞는 검색기도 만들었고, 섞는 비율 기본값은 의미 검색 0.7입니다.

일상어

증상 표현을 의학 용어로

「콕콕 아프다」는 찌르는 통증으로, 「어질어질」은 어지럼증으로 바꾸고, BP·ECG 같은 약어도 풀어 쓴 뒤 검색합니다.

모델 학습 (팀원 담당)Qwen2.5-7B · 일부만 학습 · 3단계로 나눠 학습

Qwen2.5-7B-Instruct를 통째로 다시 학습할 장비가 없어서, 모델 일부만 학습하고 모델 크기도 줄여 올리는 QLoRA(LoRA r=16)를 썼습니다. 학습 문제의 답은 상황 파악, 의학적 추론과 근거, 마지막 답 세 칸으로 다시 썼습니다.

단계문제 유형최대 길이한 번에 넣는 수학습률반복
1단계단답형64040.00022
2단계서술형89620.00012
3단계객관식1,02420.000052

짧고 답이 분명한 유형부터 학습하고, 단계마다 길이를 늘리고 학습률을 줄였습니다. 값은 저장소 학습 설정 파일 기준입니다.

평가 방식과 남은 한계세 가지 구성 · 채점 규칙 · 아직 못 잰 것
구성객관식 정답 일치서술형 의미 일치서술형 문장 겹침단답형 정답 일치
기본 모델0.690.700.120.05
문서 검색 추가0.670.690.110.06
추가 학습 + 문서 검색0.710.730.140.06

객관식은 보기 번호가 맞는지, 단답형은 한·영 용어 사전으로 핵심어가 들어 있는지 봤습니다. 서술형은 뜻이 얼마나 비슷한지(BERTScore)와 문장이 얼마나 겹치는지(ROUGE-L)로 쟀습니다.

  • 단답형 점수가 낮음「두통」과 「headache」처럼 한·영 표기가 섞이면 정답도 틀린 것으로 채점될 수 있습니다. 원인이 얼마나 큰지는 확인하지 않았습니다.
  • 검색 결과 재정렬 없음찾은 문서를 다시 정밀하게 줄 세우는 단계가 없어, 상위 문서에 관련 없는 조각이 섞일 수 있습니다.
  • 검색 단계 품질 미측정답의 품질만 쟀고, 필요한 문서를 제대로 찾았는지와 답이 문서에 충실한지는 재지 않았습니다.
  • 내과만 다룸다른 진료과로 넓히려면 데이터와 응급 규칙을 다시 짜야 합니다.
시연 영상 4편경고 후 답변 · 한 번 묻기 · 여러 번 묻고 요약
팀에서 나눈 몫4인 팀 · 저장소 기록 기준
이주형팀장과 기획. 프로젝트 뼈대와 처리 흐름, 응급 차단 규칙, 답변 다듬기, 일상어 바꾸기, Streamlit 화면과 서버 연결, 검색 방식 설계
팀원모델 추가 학습 코드와 학습 결과물, 키워드 검색 색인, 평가 지표와 평가 실행, 채점용 한·영 용어 사전
앞선 팀 프로젝트에서 가져온 검색 판단멀티홉 팩트체킹

앞선 팀 프로젝트(멀티홉 팩트체킹)에서 저는 팀장과 검색 모듈을 맡았습니다. 의미 검색만 쓰면 여러 단계를 건너 추론할수록 뜻을 잘못 잡는 오류가 2단계 29%, 3단계 38%, 4단계 77%로 늘었고, 이 기록을 보고 키워드 검색을 섞는 쪽을 택했습니다. 같은 판단을 이 챗봇의 검색 설계에도 가져왔습니다.

멀티홉 팩트체킹 자료
데이터 출처AI-Hub 의학지식 데이터 2종
학습용필수의료 의학지식 데이터 (AI-Hub 71875). 내과 질문과 답 12,781쌍을 학습 10,299 · 평가 1,248로 나눠 썼습니다.
검색용전문 의학지식 데이터 (AI-Hub 71874). 의학 교과서·학회 지침·온라인 의료 정보 3,447문서를 약 27,000조각으로 나눴습니다.
구축 기관과학기술정보통신부 · 한국지능정보사회진흥원(NIA) · 가톨릭대학교 산학협력단 주관, 서울성모·삼성서울·서울대·세브란스·보라매병원 참여
이용 범위원본 데이터는 다시 배포하지 않고, 이 페이지에는 설계와 방법, 결과만 공개합니다.
이주형 · 알려줄고양

응급 증상은
AI 답변보다119 안내 먼저

내과 증상을 물으면 의학 문서를 찾아 답하는 자문 챗봇입니다. 위험한 질문은 모델이 답하기 전에 규칙으로 걸러 119 안내로 돌립니다.

01 질문은 이렇게 흘러요
  1. 동의와 프로필
  2. 응급 신호 확인내 담당
  3. 문서 찾고 답하기
  4. 문진 요약

화면 4단계 · 내과 문서 약 27,000조각에서 찾아 답함

02 바꾼 것

화면 안내문으로만 응급 경고

응급 문구가 보이면 모델을 부르지 않고 119 안내

덜 급한 단어 37개는 경고를 띄우고 답을 이어 갑니다.

03 내가 맡은 것
  • 팀장과 기획
  • 전체 처리 흐름 뼈대
  • 응급 차단과 말투 다듬기
  • 화면과 사용 흐름

모델 학습과 평가 실행은 팀원이 맡았습니다.

04 결과0.71

객관식 995문항 정답 비율 · 기본 모델 0.69 → 추가 학습 + 문서 검색 0.71

객관식 995문항 · 정답과 일치한 비율 · 발표자료 기준 · 차이는 0.02로 작습니다

05 알려줄고양
알려줄고양 앱 아이콘

「어디가 언제부터 어떻게 아프냥?」 하고 묻고, 대화를 마치면 의사에게 보여 줄 요약 한 장을 만듭니다.

참고용 자문 도구이며 진단·처방을 대체하지 않습니다. 구조와 평가 기록은 원래 페이지에 있습니다.

저장소