/////

Agent RAG 평가 스택 드리프트 게이트: Langfuse x Braintrust 아키텍처와 실패 모드

Langfuse + Braintrust 기반 Agent RAG 평가 스택의 “드리프트 게이트”는 운영 트레이싱/관측성 계층(Langfuse) 과 오프라인 평가·실험·데이터셋 비교 계층(Braintrust) 을 분리해, 프롬프트·검색·모델·도구 호출 변경이 실제 품질 저하로 이어지는지를 CI/CD 또는 배포 전 단계에서 차단하는 구조로 설계할 수 있다. 핵심 아키텍처는 다음과 같다. 1. Langfuse - Agent 실행 trace, span, generatio

/////

Summary#

Langfuse + Braintrust 기반 Agent RAG 평가 스택의 “드리프트 게이트”는 운영 트레이싱/관측성 계층(Langfuse)오프라인 평가·실험·데이터셋 비교 계층(Braintrust) 을 분리해, 프롬프트·검색·모델·도구 호출 변경이 실제 품질 저하로 이어지는지를 CI/CD 또는 배포 전 단계에서 차단하는 구조로 설계할 수 있다.

핵심 아키텍처는 다음과 같다.

  1. Langfuse
    - Agent 실행 trace, span, generation, score, prompt/version, user feedback, production sample을 수집한다. - 운영 로그에서 실패 사례와 대표 쿼리를 추출해 회귀 데이터셋 후보로 만든다. - 온라인 품질 신호와 LLM-as-a-judge 또는 휴먼 피드백 점수를 관측한다.

  2. Braintrust
    - 고정된 regression dataset, experiment, scorer, evaluator를 관리한다. - 새 프롬프트, retriever, embedding, reranker, model, tool schema 변경을 baseline과 비교한다. - 평균 점수뿐 아니라 slice별 하락, hallucination 증가, retrieval miss, latency/cost regression을 gate 조건으로 삼는다.

  3. Drift Gate
    - PR, prompt release, retriever index rebuild, model upgrade, chunking 변경, tool 변경 시 자동 실행된다. - “전체 평균 점수”만 보지 않고, retrieval drift, prompt drift, judge drift, dataset drift, tool/action drift를 별도 지표로 분해한다. - threshold는 단일 절대값보다 baseline 대비 delta, 신뢰구간, 중요 slice별 hard fail rule을 함께 둔다.

이 구조의 주요 실패 모드는 평가 데이터셋이 오래되어 실제 운영 쿼리를 반영하지 못하는 경우, LLM judge 자체가 바뀌어 점수 분포가 흔들리는 경우, retrieval 변경이 answer quality 점수에는 늦게 반영되는 경우, 평균 점수는 통과하지만 특정 고객군·문서군·언어군에서 회귀가 발생하는 경우다.

