결론. 6축은 즉흥이 아니라 학계 서베이의 평가 골격 + Microsoft AutoGenBench 설계와 일치하는 "프로덕션 평가형" 정석. (단 메트릭 구현은 아직 경량 룰 기반 프로토타입 — judge 보정·human 라벨이 다음 단계.)
토폴로지 4종
토폴로지
구성
Coordination 영향
Tool 복잡도
Solo
1 에이전트
낮음
낮음
Pipeline
Planner → Searcher → Writer (고정 순서)
중간
중간
Orchestrator
Lead 동적 선택 + 병렬 Searcher ×2
높음
높음
Critic
위 + 검증 루프
최고
최고
발견. 토폴로지 복잡도는 성능을 보장하지 않는다. 강한 모델 앞에서 구조를 복잡화한 개입은 대부분 실패했다(EXP-60·63).
3개선 힌트가 되는 메트릭 후보 — 4 카테고리
지표는 품질·비용·행동·근거 네 축으로 묶어 동시에 읽는다.
카테고리
지표
정의 · 읽는 법
좋은 방향
품질
success / format_valid
정규화 후 exact-match / “FINAL ANSWER” 형식 준수
↑
pass@k
k회 중 1회 이상 성공. pass@1과의 갭 = 불안정성
↑, 갭↓
cite_f1
F1(예측 출처, gold 출처)
↑
비용
total_tokens / estimated_cost_usd
input+output, 가격 스냅샷
↓ (품질 유지 시)
tokens_per_success / latency·turns
정답 1건당 비용 / 루프 낭비 탐지
↓
행동
tool_error_rate
에러 ÷ 호출
→ 0
loop_rate
max_messages 도달 run ÷ 전체 = 수렴 실패율
↓
근거
grounded%
run당 웹검색 성공(결과≥1) — 호출이 아님
↑
recency / citation_count
현재 시점 텍스트 신호 / claim↔source 쌍
질 우선
핵심 구분.grounded%는 검색 성공에 기반한 견고한 사실 신호다. recency는 텍스트 신호로 환각으로도 생성될 수 있다. 관측 사례: 한 팀이 recency 0.84(최신처럼 보임)인데 grounded 0.0(실제 검색 차단) — 이 간극이 환각 위험을 나타낸다.
관찰 원칙. pass@1 단독으로 판단하지 않고 tokens · latency · grounded% 를 한 화면에서 함께 본다.
4Score를 올리는 법 — 개선 레버 분류
19개 실험에서 통한 레버와 통하지 않은 레버가 뚜렷하게 갈렸다 (채택 13 · 기각 5 · 보류 2).
통함 도구 · 데이터 · 입력
멀티포맷 파서 (도구 기능)
첨부 경로 주입 (도구 입력)
형식 프롬프트 수정 (입력 스키마)
status-aware 검색 (데이터 재정렬)
web_search 활성화 (도구 추가)
과검색 제거 · 도구 dedupe (데이터 필터)
안 통함 프롬프트 · 구조
grounding 강제
RoundRobin 토폴로지 (구조 변경, 97→7%)
disambig 프롬프트 (80→27%)
max_messages 축소
출처 인용 강제 (양↑ → 불안정)
교훈. 좋은 베이스라인에서는 도구·데이터의 국소(surgical) 수정이 프롬프트 튜닝·구조 변경보다 신뢰롭다.
Trade-off (능력 시도 · 비용↑) — 예: EXP-65 검색 켜기, 토큰 29.4k→97.1k 단 검색 전부 실패→환각(아래 정정)
실증 궤적 — 분석 도메인 (반도체 동향, v2 → v6) · grounded 정정본
version
n_search
grounded%
total_tokens
latency_mean
실제 상태
v2 stale
0
0%
29.4k
280s
2024 지식 (베이스라인)
v3 (EXP-65)
17.3
0%
97.1k
602s
검색 17회 전부 실패 → 환각
v4 lite (EXP-66)
5.7
0%
17.8k
209s
비용↓ 그러나 여전히 환각
v5 cited (EXP-67)
5.0
0%
28.6k
306s
기각 — 환각 위 인용만 과다
v6 (EXP-68)
4.0
100%
21.3k
177s
실제 grounded (51% 성공) — 유일
정정 — 측정이 환각을 잡은 사례. 초기엔 "grounded 0→100% (v3부터)"로 판정했으나, 후속 검증(6/14~15)에서 v3~v5는 키리스 DDG 차단으로 검색 205건 중 성공 0건 → 2026 수치를 환각한 것으로 드러났다. grounded 지표를 "호출"→"성공(결과≥1)"으로 정정하니 실제 grounded는 v6(35/68=51%)가 유일. recency(최신처럼 보임)만 높고 grounded=0인 것이 환각의 정확한 신호였다 → 이후 검색 백엔드를 키리스 DDG에서 firecrawl로 교체.
5방향별 평가셋 — 어떤 능력엔 어떤 셋
평가셋
타겟 능력
대표 수치 / 구성
GAIA L1/L2
도구 사용 · 첨부 처리
v1 39.2% → v5 57.4% (+18.2pp), 첨부 0% → 43.4%
research-bench (eval_ph1)
최신 사실 grounding · 인용
5주제 × 2팀 = 10 run (LLM경쟁·Nvidia실적·미중규제·한국수출 + DP 대조군)
eval-corpus (지식그래프)
멀티홉 추론 · 출처 정밀도(cite_f1)
1~3 hop 태스크 · gold 경로
매핑. 최신성 → 웹검색셋 · 도구 역량 → GAIA · 멀티홉 → corpus · 검색 무관 경계 테스트 → DP(control).
6DB · 평가 시스템 구조
eval_v2는 PostgreSQL 22테이블 정규화 trace DB에 run_stream을 무손실로 적재한다. 모든 지표는 DB 실측에서 산출된다.
신뢰 원칙. 검증되지 않은 지표는 사용하지 않는다. 모든 수치는 코드·DB 실측으로 대조한다 (run당 ~47 events 검증).
7메트릭 변화추이 — eval_ph1 라이브 실측
실험 과정에서 메트릭이 실제로 어떻게 움직였나. 배치 analysis_*_20260613(EXP-65~68 그라운딩 플라이휠) · research_*_20260612(EXP-60 토폴로지). 아래는 Grafana 라이브 대시보드와 동일 쿼리의 정적 렌더.
① 토큰(k) ② 지연(s) ③ 검색 횟수 (품질 pass@1=1.00 전 구간 고정) ④ EXP-60 토폴로지 회귀 · 색: 회색 baseline · 황 trade-off · 초록 채택 · 빨강 기각
읽는 법. v3에서 검색을 켰지만 17회 전부 실패→환각(grounded 0). v4·v6은 비용을 줄였고, 실제로 근거를 잡은 건 v6뿐(검색 4회 전부 성공). pass@1=1.00은 환각이어도 통과해 이 차이를 못 잡으니 grounded(성공)을 봐야 한다. EXP-60은 토폴로지 1변수만 바꿔 pass@1 0.967→0.067 붕괴. 라이브:Grafana 대시보드 →
그 외 주요 메트릭 추이 — 한 선그래프 (정규화, ★grounded 포함)
분석 플라이휠 v2→v6, 각 메트릭 최대=1.0 정규화 — ★grounded 성공률(v6에서만 0→1.0) + pass@1·format_valid(1.00 고정 앵커) + 대화 턴 · input/output 토큰 분해 · 지연 · 검색수.
핵심 — "마지막 단계가 좋아졌다"는 이 한 줄에만 보인다. 빨간 ★grounded 라인이 v6에서만 0→1.0으로 치솟는다. 비용(토큰·지연)으로는 오히려 v4가 더 싸 보여 v6의 우위가 안 드러나고, pass@1·format_valid은 환각이어도 1.00이라 무력하다. → 실제 개선을 보려면 grounded 성공을 봐야 한다. (출처수/cite_f1은 이 analysis 배치엔 trace DB 미적재라 제외.)
선그래프 메트릭의 실제 값 (정규화 전 원시 수치, v2→v6)
version
pass@1
format_valid
grounded%
total_turns
input_tokens k
output_tokens k
total_tokens k
latency_mean s
n_search
n_search_ok
v2 stale
1.00
1.00
0%
5.0
15.6
13.8
29.4
280
0
0
v3 (EXP-65)
1.00
1.00
0%
10.3
65.5
31.6
97.1
602
17.3
0
v4 lite (EXP-66)
1.00
1.00
0%
5.0
8.7
9.1
17.8
209
5.7
0
v5 cited (EXP-67)
1.00
1.00
0%
6.3
13.7
14.9
28.6
306
5.0
0
v6 (EXP-68)
1.00
1.00
100%
5.0
11.6
9.7
21.3
177
4.0
4.0
정규화 선그래프는 "모양(추이)" 비교용이고 이 표가 실제 값이다. total_turns·latency·n_search는 v3에서 정점(과욕) → v6는 n_search 4회로 최소이면서 전부 성공(n_search_ok=4).
latency 집계 주의 — mean이지 p95가 아니다. 분석 배치는 버전당 n=3이라 p95(tail)는 무의미(3점의 p95≈최댓값). 단 EXP-60(n=30)에선 mean이 tail 악화를 가렸다: round_robin이 mean 194s < 234s로 빨라 보였지만 p95 435s > 390s로 tail은 더 나쁨. → 표본이 커지면 latency는 p50/p95로 보는 게 정직하다.
그래프 메트릭 사전 — 개념 · 계산식 · 출처
메트릭
개념 (무엇을·왜)
계산식
출처 · 방향
pass@1
첫 시도 정답률 — 한 번에 맞히나
성공 run ÷ 전체 run (attempt=1). 성공 = 정규화 후 exact-match(분석 도메인은 Task 충족)
runs.success · ↑
pass@k / pass^k
pass@k=k회 중 1회+ 성공(잠재력) · pass^k=k회 전부 성공(일관성)
pass@k ≈ 1−(1−p)k · pass^k = pk
반복 run · ↑
format_valid
출력이 "FINAL ANSWER" 형식을 지켰나
형식 준수 run ÷ 전체 (파서 검사)
runs.format_valid · ↑
total_tokens
한 run이 쓴 토큰 합 = 비용 프록시
input_tokens + output_tokens
runs.total_tokens · ↓
input_tokens / output_tokens
프롬프트(누적 입력) vs 생성(추론 포함) 토큰
모델 usage 합산
runs.input/output_tokens · ↓
latency집계=mean
run 벽시계 소요 시간. 여기선 평균(mean) — 분석 배치 n=3이라 p95 등 백분위수는 무의미(3점의 p95≈최댓값). 운영/SLO에선 p50·p95·p99 권장(tail이 UX 결정).