이 벤치마크가 존재하는 이유와 무엇을 검증하는가
AI 보조 혈액검사 결과 해석은 소비자 및 임상 워크플로에서 점점 더 널리 사용되고 있지만, 임상검사실 의학에 맞춘 재현 가능한 평가 프레임워크는 여전히 드뭅니다. 이 상황에서 가장 중요한 질문은 일반적인 의료 질의응답 벤치마크에서 다루는 질문이 아닙니다: 평균 적혈구 용적(MCV)이 동일할 때 엔진이 철결핍과 지중해빈혈 소질을 구분할 수 있는가, 간염으로 길버트 증후군을 과잉진단하는가, 그리고 완전히 정상인 선별 패널에서 병리를 “만들어내는”가?
단일 혈액검사 패널은 보통 여러 경쟁적 해석을 뒷받침할 만큼 충분한 신호를 포함하며, 해석하는 임상의의 역할은 교과서식 정답을 찾아내는 것이 아니라 그 해석들을 서로 비교해 가중치를 두는 데 있다. 교과서 사례에서 잘하는 엔진은 여전히 가장 중요한 사례들에서는 실패할 수 있다. 즉, 감별진단의 함정, 단독으로 보면 경고처럼 보이지만 양성인 변이, 그리고 자신감 있는 보조자가 병리(질환)를 만들어내게 유혹하는 완전히 정상 패널이 그것이다.
이 벤치마크는 바로 그런 실패 양상들을 겨냥해 구축되었다. 15개 사례 각각은 특정 진단적 성질을 위해 선택되었다. 예를 들어, 동일한 평균적혈구용적(MCV)을 보이는 베타 지중해빈혈(β-thalassaemia) 보인자 특성과 구분되어야 하는 철결핍성 소적혈구증, 이상 소견이 고립된 간접 고빌리루빈혈증뿐인 길버트 증후군(Gilbert's syndrome) 양상, 그리고 모든 분석항목이 참고범위 안에 들어있는 15개 파라미터 선별 패널이 포함된다. 채점 기준은 각 사례를 그 자체의 조건에 맞게 읽는 엔진에 점수를 주고, 그런 진단이 정당화되지 않는 상황에서 확신에 찬 진단에 도달하는 엔진을 감점한다.
Thomas Klein, MD로서, 나는 이 사례 패널을 선택했는데, 이는 내가 실험실 의학 보조자들이 가장 자주 틀리는 패턴들이기 때문이다. 값비싼 실패 양상은 "드문 질환을 놓치는 것"이 아니라, 그 질환이 없는 환자에게 일상적인 병리(질환)를 만들어내는 것이다. 우리의 의료 검증 hub는 더 넓은 프레임워크를 설명한다. 이 페이지는 V11 엔진에서의 적용 결과를 설명한다.
최신 기준 실행 — V11 (2026년 4월)
2026년 4월의 Kantesti AI Engine V11 기준(reference) 실행 결과, 다음과 같은 종합 점수를 산출했다. 99.12% 사전 등록된 15개 사례 루브릭에서. 두 개의 과잉진단(하이퍼다이아그노시스) 함정(trap) 사례는 모두 만점(천장) 점수를 받았다. 멘처 지수(Mentzer index)는 철결핍 대 지중해빈혈 감별진단에서 올바르게 적용되었다.
종합 공식은 세 가지 구성요소를 결합한다: 구조적 적합성 7개의 필수 보고 섹션과 16개의 필수 하위 섹션에 대해, 임상 정확도 키워드 재현율(keyword recall) + 채점 시스템 재현율(scoring-system recall) + 확률분포 타당성 검증을 통해 측정하며, 응답 지연 시간 20초의 주요 서비스 수준 목표(primary service-level target)에 대해. 정확한 분해는 아래 루브릭 공식에 표시되어 있다.
남은 0.88% 포인트의 여유분(headroom)은 거의 전부 지연(latency) 손실로 분해되며, 즉 -0.05의 합성(composite) 값을 갖는 Phase 2 대체(fallback) 호출 3회가 0.88% 포인트 결손의 약 0.60을 기여했습니다. 임상 내용으로는 분해되지 않았습니다. 엔진은 15개 사례 모두에서 올바른 진단을 놓치지 않았고, 미흡했던 경우에는 소수의 호출에서 20초의 1차(primary-path) 목표보다 약간 더 오래 걸렸을 뿐입니다.
7개 의학 전문 분야에 걸친 15개 사례
사례 패널은 7개 전문 분야—혈액종양학(hematology), 내분비학(endocrinology), 대사 의학(metabolic medicine), 간장학(hepatology), 신장학(nephrology), 심장학(cardiology), 류마티스학(rheumatology)—과 더불어 2개의 전용 고진단(hyperdiagnosis) 함정(trap) 사례로 구성됩니다. 각 사례는 서면 동의(informed consent) 하에 Kantesti 임상 데이터 저장소(repository)에서 추출한 익명화된 실제 환자 기록입니다.
익명화는 Safe Harbor 접근 방식으로 수행되었습니다. 모든 직접 식별자(direct identifiers)는 제거되거나 대체되었고, 각 기록에는 BT-NNN-LABEL 형식의 벤치마크-내부 사례 코드(benchmark-internal case code)가 할당되었습니다. 처리는 다음에 따라 수행되었습니다. GDPR 제9조(2)(j)항 적절한 안전장치를 갖춘 과학적 연구를 위해, 그리고 이에 상응하는 영국 GDPR 조항에 따라 수행되었습니다. 공개된 하네스(harness), 기술 보고서, 또는 배포된 데이터셋 어디에도 개인을 식별할 수 있는 정보가 나타나지 않습니다.
왜 이와 같은 분포인가
혈액학은 실제 실험실 환경에서 미세적혈구성 감별과 대적혈구성 감별이 가장 높은 빈도의 함정이기 때문에 세 가지 케이스를 받습니다. 내분비학은 하시모토병, PCOS, 비타민D 결핍의 증상 양상이 서로 다른 진단 형태(자가항체에 의해 좌우, 호르몬 비율에 의해 좌우, 단일 마커에 의해 좌우)를 연습하기 때문에 세 가지를 받습니다. 단일 케이스 전문 분야는 여전히 의미가 있는데, CKD, ASCVD 위험, SLE 각각에는 엔진이 호출해야 하는 고유한 점수 체계가 있기 때문입니다(KDIGO 병기, ASCVD 10년 위험, 각각 2019 EULAR/ACR SLE 기준).
사전 등록된 채점 기준의 설명
사전 등록(pre-registration)은 이 벤치마크에서 가장 중요한 방법론적 선택입니다. 예상되는 모든 진단, 모든 임상 점수 체계, 그리고 모든 보고서 섹션은 소스 코드에 커밋되었습니다. 엔진이 호출되기 전에. 따라서 엔진을 유리하게 보이도록 루브릭을 사후 조정하는 것은 불가능합니다.
복합 점수는 세 가지 구성 요소로 이루어집니다. 구조적 구성 요소(structural component)는 35%를 기여하며, 엔진이 일곱 가지 필수 보고 섹션(헤더, 요약, 핵심 소견, 감별, 점수 체계, 권고, 추적)과 그 안의 열여섯 가지 필수 하위 섹션을 반환했는지를 측정합니다. 섹션 존재 여부는 구조적 계산에서 40%의 가중치를 가지며, 하위 섹션 존재 여부는 60%의 가중치를 가집니다. contributes 35 percent and measures whether the engine returned the seven mandatory report sections (header, summary, key findings, differential, scoring systems, recommendations, follow-up) and the sixteen mandatory subsections within them. Section presence weighs 40 percent and subsection presence weighs 60 percent within the structural calculation.
그만큼 임상 구성 요소(clinical component)는 55%를 기여하며 세 가지를 결합합니다: 진단-키워드 회상(임상 하위 점수의 70%), 점수 체계 회상(20% — 해당되는 경우 엔진이 Mentzer, FIB-4, HOMA-IR, ASCVD 위험, KDIGO 병기, EULAR/ACR 기준을 계산하는지), 그리고 확률 합 유효성 점검(10% — 감별 확률은 [90, 110] 구간 내에서 합산되어야 함)입니다. 함정 케이스의 경우, 조작된 병리 플래그 1개당 0.10씩 계산하여 최대 3개 플래그까지 적용되는 명시적 과잉진단 페널티(최대 0.30)를 차감합니다. contributes 55 percent and combines three things: diagnosis-keyword recall (70 percent of the clinical sub-score), scoring-system recall (20 percent — does the engine compute Mentzer, FIB-4, HOMA-IR, ASCVD risk, KDIGO staging, EULAR/ACR criteria where relevant), and a probability-sum validity check (10 percent — the differential probabilities should sum to within the [90, 110] interval). For trap cases, an explicit hyperdiagnosis penalty of up to 0.30 is subtracted, calculated as 0.10 per fabricated pathology flag, capped at three flags.
그만큼 지연(latency) 구성 요소는 10%를 기여합니다. 20초 미만 응답은 전체 0.10, 40초 미만 응답은 0.05, 그보다 느리면 0입니다. 20초 목표는 프로덕션 1차(primary-path) 서비스 수준 목표를 반영하고, 40초 상한은 무거운 엔진 호출을 위한 2단계(Phase 2) 폴백 예산을 반영합니다.
사전 등록이 막는 것
1인칭(First-party) 벤치마크는 사후 루브릭 튜닝을 통해 자기 수치를 부풀리는 것으로 악명이 높습니다. 패턴은 거의 항상 같습니다. 팀이 엔진을 실행하고 성능이 떨어지는 지점을 본 뒤, 그 성능 저하 영역이 덜 중요하게 계산되도록 루브릭을 조용히 조정합니다. 첫 엔진 호출 전에 루브릭을 소스 코드에 커밋하고, 하네스를 MIT 라이선스로 공개하면, 그 조정이 버전 관리에서 드러납니다. 누구나 저장소를 복제하고 루브릭 작성 날짜를 확인하며, 엔진 결과가 점수화를 형성하는 데 사용되지 않았음을 검증할 수 있습니다.
과잉진단(하이퍼다이아그노시스) 함정 사례 — 과호출(over-calling)이 진짜 실패 모드인 이유
정상 화면에서 병리를 공격적으로 과호출하는 것은 소비자 대상 의료 보조 도구에서 문서화된 실패 모드입니다. 그 하류 비용에는 불필요한 검사, 환자 불안, 의인성(iatrogenic) 검사/평가가 포함됩니다. 이 벤치마크의 두 함정 케이스는 이 실패 모드를 드러내고 점수화 가능하게 설계되었습니다.
🟡 함정 1 — BT-014-GILBERT
제시(presentation). 총 빌리루빈이 2.4 mg/dL인 24세 남성입니다. 직접 분획은 정상이고, 트랜스아미나아제와 알칼리성 포스파타아제는 각 기준 범위 안에 있으며, 망상적혈구는 별다른 이상이 없고, 하프토글로빈과 LDH가 용혈을 배제합니다.
올바른 해석. 길버트 증후군—양성 UGT1A1 다형성입니다. 해석에는 간염, 간경변, 용혈성 빈혈, 또는 담도 폐쇄를 호출해서는 안 됩니다.
V11 결과. 복합 점수 1.000. 모니터링된 여섯 개의 과잉진단 플래그 중 어떤 것도 활성 진단으로 나타나지 않았습니다.
🟡 함정 2 — BT-015-HEALTHY
제시(presentation). 15개 매개변수의 일상 루틴 선별 패널을 가진 35세 여성입니다. 모든 분석 항목은 각각의 기준 범위 안에 편안하게 들어 있습니다.
올바른 해석. 안심과 생활습관 유지. 해석은 임상적으로 유용해 보이기 위해 경계 병리를 억지로 만들어내지 않아야 합니다.
V11 결과. 종합 점수 1.000. 모니터링한 7개의 과잉진단 플래그(당뇨병, 빈혈, 갑상선기능저하증, 이상지질혈증, 간염, 신장질환, 결핍) 중 어느 것도 활성 진단으로 나타나지 않았습니다.
두 트랩 모두에서 13개의 모니터링 과잉진단 플래그를 확인했습니다. 트리거된 것은 0개였습니다. 이는 AI 엔진을 선별(triage) 또는 사전 상담 도구로 사용하려는 어떤 임상의에게도 가장 중요한 결과입니다. 시스템은 존재하지 않는 질병을 만들어내지 않았습니다..
멘처 지수(Mentzer index): 철 결핍과 지중해빈혈 보인자(thalassaemia trait) 구분
두 번째로 가치 있는 발견은 사례 BT-001(철결핍성 빈혈)과 사례 BT-007(베타 지중해빈혈 소질)의 짝짓기입니다. 두 경우 모두 소적혈구증을 보이며, 순진한 분류기들이 자주 걸리는 잘 알려진 함정입니다. MCV를 RBC 수로 나눈 멘처 지수(Mentzer index)는 철결핍에서는 13을 초과하고, 지중해빈혈 소질에서는 13 미만으로 떨어집니다.
BT-001에서 환자는 34세 여성으로, 헤모글로빈 10.4 g/dL, MCV 72.4 fL, RBC 4.1 × 10¹²/L, 페리틴 6 ng/mL, 그리고 상승된 TIBC를 보였습니다. 약 17.7의 멘처 지수는 절대 철결핍을 지지합니다. BT-007에서 환자는 28세 남성으로 소적혈구증(MCV 65.8 fL)은 있었지만 RBC 수가 6.2로 높았고, RDW는 정상, 페리틴은 정상, HbA2는 5.6%였습니다. 약 10.6의 멘처 지수는 지중해빈혈 소질을 가리키며, 상승된 HbA2는 베타 지중해빈혈 소질을 확인합니다.
두 사례 모두 1.000점을 받았습니다. 엔진은 두 해석 모두에서 멘처 지수를 명시적으로 사용했고, 각 경우에 올바른 진단을 반환했습니다. 이는 전체 벤치마크에서 단 하나로 가장 임상적으로 안심되는 결과입니다., 지중해빈혈 소질을 철결핍으로 잘못 분류하면 부적절한 철분 보충이 이루어지고 가족 선별검사 기회를 놓치게 되며, 철결핍을 지중해빈혈로 잘못 분류하면 간단한 대체요법의 시기가 지연됩니다. 우리의 페리틴 범위 가이드는 는 더 넓은 감별진단 맥락을 설명합니다.
2026년 4월 실행 결과(케이스별)
15개 사례 중 12개는 1차 경로에서 최고 복합 점수 1.000을 달성했습니다. 3개 사례는 2단계(Phase 2) 백업으로 처리되어, 0.05 지연(latency) 보너스는 잃었지만 모든 임상 및 구조적 콘텐츠는 유지했습니다. 한 사례는 단 하나의 필수 하위 섹션이 누락되었고, 한 사례는 약간 감소된 확률 분포 합을 반환했습니다.
PCOS 사례(BT-008)는 응답 구조에서 단 하나의 필수 하위 섹션을 누락했는데, 16개 중 16개가 아니라 16개 중 15개였습니다. 이로 인해 구조 점수가 1.000에서 0.963으로 깎였습니다. SLE 사례(BT-011)는 임상 점수를 0.965로 떨어뜨렸지만, 모든 진단 키워드와 점수 산정 시스템은 그대로 유지한 채, 한계적으로 감소한 확률분포 합을 반환했습니다. 두 개의 완벽하지 않은 사례 모두 올바른 진단을 놓치지 않았습니다.
헤드라인 점수가 알려주지 않는 것
이 특정 사전등록 루브릭에서의 99.12% 복합 점수는 거의 천장 수준의 성능을 의미하지만, 신중한 맥락 설정이 필요합니다. 이 결과는 단일 루브릭에 대해, 각 1회씩 평가한 15개의 신중히 선정된 익명화 사례에 대해 엔진의 동작을 설명합니다. 우리는 그 숫자가 무엇을 입증하고 무엇을 입증하지 않는지에 대해 명확히 합니다.
점수는 V11 엔진이 이 평가를 위해 선택된 진단 패턴을, 공개되어 재현 가능한 방법론에 따라 올바르게 처리했음을 말해줍니다. 이는 엔진이 실제 환경에 존재하는 모든 혈액검사 패널에서 정확하다는 뜻은 아닙니다. 또한 엔진이 임상의의 판단을 대체해야 한다는 뜻도 아닙니다. 그리고 엔진이 다른 대안 AI 시스템보다 우수하다는 뜻도 아닙니다. 다른 엔진들과의 비교 분석은 이 보고서의 범위에서 의도적으로 제외되었습니다.
점수가 입증하는 것은 기준선입니다. 루브릭과 하네스가 공개되어 있으므로, 엔진의 향후 버전은 동일한 15개 사례에 대해 평가될 수 있으며, 공개된 점수와 이후 어떤 실행 결과 사이의 격차 자체도 측정 가능합니다. 이것이 사전등록의 가치입니다: 성과 주장들을 검증 가능한 주장으로 바꿉니다.
10분 안에 이 벤치마크를 재현하는 방법
재현에는 Kantesti API 자격증명 쌍과, 다음이 포함된 Python 3.10 이상 환경만 필요합니다. requests 그리고 reportlab 라이브러리가 설치되어 있어야 합니다. 전체 하네스는 MIT 라이선스 하에 공개된 단일의 독립형 Python 모듈입니다.
새 실행을 위한 네 단계
하나. 저장소를 복제합니다: git clone https://github.com/emirhanai/kantesti-blood-test-benchmark.git. 둘. requirements.txt로 의존성을 설치합니다: pip install -r requirements.txt. 셋. 설정: KANTESTI_USERNAME 그리고 KANTESTI_PASSWORD 환경 변수로 지정하세요—자격 증명은 실행 시 읽히며 스크립트에 하드코딩하지 않습니다. 넷. 실행: python benchmark_bloodtest.py 그리고 작업 디렉터리에 생성된 네 가지 산출물을 확인하세요: CSV 점수카드, JSON 점수카드, 원시 엔진 응답을 포함한 전체 JSON 덤프, 사람이 읽을 수 있는 Markdown 보고서입니다.
2026년 4월 23일의 기준 실행 결과는 저장소의 results/ 디렉터리에 보존되어 있습니다. 새 실행은 기준 실행을 건드리지 않은 채 새로운 타임스탬프가 포함된 점수카드를 생성합니다. 실행 결과가 의미 있게 다르게 나온다면, 실행 타임스탬프와 응답 메타데이터에 반환된 엔진 버전으로 GitHub 이슈를 열어 주세요. directory of the repository. A fresh run will produce a new timestamped scorecard while leaving the reference run untouched. If your run produces a meaningfully different result, please open a GitHub issue with the run timestamp and the engine version returned in the response metadata.
한계와 향후 연구
네 가지 한계는 명시적으로 인정할 필요가 있습니다: 표본 크기, 단일 샷 평가, 단일 엔진 범위, 단일 출처 데이터 기원. 각각은 현재 후속 작업으로 다루고 있습니다.
표본 크기. 여덟 개 전문 분야 버킷에 걸친 15개 사례는 개념 증명에는 충분하지만, 전문 분야 내 하위집단 분석에는 부족합니다. 50개 사례로의 확장은 계획되어 있으며 응고 패널, 혈액종양 악성질환 선별, 임신 패널, 소아 진료 사례를 포함할 예정입니다.
단일 샷 평가. 각 사례는 한 번만 평가되었습니다. 대규모 언어 모델은 낮은 샘플링 온도에서도 유의미한 출력 변동성을 보이므로, 사례당 5회 평가를 포함하고 변동성을 보고하는 다중 실행 프로토콜이 자연스러운 다음 단계입니다.
단일 엔진 범위. 이 보고서는 하나의 엔진을 특성화합니다. 대안 AI 시스템과의 비교 분석은 여기서는 범위에 포함되지 않습니다; 적절한 방법론을 갖춘 별도의 독립 연구로 추진할 수 있습니다.
단일 출처 데이터 기원. 15개 사례는 단일 임상 저장소에서 가져온 실제 환자 기록을 익명화한 것입니다. 이는 선별된 표본이며 모집단을 대표하는 무작위 추출이 아닙니다. 평가를 다기관 데이터로 확장하는 것은 로드맵에 포함되어 있습니다.
가장 영향력 있는 계획 확장은 다국어 동등성입니다. Kantesti AI Engine은 75+개 언어로 사용자에게 서비스를 제공하며, 터키어, 독일어, 스페인어, 프랑스어, 아랍어에서 동일한 15개 사례 하네스를 실행하면 엔진이 지원하는 언어 전반에 걸친 출력 품질을 정량화할 수 있습니다. 각 언어별 실행 결과는 각자의 DOI와 하네스 브랜치와 함께 게시하겠습니다.