Atom Drift를 위한 결정론적 인용(Deterministic Citations) 및 CI 게이트(CI Gates)
요약
Atom Drift 시스템의 환각 문제를 해결하기 위해 근거 없는 인용을 제거하는 결정론적 인용 메커니즘과 CI 게이트를 도입했습니다. 또한 YouTube URL 인용 형식 개선, 연구 코퍼스 영구 저장, CI 이미지 최적화를 통한 인프라 안정성 및 효율성을 강화했습니다.
핵심 포인트
- 근거 없는 인용 문구를 자동으로 제거하는 결정론적 스캔 기능 구현
- CI 게이트 도입을 통해 I/O 컨트랙트 변경 시 발생하는 파이프라인 드리프트 방지
- 불필요한 CUDA 스택을 제거하여 CI 이미지 크기 및 빌드 효율성 최적화
- YouTube oEmbed를 활용한 인용 형식 자동화 및 연구 코퍼스 메타데이터 저장 개선
2026-06-23에 배포된 내용
우리는 오늘 콘텐츠 내에서 발생하는 "환각(hallucinated)"된 권위 문제를 해결하는 데 상당한 시간을 할애했습니다. fix(citations): deterministically strip ungroundable source attributions (PR #1892)에서, 우리는 작성자가 연구 코퍼스(research corpus)에 실제 대응하는 URL이 없음에도 불구하고 "Ai Insights에 따르면..." 또는 "X와 같은 전문가들은 ...라고 확인합니다"와 같은 문구를 지어내는 사례를 처리해야 했습니다. 운에 맡겨야 하는 LLM(Large Language Model)에 부정적 프롬프트(negative prompt)를 시도하는 대신, 우리는 _citation_match.strip_unmatched_attributions를 구현했습니다. 이는 atom의 scan-4 단계에서 실행되는 고정밀 스캔으로, 근거를 제시할 수 없는 경우 인용 프레임(attribution frame)을 제거하면서도 그 바탕이 되는 주장(claim)은 유지합니다.
산문을 정리하는 동안, 우리는 정식 블로그 경로(canonical blog path)에서 두 가지 운영상의 공백을 발견했습니다 (PR #1894). 첫째, 가공되지 않은 YouTube URL이 단순 링크로 배포되고 있었습니다. 이제 우리는 YouTube의 oEmbed 엔드포인트(endpoint)를 호출하여 author_name을 가져오고, 이를 적절한 [채널명](url) 인용 형식으로 변환합니다. 둘째, 연구 코퍼스(research corpus)를 런타임(runtime)에 QA 레일(QA rails)로 전달하고는 있지만, 이를 영구적으로 저장(persisting)하지 않고 있다는 점을 깨달았습니다. 우리는 build_task_metadata를 업데이트하여 해당 컨텍스트(context)를 pipeline_versions.stage_data로 전달함으로써, 운영자가 검토 중에 특정 주장의 근거가 무엇이었는지 실제로 확인할 수 있도록 했습니다.
인프라 측면에서는 파이프라인 안정성에 큰 문제가 발생할 뻔했습니다. qa.audio atom의 컨트랙트 핑거프린트(contract fingerprint) 변경 사항(PR #1876)이 graph_def 리시드(reseed) 없이 배포되었고, 이로 인해 pipeline_architect.assert_graph_def_current가 제 역할을 수행하여 드리프트(drift)를 포착함으로써 운영 환경의 Stage-2 비디오 레인(video lane)이 사실상 중단되었습니다. 이러한 일이 재발하는 것을 방지하기 위해 CI 게이트(CI gate, PR #1889)를 추가했습니다. 이는 graph_def_contract_fingerprints.json에 커밋된 핑거프린트 스냅샷을 사용합니다. 만약 개발자가 graph_defs를 업데이트하지 않고 atom의 I/O 컨트랙트를 수정하면, 빌드가 실패(red)하며 모든 오래된 노드(stale node)의 이름을 명시적으로 알려줍니다.
또한, GPU가 없는 러너(runner)에서 2.5 GB 크기의 CUDA wheel을 가져오는 것을 방지하기 위해 CI 이미지의 공격적인 프루닝(pruning, 가지치기)을 수행했습니다 (PR #1891). sentence-transformers를 선택적 추가 기능(--extras rerank)으로 표시함으로써, 워커(worker) 및 OSS 단독(standalone) 이미지에서 불필요한 CUDA 스택을 제거했습니다 (PR #1896). 해당 서비스들은 어차피 CPU 기반의 교차 인코더(cross-encoder) 리랭커(reranker)만을 사용하기 때문입니다.
마지막으로, 몇 가지 삶의 질(quality-of-life) 개선 사항이 있습니다. qa-gates require/advisory를 통해 CLI에서 QA 레일(rails)을 승격시켰으며 (PR #1858), poindexter-brain-daemon이 재빌드되지 않고 재시작만 되어 brain 코드 변경 사항이 실제로 배포되지 않던 deploy-worker.ps1의 무음 실패(silent failure) 문제를 수정했습니다 (PR #1887).
시스템이 더욱 견고해지고 있습니다. 컨트랙트 드리프트 게이트(contract drift gates)와 결정론적 인용 제거(deterministic citation stripping)를 통해, 우리는
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기