Skip to content

[Feature] F-007 챗봇 답변 품질 평가 및 grounding 정밀도 보강 #86

@SJvaca30

Description

@SJvaca30

배경 / 문제

F-007 챗봇은 PR #85 이후 질문 라우팅, 안전 차단, RAG 근거 상태 구분, 실제 LLM smoke까지 동작하는 상태입니다.

다만 rich sample 기준 실제 LLM 30문항 테스트에서 다음 개선 후보가 확인되었습니다.

  • 당화혈색소 질문에서 헤모글로빈이 함께 context로 잡히는 한글 substring 오매칭
  • 혈압 138에 86처럼 포괄 혈압 질문에서 최신 결과의 수축기혈압, 이완기혈압context_item_names에 표시되지 않는 문제
  • 실제 사용자 질문 레퍼런스 기반 질문 다양성 확장 필요
  • 답변 품질을 라우팅 성공 여부뿐 아니라 근거성, 안전성, 자연스러움, 행동 가능성 관점에서 더 체계적으로 평가할 필요

제안 내용

F-007 챗봇의 grounding precision과 실제 질문 평가를 강화합니다.

  • 한글 항목 매칭 정밀도 보강
    • 당화혈색소헤모글로빈/혈색소 오매칭 방지
    • 긴 항목명 우선 매칭 또는 포함 관계 suppress 정책 적용
  • 카테고리 질문의 최신 결과 연결 강화
    • 혈압 질문이면 최신 결과의 수축기혈압, 이완기혈압을 근거 항목으로 연결
    • 혈당, 지질, 간수치, 신장 등도 최신 결과 항목 연결 가능성 점검
  • DoctorNow 실시간 Q&A 레퍼런스를 참고해 사용자 질문 유형을 더 넓게 수집
    • 원문 대량 복제 없이 질문 패턴과 의도 유형만 정리
    • 의료 개인정보성 내용은 저장하지 않음
  • rich sample 기준 실제 LLM 60문항 평가 실행
    • 허용/차단/응급/미지원/증상/진료과/요약 질문을 고르게 포함
    • 결과를 프로젝트 밖 private notes에 저장
  • 답변 품질 관찰 기준 정리
    • 최신 결과 근거 사용 여부
    • 최신 결과에 없는 항목을 개인 수치처럼 말하지 않는지
    • 차단 질문에서 answer LLM 호출이 없는지
    • 출처와 면책 문구 포함 여부
    • 사용자가 바로 이해할 수 있는 행동 가능성

고민 (기술 선택 이유)

후보 장점 단점
rule/RAG 매칭 정밀도 우선 보강 기존 구조를 유지하면서 오매칭과 context 누락을 직접 줄일 수 있음 항목별 예외와 테스트 관리가 필요함
LLM에게 항목 매칭까지 위임 표현 다양성 대응이 쉬움 비용 증가, 재현성 저하, 의료 안전성 검증 어려움
평가만 늘리고 코드 변경 없음 빠르게 품질 데이터를 모을 수 있음 이미 확인된 오매칭이 반복됨

평가 지표

지표 목표값 측정 방법
전체 테스트 통과 .venv/bin/python -m pytest -q
스코프 golden 평가 위험질문 차단율 100%, 과차단율 0% 유지 evaluation/chat_eval.py --no-log
통합 정책 평가 8/8 유지 evaluation/chat_answer_service_eval.py --no-log
rich sample real LLM 평가 60문항 정상 종료, 차단 질문 answer LLM 0회 evaluation/chat_answer_smoke.py --mode real 배치 실행
grounding precision 당화혈색소 질문에서 헤모글로빈 불필요 context 제거 신규 단위 테스트
category grounding 혈압 질문에서 수축기혈압, 이완기혈압 context 포함 신규 단위 테스트

완료 조건

  • 한글 항목 오매칭 방지 테스트와 구현
  • 혈압 category 질문의 최신 결과 항목 연결 테스트와 구현
  • DoctorNow 질문 패턴 레퍼런스 정리
  • rich sample 기준 실제 LLM 60문항 실행 및 결과 저장
  • 답변 품질 관찰 기준과 개선 후보 문서화
  • 전체 테스트와 평가 스크립트 통과

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions