Field Log · Entry
Advanced RAG 평가: RAGAS·ARES·RAGChecker (10/10)
오늘의 결론
- RAG 평가의 목적은 leaderboard 숫자가 아니라 어느 module의 어떤 failure가 답을 망쳤는지 찾는 것입니다.
- Ground-truth deterministic metric, human judgment, model judge는 서로 대체재가 아니라 신뢰도가 다른 측정 계층입니다.
- RAGAS는 빠른 reference-free loop, ARES는 synthetic data·경량 judge·human calibration, RAGChecker는 retrieval/generation의 claim-level 진단에 강점이 있습니다.
- Graph·multi-hop·multimodal·long-context·learned policy는 서로 다른 gold artifact와 stress test가 필요합니다.
- Release는 평균 점수 하나가 아니라 hard slice, confidence interval, cost, safety regression을 모두 통과해야 합니다.
앞 글까지 우리는 retrieval policy까지 학습했습니다. 이제 system은 다음처럼 복잡합니다.
query router
→ text / graph / visual retrieval
→ multi-hop loop
→ reranker
→ context packing / long context
→ grounded generator
→ verifier
→ answer
최종 answer가 틀렸다고 “LLM 문제”라고 부르면 개선할 수 없습니다.
가능한 first failure:
parser → chunk → index → route → query → retrieval → graph path
→ rerank → context packing → evidence use → claim → citation → stop
평가 framework는 이 chain을 다시 module별 관측값으로 풀어야 합니다.
그림 1. Metric은 층별로 배치하고, deterministic check·human label·calibrated model judge를 조합한다. Experiment manifest가 같아야 두 run을 비교할 수 있다.
“좋은 답” 하나로는 부족하다
다음 두 system은 최종 정답률이 같을 수 있습니다.
System A
gold evidence retrieved → faithful answer
System B
gold evidence missed → model memory로 정답 추측 → unrelated citation
둘 다 exact match는 1이지만, B는 corpus가 업데이트되면 실패하고 source audit도 통과하지 못합니다.
반대 상황도 있습니다.
System C
gold evidence retrieved → generator misreads negation → wrong answer
System D
gold evidence missed → correct abstention
Answer accuracy만 보면 D가 낮아 보일 수 있지만 high-risk 환경에서는 올바른 행동입니다.
평가의 다섯 층
Layer 1. Retrieval
필요한 evidence가 candidate pool에 들어왔는가?
Layer 2. Context Construction
Rerank·dedup·hydration·packing 후 model이 받은 context에 필요한 evidence가 남았는가?
Layer 3. Generation
Answer의 atomic claim이 context에 의해 지지되는가? 빠진 claim은 없는가?
Layer 4. Trajectory
Agent가 적절한 source를 선택하고 불필요한 loop 없이 충분한 evidence에서 멈췄는가?
Layer 5. Operations
Latency, cost, freshness, ACL, safety, reproducibility SLO를 만족하는가?
answer quality
= f(retrieval, context, generation, trajectory, operations)
각 층의 metric이 최종 outcome과 어떻게 연결되는지도 봐야 합니다.
평가 Data Record 설계
type RAGEvaluationCase = {
caseId: string;
query: string;
conversation?: Message[];
queryType: string[];
riskTier: "low" | "medium" | "high";
referenceAnswer?: string;
referenceClaims: Array<{
claimId: string;
text: string;
required: boolean;
supportingEvidenceIds: string[];
}>;
goldEvidence: Array<{
evidenceId: string;
documentId: string;
version: string;
page?: number;
bbox?: [number, number, number, number];
graphPath?: string[];
validTime?: string;
}>;
expectedBehavior: "answer" | "partial" | "abstain";
split: "train" | "validation" | "test";
createdAt: string;
labelProvenance: string;
};
Reference answer text만 저장하지 않습니다. Atomic claim과 supporting evidence를 분리해야 retrieval과 generation을 진단할 수 있습니다.
Atomic Claim으로 Answer 분해하기
Answer:
"Orion은 2024년에 Nova를 인수했고 현재 CEO는 Mina Park다."
Claim C1: Orion acquired Nova.
Claim C2: acquisition time is 2024.
Claim C3: Orion's current CEO is Mina Park.
각 claim을 source와 연결합니다.
{
"C1": ["source-17#span-3"],
"C2": ["source-17#span-3"],
"C3": ["source-92#span-8"]
}
이제 다음을 구분할 수 있습니다.
- Correctness: claim이 사실인가?
- Faithfulness: 제공된 context가 claim을 지지하는가?
- Completeness: 필요한 reference claim을 모두 답했는가?
- Citation correctness: 표시한 source가 해당 claim을 지지하는가?
Model memory로 맞힌 claim은 correctness는 높고 faithfulness는 낮을 수 있습니다.
측정 계층 1: Deterministic Metric
Code로 명확히 계산할 수 있는 것은 model judge에 맡기지 않습니다.
Retrieval
Recall@k = retrieved gold evidence / all gold evidence
Precision@k = relevant retrieved evidence / k
MRR = 1 / first relevant rank
DCG@k = Σᵢ (2^relᵢ - 1) / log₂(i + 1)
nDCG@k = DCG@k / ideal_DCG@k
Operations
- retrieval call 수
- token 수
- latency p50/p95/p99
- model·tool cost
- cache hit rate
- timeout·retry rate
- ACL rejection·violation count
- index freshness lag
Contract
- JSON schema validity
- citation source ID existence
- cited source ACL accessibility
- answer length ceiling
- tool call budget violation
Deterministic check는 싸고 재현성이 높습니다.
측정 계층 2: Human Judgment
Human은 비싸지만 다음에 필요합니다.
- Judge calibration gold set
- Ambiguous relevance adjudication
- Domain-specific correctness
- Source authority 판단
- Harm·usefulness·tone
- Novel failure discovery
Annotation Rubric
claim_support:
2: source directly entails the claim
1: source partially supports or requires a small inference
0: source does not support the claim
answer_completeness:
2: all required claims answered
1: some required claims missing
0: core request unanswered
abstention:
correct: evidence is insufficient and answer abstains
over_abstain: sufficient evidence exists but answer abstains
under_abstain: insufficient evidence but answer asserts a claim
Annotator에게 “좋아 보이나요?”라고 묻지 않습니다. Claim, source, validity time, query constraint를 함께 보여 줍니다.
Inter-Annotator Agreement
두 annotator의 일치율뿐 아니라 chance agreement를 보정한 Cohen’s kappa나 ordinal label에 맞는 agreement statistic을 사용할 수 있습니다. Agreement가 낮으면 model보다 rubric이 불명확한 것일 수 있습니다.
측정 계층 3: Model Judge
Model judge는 대규모 반복 평가를 빠르게 하지만 측정 도구일 뿐 ground truth가 아닙니다.
장점
- Long-form answer를 semantic하게 비교합니다.
- Claim extraction과 entailment를 자동화합니다.
- Reference-free evaluation을 가능하게 합니다.
- 실패 이유를 자연어로 설명할 수 있습니다.
위험
- Position·length·style bias
- 자신과 같은 model family 선호
- Prompt wording sensitivity
- Domain fact 오류
- Source에 없는 world knowledge 사용
- Model update에 따른 score drift
- 같은 오류에 대한 correlated failure
Judge Contract
{
"metric": "claim_support",
"label": "supported",
"confidence": 0.82,
"claim": "...",
"evidence_spans": ["source-3:120-188"],
"explanation": "source explicitly states ...",
"judge_model": "judge@version",
"prompt_hash": "sha256:..."
}
Score만 저장하지 말고 evidence span과 explanation을 audit artifact로 남깁니다.
RAGAS: 빠른 Reference-Free Evaluation Loop
RAGAS는 retrieval context, generated answer, question 사이의 관계를 여러 metric으로 평가하는 reference-free framework를 제안했습니다. Original paper의 핵심 목적은 human ground truth 없이도 RAG component를 빠르게 비교하는 것입니다.
대표 dimension을 개념적으로 보면 다음과 같습니다.
Context relevance / precision:
retrieved context가 question에 집중돼 있는가?
Faithfulness:
answer claim이 context에 의해 지지되는가?
Answer relevance:
answer가 question에 직접 대응하는가?
Library version에 따라 metric 이름과 구현은 달라질 수 있으므로 논문 개념과 현재 API를 구분합니다.
RAGAS가 유용한 곳
- Chunk size나 top-k의 빠른 비교
- Prompt 변경 regression
- Reference answer가 부족한 초기 dataset
- CI의 smoke evaluation
RAGAS만으로 부족한 곳
- Domain judge가 틀릴 수 있습니다.
- Graph path, visual bbox, ACL은 별도 metric이 필요합니다.
- Reference-free judge가 사실 correctness를 보장하지 않습니다.
- Score 변화가 어느 first failure인지 충분히 말하지 못할 수 있습니다.
Release gate에서는 human-calibrated set과 deterministic metric을 함께 씁니다.
ARES: 경량 Judge와 Human Calibration
ARES는 context relevance, answer faithfulness, answer relevance를 자동 평가합니다. 핵심 구성은 다음과 같습니다.
in-domain passages and queries
→ synthetic training data
→ fine-tune lightweight LM judges
→ small human-annotated evaluation set
→ prediction-powered inference (PPI)
→ system-level estimates
왜 경량 Judge인가
매 sample을 큰 model API로 평가하는 비용을 줄이고 domain-specific decision boundary를 학습할 수 있습니다.
PPI 직관
Model prediction을 많은 unlabeled example에 적용하되, 작은 human-labeled sample에서 측정한 prediction error로 estimate를 보정합니다.
system estimate
≈ mean(model predictions on many examples)
+ correction from human-labeled sample
정확한 estimator와 confidence interval은 ARES/PPI 구현을 따라야 합니다. 위 식은 직관입니다.
ARES 논문 결과의 범위
원 논문은 KILT, SuperGLUE, AIS의 여러 knowledge-intensive task에서 수백 개 수준의 human annotation을 사용한 평가를 보고합니다. 우리 domain에도 같은 label 수와 성능이 보장되는 것은 아닙니다. Judge calibration error를 직접 측정합니다.
Synthetic Judge Data 위험
- Generator style을 judge가 shortcut으로 학습합니다.
- Negative가 너무 쉬워 decision boundary가 약합니다.
- 실제 production error가 synthetic template에 없습니다.
- Train generator와 judge가 같은 편향을 공유합니다.
Human hard-negative set과 production failure sample을 포함합니다.
RAGChecker: Retrieval과 Generation을 Claim 단위로 진단하기
RAGChecker는 RAG의 modular nature와 long-form response 평가 문제를 다루기 위해 retrieval·generation module의 fine-grained diagnostic metric suite를 제안합니다.
핵심 아이디어를 단순화하면 다음과 같습니다.
reference answer → reference claims
retrieved contexts → context claims / support relations
model response → response claims
compare at claim level
→ retriever missed what?
→ generator used what?
→ generator added what?
진단 예시
Gold claims: C1, C2, C3
Retrieved support: C1, C2
Generated claims: C1, C4
Diagnosis:
- Retrieval miss: C3
- Generation omission: C2 was retrieved but unused
- Hallucination / unsupported: C4
최종 F1 하나보다 처방이 명확합니다.
C3 miss → retriever / query / index 개선
C2 unused → context packing / generator 개선
C4 added → grounding / verifier / abstention 개선
RAGChecker 논문은 meta-evaluation에서 human judgment와의 correlation을 비교하고 여러 RAG system의 trade-off를 분석합니다. 특정 model judge와 domain에서 같은 correlation이 재현되는지는 별도 확인해야 합니다.
RAGVUE: 설명 가능한 Diagnostic View
2026년 EACL System Demonstrations의 RAGVUE는 single score가 retrieval, reasoning, grounding failure를 가린다는 문제에서 출발합니다.
논문이 제시하는 reference-free diagnostic dimension은 다음을 포함합니다.
- retrieval quality
- answer relevance와 completeness
- strict claim-level faithfulness
- judge calibration
각 metric에 structured explanation을 제공하고 manual metric selection과 automated agentic evaluation을 지원합니다.
가져갈 설계 원칙
metric value
+ evidence span
+ explanation
+ judge calibration status
= auditable diagnostic
2026년 demo system의 comparative result를 모든 domain의 우월성으로 일반화하지 않습니다. 우리 corpus에서는 judge calibration과 failure coverage를 다시 검증합니다.
RAGAS·ARES·RAGChecker·RAGVUE 비교
| Framework | 중심 목적 | Supervision | 강점 후보 | 주의점 |
|---|---|---|---|---|
| RAGAS | 빠른 다차원 RAG 평가 | reference-free 중심 | 개발 loop, baseline 비교 | judge bias, domain metric 추가 필요 |
| ARES | 자동 system 평가와 통계 보정 | synthetic + lightweight judge + small human set | domain judge, scalable estimate | synthetic shift, calibration set 필요 |
| RAGChecker | retrieval/generation fine-grained diagnosis | reference claim 활용 | first failure와 trade-off 분석 | claim extraction·entailment 의존 |
| RAGVUE | explainable reference-free diagnostic | model judge + calibration | structured explanation, claim faithfulness | 2026 demo 범위, domain 재검증 |
하나만 선택할 필요는 없습니다.
CI smoke → RAGAS-style fast metrics
weekly regression → claim-level RAGChecker-style diagnosis
large-scale estimate → ARES-style calibrated lightweight judge
interactive audit → RAGVUE-style explanation view
release decision → deterministic + human + calibrated judges
RGB: RAG Robustness를 네 축으로 보기
Benchmarking Large Language Models in Retrieval-Augmented Generation 연구의 RGB benchmark는 RAG에서 필요한 능력을 네 관점으로 분석합니다.
Noise Robustness
Irrelevant document가 섞여도 answer evidence를 사용하는가?
Negative Rejection
Corpus에 답이 없을 때 잘못 답하지 않고 거부하는가?
Information Integration
여러 document의 정보를 조합하는가?
Counterfactual Robustness
Retrieved context가 model의 prior knowledge와 충돌할 때 어떻게 행동하는가?
이 네 축은 generic stress suite로 유용합니다. Counterfactual context가 항상 진실이라는 뜻은 아니므로 source authority와 task contract를 명시해야 합니다.
31–39편 Architecture별 추가 Metric
Knowledge Graph RAG
- entity resolution precision/recall
- relation extraction precision
- edge provenance coverage
- path recall@k
- temporal validity accuracy
- community report source coverage
Multi-hop RAG
- supporting-fact recall
- joint evidence completeness
- bridge entity accuracy
- hop별 first failure
- query drift rate
- no-progress stop accuracy
Hierarchical RAG
- leaf recall
- parent hydration coverage
- abstraction-level match
- summary-to-leaf faithfulness
- graph dangling lineage
Multimodal RAG
- page recall@k
- region recall@k
- bbox overlap / grounding
- table cell relation accuracy
- figure-caption pair recall
- numeric visual reading accuracy
Long Context vs RAG
- evidence position sensitivity
- distractor robustness
- context utilization
- prefill latency
- route regret
- prompt cache hit/miss
Trained Retriever·Reranker·Generator
- hard-negative slice recall
- nDCG and evidence-set recall
- no-answer calibration
- claim support
- model-index compatibility
- pre/post training regression
Learned Retrieval Policy
- action accuracy
- redundant call rate
- source routing accuracy
- policy regret
- budget violation
- stop reason accuracy
- reward hacking behavior
Generic RAG score 하나로 이 artifact들을 대체할 수 없습니다.
Evaluation Dataset Slice
평균은 dominant easy query에 끌려갑니다. Slice를 먼저 정의합니다.
dimensions:
scope:
- single_fact
- single_document
- multi_document
- corpus_global
reasoning:
- direct
- comparison
- multi_hop
- temporal
evidence:
- exact_phrase
- paraphrase
- table
- chart
- graph_path
- conflicting
answerability:
- answerable
- partial
- unanswerable
operations:
- fresh
- stale_version
- strict_acl
- source_timeout
각 slice의 sample 수와 confidence interval을 보고합니다. 3개 sample의 100%를 일반화하지 않습니다.
Split Leakage 방지
Document Leakage
같은 paragraph의 paraphrase가 train과 test에 들어갑니다.
Entity Leakage
동일 entity template을 외운 model이 일반화처럼 보입니다.
Time Leakage
미래 문서가 training이나 synthetic query 생성에 들어갑니다.
Judge Leakage
평가 judge가 benchmark answer를 학습했을 수 있습니다.
Retrieval Leakage
Test gold passage가 prompt example이나 query rewrite prompt에 노출됩니다.
split first
→ freeze test corpus
→ generate train synthetic data only
→ mine negatives within train
→ lock prompts before test
Oracle Ablation: Ceiling과 Bottleneck 찾기
Retrieval Oracle
Gold evidence를 generator에 직접 넣습니다.
production retrieval + generator = 0.68
oracle evidence + generator = 0.89
→ retrieval/context ceiling gap 0.21
Generator Oracle
Retrieved context를 human이 읽어 답할 수 있는지 평가합니다.
Reranker Oracle
Candidate pool의 gold를 항상 위에 둡니다.
Route Oracle
Query마다 여러 route를 실행해 quality floor를 만족하는 가장 싼 route를 선택합니다.
Component Ablation
full system
− query rewrite
− graph channel
− reranker
− context compression
− verifier
− iterative retrieval
한 번에 한 component를 바꾸되 interaction effect도 별도 factorial experiment로 확인할 수 있습니다.
First-Failure Label
first_failure:
- source_missing
- parse_error
- index_stale
- route_wrong
- query_wrong
- retrieval_miss
- entity_resolution_wrong
- rerank_drop
- context_budget_drop
- generator_omission
- unsupported_claim
- citation_wrong
- stop_early
- operation_timeout
- none
Downstream failure를 여러 개 label할 수 있지만 first failure 하나를 정하면 team ownership과 우선순위가 선명해집니다.
Judge Calibration
Calibration Set
- clear positive
- clear negative
- partial support
- negation
- temporal conflict
- source authority conflict
- answerable vs unanswerable
- adversarial fluent hallucination
측정
- accuracy / precision / recall / F1
- confusion matrix
- confidence calibration
- human agreement
- slice별 error
Bias Test
1. Swap answer order
2. Remove style and verbosity differences
3. Change source IDs to neutral IDs
4. Shuffle context order
5. Test judge's own model family vs another family
6. Repeat with temperature 0 and fixed seed where possible
Judge Version Drift
Judge model이 update되면 같은 frozen calibration set을 다시 실행합니다.
judge_release:
model: judge-v5
prompt_hash: sha256:...
parser: judge-parser-v3
calibration_set: judge-gold-v8
calibration_report: report-208
Old score와 new score를 한 chart에 섞지 않습니다.
Statistical Uncertainty
Paired Comparison
System A와 B를 같은 query에 실행합니다. Query별 score difference를 사용해야 query difficulty를 통제할 수 있습니다.
Paired Bootstrap
for _ in range(10_000):
sample_ids = resample(case_ids, replace=True)
delta = mean(score_b[i] - score_a[i] for i in sample_ids)
deltas.append(delta)
ci = percentile(deltas, [2.5, 97.5])
Query를 resampling unit으로 둡니다. 같은 query의 여러 claim을 독립 sample처럼 세면 uncertainty를 과소평가할 수 있습니다.
Binary Outcome
같은 case에서 A만 맞음, B만 맞음의 불균형을 보는 McNemar test 같은 paired method를 고려할 수 있습니다.
Multiple Comparison
Chunk size 20개, top-k 10개, prompt 12개를 모두 비교해 최고 결과만 고르면 우연한 winner를 고를 가능성이 커집니다. Validation에서 선택하고 locked test에는 최종 후보만 실행합니다.
Practical Significance
통계적으로 유의해도 0.2% 향상을 위해 latency가 80% 늘면 배포 가치가 없을 수 있습니다. 최소 효과 크기와 budget을 미리 정합니다.
Experiment Manifest
experiment_id: exp-2026-07-16-graph-rag-07
git_commit: abc1234
dataset:
cases: rag-eval-v21
corpus_snapshot: corpus-v188
split: locked-test-v4
pipeline:
parser: parser-v9
chunker: semantic-512-v3
embedding: embed-v7
indexes:
text: hnsw-v212
graph: graph-v31
visual: colpali-v5
router: route-policy-v4
retriever: hybrid-rrf-v6
reranker: rankt5-v3
context_packer: pack-v11
generator: grounded-lm-v8
verifier: claim-check-v4
prompts:
answer_hash: sha256:...
judge_hash: sha256:...
runtime:
max_steps: 6
token_budget: 18000
deadline_ms: 5000
temperature: 0
evaluation:
deterministic_metrics: metrics-v6
judge: judge-v5
human_rubric: rubric-v4
Manifest 없이 “어제보다 좋아졌다”는 재현할 수 없습니다.
Evaluation Run Artifact
{
"case_id": "case-184",
"experiment_id": "exp-...",
"trace_id": "trace-...",
"retrieved_evidence_ids": ["ev-7", "ev-9"],
"packed_evidence_ids": ["ev-9"],
"answer_claims": ["c1", "c2"],
"claim_support": { "c1": true, "c2": false },
"citations": { "c1": ["ev-9"], "c2": [] },
"first_failure": "context_budget_drop",
"latency_ms": 1882,
"cost": 0.021,
"judge_version": "judge-v5"
}
Aggregate table에서 raw trace로 drill-down할 수 있어야 합니다.
Release Gate
quality:
overall_supported_answer_rate:
min: 0.84
max_regression: 0.005
high_risk_claim_faithfulness:
min: 0.97
unanswerable_abstention_recall:
min: 0.92
retrieval:
gold_evidence_recall_at_20:
min: 0.93
multi_hop_joint_recall_at_10:
min: 0.85
operations:
p95_latency_ms:
max: 3500
mean_cost_per_query:
max: 0.03
safety:
acl_leak_count:
max: 0
prompt_injection_success_count:
max: 0
statistics:
overall_delta_ci_lower_bound:
min: -0.005
값은 예시입니다. Risk tier별로 다르게 정합니다. ACL leak은 평균으로 상쇄할 수 없는 zero-tolerance metric입니다.
Online Evaluation
Offline gold set만으로 실제 usage를 모두 알 수 없습니다.
Online Signal
- task completion
- user correction
- citation click-through
- follow-up reformulation
- escalation to human
- latency abandonment
- explicit helpfulness
Click은 relevance ground truth가 아닙니다. Position와 exposure bias가 있습니다.
Canary
1% low-risk traffic
→ safety invariant
→ latency/cost guardrail
→ supported-answer sample audit
→ expand or rollback
Shadow Evaluation
새 pipeline이 같은 query를 처리하되 user에게 답하지 않습니다. Counterfactual quality는 human/model judge로 비교하고 cost를 측정합니다.
Continuous Evaluation
RAG는 corpus가 변하므로 한번 통과한 test가 영원히 유효하지 않습니다.
new documents
new query patterns
model update
price change
index rebuild
judge drift
→ evaluation refresh
Cadence 예시
- Commit: schema·unit·small smoke set
- Daily: frozen regression set
- Weekly: large model-judge set + slice report
- Before release: locked test + human audit + security suite
- Monthly: production failure mining + dataset refresh
- Model/index/judge update: full recalibration
Failure를 Dataset으로 되돌리기
production trace
→ redact sensitive data
→ first-failure triage
→ human adjudication
→ add to hard validation slice
→ fix component
→ locked regression
Test set을 train에 사용하면 안 됩니다. Regression case는 고정하고, 별도의 train derivative를 만듭니다.
Dashboard에서 보여 줄 것
최소 View
- Overall quality-cost-latency
- Slice heatmap
- First-failure distribution
- Retrieval → context → claim funnel
- Judge calibration status
- Release-to-release paired delta와 CI
- Raw trace drill-down
Retrieval-to-Claim Funnel
gold evidence exists 100%
indexed correctly 97%
retrieved top-20 91%
survives rerank top-5 86%
packed into context 83%
used in answer 76%
cited correctly 71%
가장 큰 drop이 다음 개선 지점입니다.
Capstone: 이번 10편을 한 실험으로 묶기
가상의 enterprise corpus에서 세 query class를 만듭니다.
Class A · local policy lookup
Class B · multi-hop entity relation
Class C · chart + global synthesis
Candidate Systems
S0: BM25 baseline
S1: hybrid dense + reranker
S2: parent-child + long reader
S3: graph + multi-hop
S4: text + visual hybrid
S5: learned route over S1–S4
Experiment Matrix
| System | A Local | B Multi-hop | C Visual/Global | Cost | Main Hypothesis |
|---|---|---|---|---|---|
| S0 | baseline | baseline | baseline | low | lexical floor |
| S1 | ↑ | ↔ | ↔ | medium | semantic + rerank |
| S2 | ↑ | ↔ | ↑ | medium-high | wider context |
| S3 | ↔ | ↑ | ↑ global | high | relation + community |
| S4 | ↔ | ↔ | ↑ | high | layout/visual preservation |
| S5 | preserve | preserve | preserve | adaptive | route avoids unnecessary cost |
화살표는 결과가 아니라 사전 hypothesis입니다. 실제 수치로 검증합니다.
Mandatory Ablation
S5 full
− learned router → fixed route
− graph → text only
− visual → OCR only
− reranker → retriever order
− verifier → raw generator
Success Criterion
not: S5 has the highest average score
yes: S5 meets per-slice quality floors,
has no safety regression,
and improves the quality-cost frontier
흔한 오해와 처방
1. RAGAS Score가 높으면 Production Ready다
Reference-free judge는 빠르지만 domain correctness, ACL, graph path를 모두 보장하지 않습니다.
처방: deterministic·human·model judge 계층을 결합합니다.
2. Answer가 맞으면 Retrieval도 맞았다
Model memory로 추측했을 수 있습니다.
처방: gold evidence recall과 claim faithfulness를 함께 봅니다.
3. LLM Judge가 Human보다 싸니 Human은 필요 없다
Judge calibration과 novel failure discovery에 human label이 필요합니다.
처방: 작은 high-quality calibration set을 지속 유지합니다.
4. 평균이 오르면 배포한다
High-risk slice나 unanswerable query가 악화될 수 있습니다.
처방: slice floor와 zero-tolerance safety gate를 둡니다.
5. 0.5점 차이는 의미 있다
Sampling variation과 judge noise 범위일 수 있습니다.
처방: paired comparison, confidence interval, effect size를 보고합니다.
6. Test가 커질수록 항상 좋다
Label noise와 easy duplicate가 많으면 진단력이 낮습니다.
처방: coverage, hard slice, label quality, freshness를 관리합니다.
7. Judge Model을 바꿔도 Score를 이어 붙인다
측정 ruler가 바뀐 것입니다.
처방: frozen calibration set을 재실행하고 version boundary를 표시합니다.
Production 체크리스트
- retrieval·context·generation·trajectory·operations metric이 분리돼 있다.
- reference answer를 atomic claim과 evidence로 분해했다.
- deterministic check를 model judge에 맡기지 않는다.
- human rubric과 adjudication 절차가 있다.
- model judge에 version·prompt hash·calibration report가 있다.
- RAGAS식 reference-free score를 release 단독 기준으로 쓰지 않는다.
- ARES식 judge data에 production hard negative를 포함한다.
- RAGChecker식 claim funnel로 first failure를 찾는다.
- graph path·visual bbox·multi-hop joint evidence metric이 있다.
- unanswerable·contradiction·counterfactual stress set이 있다.
- document·entity·time split leakage를 검사한다.
- oracle evidence·reranker·route ablation이 있다.
- paired delta와 confidence interval을 보고한다.
- experiment manifest로 모든 component version을 고정한다.
- slice floor·cost ceiling·zero-tolerance safety gate가 있다.
- raw trace로 drill-down할 수 있다.
- production failure를 redaction·adjudication 후 regression으로 되돌린다.
- corpus·model·index·judge 변경 시 재평가한다.
스스로 확인하기
- 정답이 맞아도 RAG evaluation에서 실패로 볼 수 있는 경우는 무엇인가?
- RAGAS, ARES, RAGChecker는 각각 어떤 evaluation 문제를 중심으로 해결하는가?
- Model judge를 사용하면서도 human calibration set이 필요한 이유는 무엇인가?
- Oracle evidence 실험으로 retrieval과 generation 병목을 어떻게 구분하는가?
- 평균 점수보다 slice별 floor와 confidence interval이 release에 중요한 이유는 무엇인가?
이 글로 Advanced RAG 실전 설계 10편을 마칩니다. 시리즈 첫 글에서 graph를 정의하고, multi-hop·hierarchy·multimodal·long context를 거쳐 retriever·reranker·generator·policy 학습과 평가까지 연결했습니다.
다음 학습 묶음은 LLM 사전학습 데이터 파이프라인에서 시작합니다. RAG Agent의 기반 model을 더 깊이 이해하기 위해 LLM 학습 데이터, pretraining·instruction tuning·preference optimization, quantization·serving·distributed inference로 확장합니다.
참고자료
- RAGAs: Automated Evaluation of Retrieval Augmented Generation
- ARES: An Automated Evaluation Framework for Retrieval-Augmented Generation Systems
- RAGChecker: A Fine-grained Framework for Diagnosing Retrieval-Augmented Generation
- Benchmarking Large Language Models in Retrieval-Augmented Generation — RGB
- RAGVUE: A Diagnostic View for Explainable and Automated Evaluation of RAG