시스템이 수집(원시 컬럼)하는 신호와 거기서 도출(집계 뷰·스코어러·검증 뷰)하는 메트릭을 전수 정리. 겹침 메트릭(cite_f1·SOURCES-present·grounded_pct)이 illusory일 수 있어 함의(citation_F1_entailment·claim_verified_rate)로 교차검증해야 진짜 신호(EXP-190/209, V6 실증).
runs/events 스키마 + mv_*/v_* 뷰 + 각 도메인 scorer·grounding_guard·recency 모듈 + eval_meta JSONB 키(실측).모든 메트릭은 5개 질문 중 하나에 답한다. 정답(correct)과 근거(grounded)·신뢰(verified)는 독립 축이다 — 한 축이 좋다고 다른 축이 좋은 게 아니다.
| 축 | 질문 | 수집(raw) | 도출 — 집계(MV) | 도출 — 뷰·스코어러 |
|---|---|---|---|---|
| 정확도 Outcome | 맞혔나? | success · format_valid | pass_at_1 · format_invalid_rate · pass_any/pass_all | field_accuracy · exec_acc · ws-robust pass@1 |
| 비용 Cost | 얼마나 들었나? | total_tokens · input/output_tokens · overhead_tokens · eval_meta.cost_usd | avg_tokens · tokens_per_success | — |
| 효율 Efficiency | 깔끔히 끝났나? | status · terminated_by · total_turns · latency_ms · verify_latency_ms | loop_rate · avg_turns · p95_latency · calls/errors/avg_latency | — |
| 근거 Grounding | 진짜 자료 기반? | tool_result · tool_error · eval_meta.cited_ids | — | grounded_pct · cite_f1(P/R) · ground_ratio · objective_correct · recency · report_sources · citation_F1_entailment · hallucination_risk · search_success_rate |
| 신뢰 Verification | 틀린 걸 아는가? | eval_meta.supported · hallucination · confidence · label | — | claim_verified_rate · misattribution · false_approval · useful_rejection · critic_engaged · verify_absent_fail · examiner TPR/TNR |
runs 테이블 수집 rawrun 1건 = 1행. 러너가 INSERT(running) → 종료 시 UPDATE(completed)로 success·tokens·latency를 채운다. 비용·효율 축의 원천.
| 컬럼 | 메트릭 | 축 | 의미 / 저장 방식 |
|---|---|---|---|
success | pass@1 단위 | 정확 | exact-match(GAIA) 또는 format_valid(analysis). BOOLEAN |
format_valid | 형식 적합 | 정확 | FINAL ANSWER: 패턴 추출 성공. BOOLEAN |
status | 종료 상태 | 효율 | running / completed / crashed / timeout |
terminated_by | 종료 원인 | 효율 | approve / max_messages / error (loop_rate의 원천) |
total_turns | 턴 수 | 효율 | run 내 메시지 수. INT |
total_tokens | 총 토큰 | 비용 | 입력+출력. INT |
input_tokens / output_tokens | 입/출력 토큰 | 비용 | 분리 비용 추정. INT |
overhead_tokens | 오버헤드 토큰 | 비용 | 프레임워크 오버헤드. INT |
latency_ms | end-to-end 지연 | 효율 | run 전체 시간. INT |
escalated | escalation 신설(008) | 신뢰 | cheap tier 게이트 실패→프론티어 이관. BOOLEAN |
failure_stage / root_cause | 실패 라벨 (2차) | 정확 | MAST taxonomy 6스테이지·14모드. 현재 수동(NULL) |
judge_meta | 판정 메타 (2차) | 정확 | LLM-judge 결과. 현재 NULL(결정론 채점 선호) |
temperature / seed / max_messages | 재현성 좌표 | — | A/B 통제 변수. REAL/INT |
model_name / attempt | 모델·회차 | — | pass@k 회차 식별. TEXT/INT |
migrations/001_init.sql(runs) · 011_failure_taxonomy.sql(failure_stage/root_cause 시드) · 008_cppx_grounding.sql(escalated). 불변식: status≠completed OR success NOT NULL · failure_stage→root_cause 필수 · UNIQUE(batch_id,task_id,attempt).events 테이블 + eval_meta JSONB 수집 raw이벤트 단위 trace. TraceLogger가 AutoGen run_stream을 받아 20컬럼 INSERT. 이종 교차검증 판정은 eval_meta JSONB에 반구조화 저장.
| 컬럼 | 메트릭 | 축 | 의미 |
|---|---|---|---|
message_type | 이벤트 유형 | — | agent_message / tool_call / tool_result / tool_error / handoff / selector_decision / final_answer / evaluator_score |
agent_name / agent_role | 발화자 | — | 어느 에이전트가 어느 역할로 |
tool_name / tool_args / tool_result / tool_error | 도구 호출 전문 | 근거 | 도구별 행동 추적 (result 2KB 절단 + tool_result_hash) |
selected_next_agent / selector_reason | 라우팅 결정 | 효율 | {reason_code, summary} 구조화. selector 토폴로지 전용 |
tokens / input_tokens / output_tokens / latency_ms | 이벤트 단위 비용/지연 | 비용 | run 집계의 원천 |
content_truncated | 본문 절단 | — | 8KB 초과 여부 |
eval_meta JSONB 키 이종 교차검증 + per-claim| JSON 키 | 메트릭 | 축 | 의미 |
|---|---|---|---|
ok | 검증 통과 | 신뢰 | 이종 검증기 verdict(boolean) |
supported | claim_verified_rate 단위 | 신뢰 | 출처가 클레임을 지지하는가 |
hallucination | 환각 여부 | 신뢰 | 날조 판정 |
confidence | 검증 신뢰도 | 신뢰 | 0~1 |
label | 판정 라벨 | 신뢰 | supported / misattributed / … |
claim_id / claim_text | per-claim 근거 | 신뢰 | 클레임별 검증 단위 |
cited_ids EXP-190 §4.2 | per-claim 출처 | 근거 | 다이제스트 attribution. "출처 (없음)" 결함 해소 |
cost_usd | 검증 비용 | 비용 | 검증자 1콜 단가 |
verify_latency_ms | 검증 지연 | 효율 | 이종 검증 소요 |
009_evaluator_score.sql(eval_meta) · tracing/logger.py(_mask_secrets 단일지점) · tracing/mapping.py(event→message_type). tool_call↔result 짝은 call.id 전파로 보장(DB CHECK 아님).mv_batch_summary) 도출 집계배치×팀×레벨 단위 집계. materialized view라 배치 종료 시 REFRESH 필요(안 하면 stale). 헤드라인 메트릭 대부분이 여기에 있다.
| 메트릭 | 축 | 정의 | 좋은 방향 | 수식 근원 |
|---|---|---|---|---|
pass_at_1 ⭐ | 정확 | 첫 시도 정답률 | ↑ | AVG(success::int) |
format_invalid_rate | 정확 | 형식 위반율 | ↓ | 1 - AVG(format_valid) |
loop_rate | 효율 | 비종결(루프)율 | ↓ | terminated_by='max_messages' 비율 |
avg_turns | 효율 | run당 턴 수 | ↓(보통) | AVG(total_turns) |
avg_tokens | 비용 | run당 평균 토큰 | ↓ | AVG(total_tokens) |
tokens_per_success ⭐ | 비용 | 성공 1건당 토큰(가성비) | ↓ | SUM(tokens)/SUM(success) |
p95_latency | 효율 | 꼬리 지연(tail) | ↓ | PERCENTILE_CONT(0.95) |
n_runs | — | run 수 | — | 집계 모수 |
p95_latency(_ms 아님). 배치 메타데이터는 별도 batches 테이블이 없어 runs.started_at MAX로 파생. 출처: migrations/002_views.sql.mv_passk) 도출 집계같은 태스크를 k회 반복해 실력의 상한/하한을 잰다. temp>0 샘플링에서만 의미.
| 메트릭 | 축 | 정의 | 해석 |
|---|---|---|---|
pass_any | 정확 | k회 중 1회라도 성공 | 실력의 상한(가능성) |
pass_all | 정확 | k회 모두 성공 | 실력의 하한(안정성) |
k | — | 시도 회차 | pass_any−pass_all 크면 flaky(self-consistency 낮음) |
pass^k(k번 모두 성공)가 강건성 지표로 제안됨 — pass_all이 정확히 이 개념. 본 repo metrics.html §5 참조.mv_tool_summary) 도출 집계도구별 호출·에러·지연. 도구 과다사용/실패 회피 탐지의 원천.
| 메트릭 | 축 | 정의 |
|---|---|---|
calls | 효율 | 도구별 호출 수 |
errors | 근거 | 도구별 에러 수(빈결과/예외) |
avg_latency | 효율 | 도구별 평균 응답시간 |
일반 뷰라 즉시 최신. 정확도(success)와 독립적으로 근거품질을 잰다 — "맞았다"와 "근거가 있다"는 다르다.
v_research_grounding / _summary| 메트릭 | 축 | 정의 | 좋은 방향 | 비고 |
|---|---|---|---|---|
cite_precision | 근거 | 인용한 것 중 정답 출처 비율 | ↑ | 헛인용 벌 (FP 분모) |
cite_recall | 근거 | 정답 출처 중 인용한 비율 | ↑ | 누락 벌 (FN 분모) |
cite_f1 ⭐ | 근거 | P·R 조화평균(겹침) | ↑ | 정답(pass@1)과 거의 결정. 단 illusory 가능 |
sources_present / sources_present_rate | 근거 | SOURCES 줄 존재 여부/율 | ↑ | "달기는 했나"(맞는지는 cite_f1) |
hops | — | 멀티홉 단계(1-hop/2-hop) | — | 난도 분해 축. 2-hop에서 함의 격차 폭발 |
v_analysis_grounded / _summary| 메트릭 | 축 | 정의 | 함정 |
|---|---|---|---|
grounded_pct ⭐ | 근거 | 검색이 실결과 반환한 run 비율 | 호출≠성공(차단 시 빈손) — migration 010이 재정의 |
n_search / avg_search_calls | 효율 | 검색 호출 수 | — |
n_search_ok / avg_search_ok | 근거 | 성공 검색 수 | grounded_pct의 분자 |
grounded | 근거 | run 단위 grounded 여부 | BOOLEAN (n_search_ok≥1 AND not simulated) |
v_cppx_grounding / _summary| 메트릭 | 축 | 정의 |
|---|---|---|
ground_ratio = n_grounded/n_facts | 근거 | 문제 아티클 사실 인용율 |
objective_correct | 정확 | 목적함수 방향(max/min) 정확 여부 |
objective_correct_rate | 정확 | 배치 단위 방향 정확율 |
structure_pass_rate | 정확 | 구조(4축 섹션) 통과율 |
n_facts / n_grounded | 근거 | 사실 총수 / 인용된 수 |
006(research_grounding) · 008(cppx_grounding) · 010(v_analysis_grounded, 성공 기준 재정의) · research/scorer.py(score_citations).critic/검증자가 틀린 걸 제대로 잡았는지를 잰다. false_approval이 가장 치명적 신호.
v_verification_quality| 메트릭 | 축 | 정의 | 신호 |
|---|---|---|---|
critic_engaged | 신뢰 | critic 개입 여부 | 검증 활성 |
critic_routes / critic_msgs | 효율 | critic 경유/발화 수 | — |
revisions | 효율 | 수정 턴 수 | self-repair 활동 |
false_approval | 신뢰 | 오답인데 APPROVE (1종 오류) | ↓ 치명 |
useful_rejection | 신뢰 | 오답 정당 반려 (진짜 가치) | ↑ |
verify_absent_fail | 신뢰 | 검증 없이 실패 | 종료설계 문제 |
v_run_features (피처 엔지니어링용)| 메트릭 | 축 | 정의 |
|---|---|---|
n_events / agent_msgs / handoffs | 효율 | 이벤트/발화/인계 수 |
tool_calls / tool_results / tool_errors / any_tool_err | 근거 | 도구 행동 요약 |
selector_calls | 효율 | 라우팅 호출 |
revisions / verifications | 신뢰 | 수정/검증 횟수 |
distinct_tools / truncated_results / evaluator_scores | — | 도구 다양성/절단/검증 이벤트 |
first_tool_seq / final_seq | — | 첫 도구/최종 답 시퀀스 |
migrations/017_hierarchy_views.sql(v_runs, v_run_events) · v_verification_quality · v_run_features. 일반 뷰(REFRESH 불필요).DB에 컬럼이 없고, scorer/guard 모듈이 답·이벤트를 받아 그 자리에서 계산. cli grounding-score 같은 명령으로 배치 채점 시에만 산출된다.
| 메트릭 | 축 | 모듈 | 정의 |
|---|---|---|---|
recency | 근거 | recency.py:score_text | 최신성(연도/기준시점). 텍스트 프록시 |
report_sources | 근거 | 본문 파생 | 리포트 내 출처 URL 수 (불안정) |
hallucination_risk | 신뢰 | grounding_guard.py | recency≥0.5 인데 grounded↓ = 환각 위험 |
search_success_rate | 근거 | grounding_guard.py | 검색 호출 중 실결과 비율 |
field_accuracy | 정확 | extract/scorer.py | 문서 필드 부분점수 (exact-match 완화) |
exec_acc | 정확 | sql/scorer.py | SQL 실행결과 멀티셋 일치 (denotation) |
valid_rate | 정확 | sql/scorer.py | SQL 실행가능율(에러 없이 실행) |
겹침(overlap) 메트릭이 illusory임이 데이터로 드러나면서 신설한 측정. 시스템에 원래 없던 "이종 채점·함의 깊이·검증기 신뢰도"를 끼워 넣는다.
misattributed로 거부 (2-hop 4건 중 2건). → "인용 존재 ≠ 함의"(V6) 실증.| 메트릭 | 축 | 출처 | 정의 | 실측 결과 |
|---|---|---|---|---|
citation_F1_entailment 핵심 | 근거 | research/scorer.py:score_citations_entailment | ALCE식 NLI 함의 기반 인용 채점(gold 불요). recall(전체 cited가 claim 함의?) + precision(leave-one-out으로 load-bearing 측정). 이종 검증기(claude -p)를 NLI 대용 | 겹침 F1=1.00인데 함의 F1=0.67 → over-citation 적발 |
claim_verified_rate 핵심 | 신뢰 | eval_meta.supported 집계 | 다른 모델이 출처에 비추어 클레임 지지 판정 비율 | 2-hop 0.50 → 1.00 (decompose v2) |
misattribution | 신뢰 | eval_meta.label='misattributed' | 답·인용 doc_id는 맞으나 출처가 클레임을 지지 않음 | 겹침이 놓치는 환각 서브타입 (2-hop 2/4) |
per-claim cited_ids | 근거 | eval_meta.cited_ids (EXP-190 §4.2) | 클레임별 인용 doc_id 저장 → 다이제스트 attribution | "출처 (없음)" 결함 해소 |
examiner TPR/TNR | 신뢰 | probe 스크립트 | 정답 TP율 / 오답 TN율 → 검증기 변별력 | TPR=TNR=1.0 (rubber-stamp 아님) |
ws-robust pass@1 | 정확 | ws-강건 재채점 | 공백 정규화 후 진짜 정답률 | 게이트 0.75 → 진짜 1.00 |
false_negative_count | 정확 | probe | 게이트가 오답으로 오판한 정답 수 | 공백 brittleness 적발 (007 케이스) |
over_decomposition dedup | 신뢰 | EXP-195 | 중복 클레임 수 (exact-string 안전망) | 2hop-01: 클레임 2 → 1 |
research/scorer.py:61-97(score_citations_entailment) · workers/cli_verifier.py(claude -p 이종 검증) · docs/PERSONAL_MAS_EVAL_RUN_20260624.md(probe 실측).대시보드·비교·실험 판정에서 가장 많이 쓰이는 신호 (초록 좌테두리). 이 8개만 봐도 시스템 건강도가 보인다.
| 메트릭 | 축 | 왜 1순위 |
|---|---|---|
pass@1 | 정확 | 정답 헤드라인 (단, brittleness 인공물 주의 → ws-robust 교차) |
tokens_per_success | 비용 | 정확도×비용 동시 반영 — "비싼 정답"과 "싼 정답" 구분 |
loop_rate | 효율 | max_messages 종료율 — 종료설계·프롬프트 결함의 첫 신호 |
p95_latency | 효율 | 꼬리 지연 — 평균이 좋아도 p95가 나쁘면 UX 붕괴 |
grounded_pct | 근거 | 실검색 성공률 — "검색한 척 환각"과 "진짜 검색" 분리 |
cite_f1 | 근거 | 인용 정확도 — 단 함의(citation_F1_entailment)로 교차검증 필수 |
claim_verified_rate | 신뢰 | 이종 검증 통과율 — 환각·misattribution 잡는 진짜 신호 |
false_approval | 신뢰 | 오답 승인 — 검증자가 가짜로 일하면 시스템 전체가 거짓말 |
+ 주위 공백 brittleness 인공물 — 실제 pass@1은 1.0. ws-robust pass@1으로 복원해야 진짜.claim_verified_rate(0.50)만이 이를 잡음 → 함의 메트릭이 진짜 KPI.cite_f1, SOURCES_present, grounded_pct)은 illusory 가능 — 함의(citation_F1_entailment, claim_verified_rate)와 교차 검증해야 진짜 신호(EXP-190/209, V6 라이브 실증).