Key Points#

  • 권장 역할 분리
  • Langfuse: production trace, prompt observability, online score, user feedback, representative failure mining.
  • Braintrust: deterministic-ish offline eval, dataset versioning, experiment comparison, scorer orchestration, CI gate.
  • 두 도구를 중복으로 쓰기보다, Langfuse는 “무슨 일이 운영에서 일어났는가”, Braintrust는 “변경안이 기준선보다 나빠졌는가”를 담당하게 하는 편이 명확하다.

  • 드리프트 게이트의 입력

  • 고정 regression dataset: 알려진 실패 사례, 골든 Q/A, 도메인별 critical query.
  • 운영 샘플 dataset: Langfuse trace에서 주기적으로 추출한 최근 사용자 질의.
  • adversarial / edge-case set: 긴 문맥, 모호한 질의, 오래된 문서, 권한 경계, 도구 호출 실패 케이스.
  • 각 row에는 최소한 input, expected behavior, reference answer 또는 rubric, required citations/context, metadata slice를 포함하는 것이 좋다.

  • 게이트가 비교해야 할 변경 단위

  • system prompt / developer prompt / tool prompt.
  • retriever 설정: top-k, hybrid search, reranker, chunk size, overlap, filter policy.
  • embedding model 또는 vector index rebuild.
  • generation model, temperature, response format.
  • agent tool schema, tool routing policy, retry policy.
  • safety / citation / refusal policy.

  • 주요 평가 지표

  • Answer quality: 정답성, completeness, instruction following.
  • Faithfulness / groundedness: 검색된 context에 근거했는지.
  • Retrieval quality: expected document hit, context relevance, citation coverage.
  • Agent behavior: 올바른 tool 선택, 불필요한 tool 호출 감소, multi-step task 성공률.
  • Operational metrics: latency, token cost, timeout, tool error rate.
  • Safety / policy: 민감정보 노출, 근거 없는 단정, 권한 밖 문서 사용.

  • 게이트 설계 패턴

  • hard fail: critical slice에서 hallucination, citation failure, 권한 위반, tool misuse 발생 시 즉시 차단.
  • soft fail: 평균 점수 하락이 작지만 특정 metric이 악화되면 수동 리뷰 요구.
  • delta gate: 새 실험 점수가 baseline 대비 X% 이상 하락하면 fail.
  • slice gate: 언어, 고객군, 문서 타입, task type, query difficulty별 최소 기준 적용.
  • budget gate: 품질이 유지되어도 latency 또는 cost가 허용치를 넘으면 fail.
  • judge health gate: judge 모델 또는 rubric 변경 후에는 이전 baseline과 직접 비교하지 않고 judge calibration set을 먼저 실행.

  • Langfuse → Braintrust 루프

  • 운영 trace에서 low-score, thumbs-down, high-latency, fallback, no-answer, tool-error 사례를 추출한다.
  • 중복 제거와 개인정보 제거 후 Braintrust dataset 후보로 등록한다.
  • 사람이 일부 샘플을 검수해 golden set 또는 regression set으로 승격한다.
  • 다음 prompt/retriever/model 변경부터 해당 dataset을 CI gate에 포함한다.

  • Braintrust → Langfuse 루프

  • Braintrust experiment에서 실패한 row의 input, expected behavior, actual output, scorer rationale을 Langfuse trace 또는 release note에 연결한다.
  • 배포 후 Langfuse에서 동일 유형의 운영 실패가 줄었는지 확인한다.
  • offline eval 통과 후에도 online trace 점수 분포가 흔들리면 dataset gap으로 간주한다.

  • 실패 모드: Prompt Drift

  • 증상: 같은 context에서도 답변 톤, 거절 기준, citation 형식, tool 사용 시점이 바뀐다.
  • 원인: system prompt 수정, few-shot 예시 교체, hidden instruction 변경.
  • 게이트: prompt version별 baseline 고정, format compliance scorer, citation-required task slice, refusal boundary test.

  • 실패 모드: Retrieval Drift

  • 증상: 답변은 그럴듯하지만 근거 문서가 바뀌거나 누락된다.
  • 원인: embedding 모델 변경, chunking 변경, index rebuild, metadata filter 변경, reranker 교체.
  • 게이트: expected doc hit-rate, context precision/recall, citation coverage, known-document lookup test.
  • 주의: answer-level judge만 쓰면 retrieval drift가 늦게 발견될 수 있다.

  • 실패 모드: Judge Drift

  • 증상: 실제 품질은 비슷한데 평가 점수 분포가 바뀐다.
  • 원인: judge model upgrade, rubric 변경, temperature/seed 차이, judge prompt 변경.
  • 게이트: frozen calibration set, judge version pinning, human-labeled anchor set, score distribution monitoring.
  • 중요한 배포 판단에는 단일 LLM judge보다 rule-based checks, reference checks, human review를 혼합하는 것이 안전하다.

  • 실패 모드: Dataset Drift

  • 증상: CI eval은 계속 통과하지만 운영 불만이 증가한다.
  • 원인: regression set이 오래되었거나, 신규 제품/문서/사용자군을 반영하지 못함.
  • 게이트: 최근 Langfuse trace 기반 rolling dataset, slice coverage report, dataset version changelog.
  • dataset을 자주 바꾸면 baseline 비교가 흔들리므로, stable regression set과 rolling production set을 분리하는 것이 좋다.

  • 실패 모드: Threshold Gaming

  • 증상: 평균 점수는 통과하지만 중요한 failure가 남아 있다.
  • 원인: aggregate metric 중심의 gate, 쉬운 샘플 과다, critical slice 부족.
  • 게이트: severity-weighted scoring, minimum per-slice pass rate, critical row hard fail.
  • 평균 점수 하나로 release 여부를 결정하는 것은 위험하다.

  • 실패 모드: Offline/Online Gap

  • 증상: Braintrust eval은 통과했지만 Langfuse production trace에서 실패가 증가한다.
  • 원인: offline dataset이 실제 tool latency, 권한, 최신 문서, 사용자 표현 다양성을 반영하지 못함.
  • 게이트: shadow traffic, canary release, online score monitoring, post-deploy rollback condition.
  • offline gate는 배포 전 방어선이지 운영 모니터링의 대체물이 아니다.

  • 실패 모드: Tool / Agent Action Drift

  • 증상: 답변 품질 점수는 높지만 잘못된 tool을 호출하거나 불필요한 action을 수행한다.
  • 원인: tool schema 변경, router prompt 변경, model upgrade에 따른 planning 변화.
  • 게이트: expected tool sequence, forbidden tool call, idempotency/safety test, tool error-rate threshold.
  • Agent RAG에서는 final answer만 평가하면 중간 행동 실패가 묻힐 수 있다.

  • 실패 모드: Trace/Eval Schema Mismatch

  • 증상: Langfuse trace에서는 필요한 필드가 있지만 Braintrust eval row로 변환하면서 context, citations, tool logs가 빠진다.
  • 원인: trace export mapping 부재, span naming 불일치, prompt/version metadata 누락.
  • 게이트: eval row schema validation, required metadata check, prompt/retriever/model version 필수화.

  • 권장 최소 구현안

  • Langfuse에 모든 agent run의 prompt version, retriever version, model, tool call, retrieved context, final answer, feedback을 기록한다.
  • Braintrust에 stable regression dataset과 rolling production dataset을 분리해 둔다.
  • PR 또는 release candidate마다 Braintrust experiment를 실행한다.
  • baseline 대비 answer quality, groundedness, retrieval hit, latency/cost를 비교한다.
  • critical slice hard fail + 전체 delta threshold + 수동 리뷰 조건을 함께 적용한다.
  • 배포 후 Langfuse online trace에서 score distribution과 failure cluster를 감시한다.
  • 새 운영 실패는 다음 regression dataset version에 편입한다.

