Field Log · Entry

Advanced RAG 평가: RAGAS·ARES·RAGChecker (10/10)

RAG를 retrieval, context, claim generation, trajectory, operations 층으로 나누고 deterministic·human·model judge와 실험 manifest로 release를 판정하는 평가 구조

오늘의 결론

  • 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별 관측값으로 풀어야 합니다.

Advanced RAG를 retrieval context claim trajectory operations 층으로 분해하고 세 평가 계층과 release gate로 연결한 실험 설계

그림 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 setdomain judge, scalable estimatesynthetic shift, calibration set 필요
RAGCheckerretrieval/generation fine-grained diagnosisreference claim 활용first failure와 trade-off 분석claim extraction·entailment 의존
RAGVUEexplainable reference-free diagnosticmodel judge + calibrationstructured explanation, claim faithfulness2026 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

  1. Overall quality-cost-latency
  2. Slice heatmap
  3. First-failure distribution
  4. Retrieval → context → claim funnel
  5. Judge calibration status
  6. Release-to-release paired delta와 CI
  7. 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

SystemA LocalB Multi-hopC Visual/GlobalCostMain Hypothesis
S0baselinebaselinebaselinelowlexical floor
S1mediumsemantic + rerank
S2medium-highwider context
S3↑ globalhighrelation + community
S4highlayout/visual preservation
S5preservepreservepreserveadaptiveroute 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 변경 시 재평가한다.

스스로 확인하기

  1. 정답이 맞아도 RAG evaluation에서 실패로 볼 수 있는 경우는 무엇인가?
  2. RAGAS, ARES, RAGChecker는 각각 어떤 evaluation 문제를 중심으로 해결하는가?
  3. Model judge를 사용하면서도 human calibration set이 필요한 이유는 무엇인가?
  4. Oracle evidence 실험으로 retrieval과 generation 병목을 어떻게 구분하는가?
  5. 평균 점수보다 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로 확장합니다.

참고자료