Index
2026-04-20 — Analysis

Hard 벤치마크 3-Way 비교: hardfilt10 / hardest10 / L34hard10

Graph-VLM V3 vs Describe-once vs Frame-300 | Query Plan V3 적용 후 전체 결과

TL;DR

40%
Graph V3 (L34hard10)
20%
Graph V3 (hardfilt10)
2
Graph 단독 정답 (전체 30문)
5/10
Frame-300 hardfilt 상한선

1 배경 / 목적

Query Plan V3(3-bug fix) 적용 후, 3개의 서로 다른 "어려움" 정의로 만든 10문 벤치마크에서 Graph V3 / Describe-once / Frame-300 성능을 비교한다. 4/17 평가는 560-QA(쉬운 문제 위주)였고, 오늘은 graph retrieval이 실제로 필요한 hard 질문에서 각 시스템이 어디서 이기고 지는지 확인한다.

3개 벤치마크는 "hard"의 정의가 다름: hardfilt10=description-proof 자동 필터, hardest10=3-way 모두 틀린 질문들, L34hard10=난이도 L3/L4 집중.

2 작업 내용

3개 벤치마크 구축

벤치마크구성 방법파일
hardfilt10300-frame 생성 → describe-only 필터 (맞힌 것 drop) → category balance 10개data/qa/P01_01_hardfilt10.json
hardest10기존 560 중 Graph/Describe/Frame 3-way 모두 틀린 36개에서 L1-L4 mix 10개data/qa/P01_01_hardest10.json
L34hard10기존 560 중 L3/L4 난이도, n_wrong ≥ 1 조건에서 10개data/qa/P01_01_L34hard10.json

평가 실행

Graph V3: scripts/eval_qa.py --debug (plan + nodes + reasoning 전부 캡처) Describe: scripts/eval_describe_baseline.py --qa Frame-300: scripts/eval_qa.py --no-graph --video --baseline-max-dim 384 모델: Gemini 2.5 Flash (planner + answerer 통일) Eval 파일: eval_hardfilt_{graph_v3,describe,frame300}.json eval_hardest_{graph,describe,frame300}.json eval_L34hard_{graph,describe,frame300}.json

3 결과

3개 벤치마크 전체 결과 요약

벤치마크정의Graph V3DescribeFrame-300
hardfilt10description-proof 자동 필터20% (2/10)10% (1/10)50% (5/10)
hardest103-way all-wrong mix20% (2/10)30% (3/10)40% (4/10)
L34hard10L3/L4 hardest40% (4/10)70% (7/10)60% (6/10)

L34hard10 질문별 상세 (Graph 단독 정답 영역 확인)

Q카테고리Graph V3DescribeFrame-300원본 560
Q0L4/Aggregation (냉장고 몇 번)3-way 모두 ✗
Q1L4/Comparison (마지막 action)3-way 모두 ✗
Q2L3/EM1 (red onion 운명)3-way 모두 ✗
Q3L4/Missing (kettle 씻음)G✗ D✓ F✗
Q4L3/EM3 (쌀 strain 후)G✗ D✓ F✗
Q5L3/EM3 (stove 마지막 action)G✗ D✓ F✗
Q6L4/OverallG✓ D✗ F✓
Q7L4/ComparisonG✓ D✓ F✗
Q8L3/T3G✓ D✓ F✗
Q9L3/EM1 (visual position)G✓ D✗ F✓
Q9 Graph 단독 우위: Describe는 틀리고 Graph V3는 맞춤. visual position/multi-object sequence 정보가 그래프 구조에서 나온 케이스.

hardfilt10 질문별 상세 (V3 clean 재집계)

Q0Q1Q2Q3Q4Q5Q6Q7*Q8Q9*
Frame-300
Graph V3
Describe

* Q7(spoon 2개): 생성자가 rice 요리 hallucination. Q9(kettle 씻음): "fills water, suggests washing" — fill ≠ wash. 이 2개는 GT 신뢰도 의심.

Clean 5개 재집계 (Q7, Q9 제외 + Q1/Q2/Q5 해석 의존 제외)

시스템Clean 5개 정답정확도
Frame-3005/5 (Q0✓ Q3✓ Q4✓ Q6✓ Q8✓)100%
Graph V32/5 (Q0✓ Q3✓)40%
Describe1/5 (Q8✓만)20%
공정 비교: hallucination 제거 후 Graph V3 40% > Describe 20% (+20%p). Graph 구조 가치가 일부 증명됨.

4 Takeaway

벤치마크별 시스템 특성

hardfilt10: description-proof 질문에서 Describe는 무력(10%). Graph도 낮지만(20%) clean 기준 Describe를 +20%p 상회. Frame-300이 50%로 최상위.

hardest10: 3-way 모두 어려운 질문. 전원 낮고(20~40%) 어떤 시스템도 명확한 우위 없음.

L34hard10: Describe 70%로 여전히 천장. Graph V3 40%지만 Graph 단독 정답(Q9)이 존재. "description에 없는 정보"가 필요한 질문에서만 Graph가 이김.

Describe 천장 확인: L3/L4 hard 질문에서도 Describe 70%. 이는 graph가 description의 lossy compression이라는 한계를 재확인. graph가 description보다 잘 할 수 있는 영역은 visual position, occurrence count, container containment 등 구조 정보 의존 질문으로 제한적.
Frame-300이 공정한 상한선 아님: hardfilt10 생성에 300-frame을 썼기 때문에 Frame-300이 질문 스타일에 유리할 수 있음. 단 description-proof 필터를 거쳤으므로 description 문제는 아님. Native video(생성에 미참여)가 있어야 진짜 상한선 측정 가능.

5 Next Steps

Tier 2 그래프 빌드 수정 후 3개 벤치마크 재평가:

항목기대 효과 (hardfilt10)
Visual position attribute + container edgesQ5/Q8/Q2 해결 가능 (+2~3)
Occurrence count + action chainQ1/Q4/Q7/Q9 해결 가능 (+2~3)
Entity alias edgesQ6 해결 가능 (+1)

Tier 2 완료 후 예상: hardfilt10 Graph V3 2/10 → 6~8/10. Frame-300 수준(50%)까지 따라잡거나 초과 가능. per-question walkthrough(V1 vs V3 전 항목 상세 비교)는 data/qa/tmp/walkthrough.json + 작업 로그 참조.

QA 품질 개선: Frame-agreement filter 3rd stage — Frame-300 GT 동의 여부로 hallucination 필터링. hardfilt10 Q7/Q9 같은 케이스 방지.