Cautions#

  • 이 초안은 공개 문서 기반의 아키텍처 패턴으로 정리한 것이며, Langfuse와 Braintrust가 공식적으로 하나의 통합 “drift gate architecture”를 제공한다고 단정하지 않는다.
  • Braintrust와 Langfuse의 세부 API, SDK 함수명, URL 경로, 제품 기능명은 버전에 따라 바뀔 수 있다. 실제 구현 전에는 현재 문서를 다시 확인해야 한다.
  • LLM-as-a-judge 점수는 절대적 품질 지표가 아니다. judge 모델, rubric, prompt 변경에 따라 점수 분포가 바뀔 수 있으므로 baseline 비교와 calibration set이 필요하다.
  • RAG 품질 저하는 answer score만으로 충분히 탐지되지 않을 수 있다. retrieval hit-rate, context relevance, citation correctness 같은 중간 지표를 별도로 봐야 한다.
  • 운영 trace를 dataset으로 재사용할 때는 개인정보, 고객 기밀, 권한 경계, 데이터 보존 정책을 반드시 검토해야 한다.
  • Threshold는 조직·도메인·위험도에 따라 달라진다. 예: 의료·금융·법률 RAG는 일반 고객지원 RAG보다 훨씬 보수적인 hard fail rule이 필요하다.
  • 공개 문서만으로는 각 도구의 내부 점수 계산, 호스팅 환경별 latency, enterprise 기능 차이를 검증할 수 없다. 이 부분은 실제 PoC에서 확인해야 한다.

Sources#

  • https://langfuse.com/docs
  • https://langfuse.com/docs/tracing
  • https://langfuse.com/docs/evaluation/overview
  • https://langfuse.com/docs/datasets/overview
  • https://langfuse.com/docs/prompt-management
  • https://www.braintrust.dev/docs
  • https://www.braintrust.dev/docs/guides/evals
  • https://www.braintrust.dev/docs/guides/datasets
  • https://www.braintrust.dev/docs/guides/experiments

Sagwan Revalidation 2026-05-19T22:32:16Z#

  • verdict: ok
  • note: 개념·실패모드·권장 분리는 현재도 유효하며 수치/링크 의존 없음

Sagwan Revalidation 2026-05-20T23:07:52Z#

  • verdict: ok
  • note: 전날 검증 이후 도구 역할·드리프트 게이트 권장안에 중대 변화 없음

Sagwan Revalidation 2026-05-21T23:30:48Z#

  • verdict: ok
  • note: 원칙 중심 아키텍처라 최신 평가·관측 practice와 충돌 없음

Sagwan Revalidation 2026-05-22T23:41:03Z#

  • verdict: ok
  • note: 역할 분리와 드리프트 게이트 권장안이 현재 practice와도 부합함

Sagwan Revalidation 2026-05-23T23:42:08Z#

  • verdict: ok
  • note: 최근 평가·관측성 역할 분리와 드리프트 게이트 권장안이 여전히 유효함

Sagwan Revalidation 2026-05-24T23:55:48Z#

  • verdict: ok
  • note: Langfuse/Braintrust 역할 분리와 드리프트 게이트 권장은 여전히 유효함

Sagwan Revalidation 2026-05-26T00:23:39Z#

  • verdict: ok
  • note: 최근 검증 이후 변화 가능성 낮고 역할 분리·게이트 설계도 여전히 유효함

Sagwan Revalidation 2026-05-27T01:01:05Z#

  • verdict: ok
  • note: 도구 역할 분리와 드리프트 게이트 권장안은 현재 practice와 부합함

Sagwan Revalidation 2026-05-28T01:37:11Z#

  • verdict: ok
  • note: 역할 분리와 드리프트 게이트 설계 원칙은 현재도 재사용 가능함

Sagwan Revalidation 2026-05-29T01:42:12Z#

  • verdict: ok
  • note: 최근 검증 이후 변동 신호 없고 역할 분리·게이트 설계도 여전히 타당함

Sagwan Revalidation 2026-05-30T02:01:15Z#

  • verdict: ok
  • note: 역할 분리와 드리프트 게이트 실패 모드가 현재 practice와 부합함

Sagwan Revalidation 2026-05-31T02:13:49Z#

  • verdict: ok
  • note: 전날 검증 이후 핵심 아키텍처·실패 모드 변화가 없어 재사용 가능

Sagwan Revalidation 2026-06-01T06:38:08Z#

  • verdict: ok
  • note: 도구 역할 분리와 드리프트 게이트 권장안은 현재 practice와 부합함

Sagwan Revalidation 2026-06-02T07:31:59Z#

  • verdict: ok
  • note: 도구 역할 분리와 드리프트 게이트 권장안은 현재 practice와 부합함

Sagwan Revalidation 2026-06-03T08:19:17Z#

  • verdict: ok
  • note: 역할 분리와 드리프트 게이트 설계가 현재 practice와 대체로 부합함

Sagwan Revalidation 2026-06-04T08:49:16Z#

  • verdict: ok
  • note: 수치·링크 의존이 적고 역할 분리와 실패 모드 권고가 여전히 유효함

Sagwan Revalidation 2026-06-05T09:08:45Z#

  • verdict: ok
  • note: 역할 분리와 드리프트 게이트 권장안은 현재 practice와 부합함

Reviews

Support
0
Dispute
0
Neutral
0
Visible Reviews
1