llm-as-a-judge

4 개의 포스트

2조 토큰을 카테고리 분류에 쓰면서 알게된 것들 (새 탭에서 열림)

당근 Taxonomy 팀은 방대한 중고거래 게시글과 서비스 데이터를 효율적으로 분류하기 위해 LLM 기반의 자동화 파이프라인인 'Taxonomy Management System'을 구축했습니다. 이 시스템은 Dataflow를 통한 고병렬 추론과 LLM as a Judge 방식의 평가 체계를 결합하여, 사람이 직접 수행하던 카테고리 관리와 라벨링 비용을 획기적으로 줄이면서도 1만 개 이상의 정교한 카테고리 체계를 안정적으로 운영하고 있습니다. 2조 토큰에 달하는 대규모 데이터를 처리하며 얻은 노하우를 통해, 단순 분류를 넘어 서비스 전반의 공통 데이터 언어를 구축하는 성과를 거두었습니다. **택소노미의 중요성과 자동화의 필요성** * 택소노미는 검색, 추천, 광고 등 서비스 전반에서 데이터를 통일된 방식으로 다루기 위한 계층적 카테고리 체계이자 공통 언어입니다. * 기존의 수동 분류 방식은 도메인 전문가의 리소스가 과도하게 소요되고, 사용자가 입력한 데이터만으로는 정밀한 분류(3-depth 이상)가 어렵다는 한계가 있었습니다. * LLM을 활용해 사용자가 입력하지 않은 세부 카테고리와 속성(브랜드, 색상, 재질 등)을 자동으로 추출하여 데이터의 표현력을 높였습니다. **Dataflow와 BigQuery 중심의 파이프라인 설계** * 초 단위의 응답 시간이 걸리는 LLM 추론을 대규모 배치 및 스트림으로 처리하기 위해 Apache Beam 기반의 Google Cloud Dataflow를 채택하여 병렬 처리 성능을 확보했습니다. * 추론 결과의 원천 데이터(Source of Truth)를 BigQuery에 적재하여 분석과 학습에 즉시 활용하고, 실시간 서비스가 필요한 경우 Kafka를 통해 피처 플랫폼으로 전달합니다. * 택소노미 정의, 파이프라인 설정, 모델 옵션(Gemini, GPT, Claude 등)을 YAML 파일로 관리하여 코드 수정 없이 유연하게 시스템을 운영할 수 있도록 설계했습니다. **LLM을 이용한 택소노미 생성 및 확장 전략** * 기존 1,400개 수준의 카테고리를 LLM 기반의 리서치와 실데이터 분석을 통해 6-depth, 10,000개 이상의 정교한 체계로 확장했습니다. * 신규 카테고리 후보가 발생하면 기존 데이터 할당 테스트와 회귀 평가(Regression)를 거쳐 품질이 검증된 경우에만 정식 택소노미로 편입시킵니다. * 다국어 지원 시 일관성을 유지하기 위해 DFS(깊이 우선 탐색) 방식으로 상위 카테고리의 번역 문맥을 하위 단계 LLM에게 전달하는 방식을 사용했습니다. **추론 전략 최적화와 품질 관리(LLM as a Judge)** * 단일 단계(Single Shot), 계층적(Hierarchical), 토너먼트(Two-stage) 방식 등 택소노미 규모에 맞는 다양한 추론 전략을 모듈화하여 교체 가능하게 구현했습니다. * 분류 결과의 정확도를 측정하기 위해 여러 모델이 투표하여 정답(Ground Truth)을 정하는 'LLM as a Judge' 방식을 도입했습니다. * 카테고리 정확도(Accuracy)뿐만 아니라 다중 라벨인 속성 데이터에 대해서는 정밀도(Precision)와 재현율(Recall) 지표를 상시 모니터링하여 프롬프트와 모델 변경의 효과를 즉각 검증합니다. **실용적인 결론 및 추천** 대규모 서비스에서 카테고리 분류를 자동화하려는 팀은 처음부터 완벽한 모델을 찾기보다, **다양한 LLM 전략을 실험할 수 있는 모듈형 파이프라인**과 **자동화된 평가 체계(LLM as a Judge)**를 먼저 구축하는 것이 중요합니다. 특히 데이터 소스가 다양해질 것에 대비해 이벤트 스트림과 배치 처리를 동시에 지원하는 인프라를 선택하고, 분류 결과가 실제 서비스 피처로 흐를 수 있는 파이프라인 구조를 설계할 것을 권장합니다.

배경 코딩 에이전트: 강력한 피드백 루프를 통한 예측 가능한 결과 (혼크, 3부) | 스포티파이 엔지니어링 (새 탭에서 열림)

스포티파이의 백그라운드 코딩 에이전트 'Honk'는 대규모 소프트웨어 유지보수를 자동화하기 위해 강력한 피드백 루프와 검증 시스템을 도입하여 예측 가능한 결과를 도출합니다. 에이전트가 인간의 직접적인 감독 없이도 올바른 코드를 생성하도록 빌드 시스템 추상화, 결정론적 검증기, 그리고 LLM 판사(Judge)를 결합한 다층 방어 체계를 구축했습니다. 이러한 설계는 에이전트가 신뢰할 수 없는 PR을 생성하는 것을 방지하고, 엔지니어의 검토 부담을 줄여 대규모 코드 변경의 안전성을 보장하는 데 결론적인 역할을 합니다. **에이전트의 주요 실패 유형과 위험성** * **PR 생성 실패:** 에이전트가 변경 사항을 만들어내지 못하는 경우로, 수동 작업이 필요하지만 시스템에 직접적인 해를 끼치지는 않는 경미한 문제입니다. * **CI 통과 실패:** 생성된 PR이 빌드나 테스트 과정에서 오류를 일으키는 경우이며, 이는 엔지니어가 반쯤 깨진 코드를 직접 수정해야 하는 번거로움을 유발합니다. * **기능적 부적절성:** CI는 통과하지만 논리적으로 틀린 코드를 생성하는 가장 위험한 단계로, 대규모 변경 시 발견하기 어렵고 자동화 시스템에 대한 신뢰를 근본적으로 훼손합니다. **검증 루프를 통한 신뢰성 확보** * **독립적 검증기(Verifier) 활용:** 코드베이스의 특성(예: Maven의 pom.xml 존재 여부)에 따라 자동으로 활성화되는 검증 도구를 통해 에이전트가 변경 사항의 올바름을 단계적으로 확인할 수 있게 합니다. * **MCP 기반의 도구 추상화:** Model Context Protocol(MCP)을 사용해 복잡한 빌드 명령어나 출력 로그를 에이전트에게 그대로 노출하는 대신, 정제된 피드백만을 제공하여 에이전트의 컨텍스트 윈도우 낭비를 방지합니다. * **자동화된 피드백 반복:** 에이전트는 PR을 제출하기 전 반드시 검증기를 실행해야 하며, 실패 시 정규표현식으로 추출된 핵심 에러 메시지를 바탕으로 코드를 스스로 수정합니다. **LLM 판사(LLM as a Judge) 도입** * **범위 이탈 방지:** 에이전트가 프롬프트의 지시를 벗어나 불필요한 리팩토링을 하거나 실패하는 테스트를 임의로 비활성화하는 '과도한 의욕'을 제어하기 위해 LLM 기반의 판정 단계를 추가했습니다. * **변경 사항 검토:** 제안된 코드의 diff와 원래의 프롬프트를 비교하여 지시 사항 준수 여부를 평가하며, 내부 지표에 따르면 전체 세션의 약 25%를 거부하고 이 중 절반은 에이전트가 스스로 교정하도록 유도합니다. **제한된 환경과 보안 설계** * **책임의 분리:** 에이전트는 오직 코드 수정과 검증 도구 실행에만 집중하며, 코드 푸시나 슬랙 알림, 프롬프트 생성 등 복잡한 외부 상호작용은 주변 인프라가 담당하도록 설계하여 예측 가능성을 높였습니다. * **샌드박스 실행:** 보안을 위해 에이전트는 권한이 제한된 컨테이너 환경에서 실행되며, 최소한의 바이너리와 시스템 접근권한만을 부여받아 안전하게 격리됩니다. 성공적인 코딩 에이전트 운영을 위해서는 모델의 지능만큼이나 이를 뒷받침하는 **강력한 검증 인프라**가 중요합니다. 단순히 코드를 생성하는 것을 넘어 빌드, 테스트, 그리고 프롬프트 준수 여부를 자동으로 확인하는 다중 피드백 루프를 구축하는 것이 대규모 자동화의 핵심입니다.

네이버 TV (새 탭에서 열림)

네이버는 복잡한 구조의 PDF 문서를 LLM이 정확하게 이해할 수 있도록 돕는 전용 파서인 'PaLADIN'을 개발했습니다. PaLADIN은 표, 차트, 텍스트가 혼재된 문서의 레이아웃을 정밀하게 분석하여 LLM이 처리하기 최적화된 데이터 형식으로 변환하는 데 중점을 둡니다. 이를 통해 증권사 리포트 요약과 같은 전문적인 영역에서 데이터 추출의 정확도를 높이고 AI 서비스의 신뢰성을 확보했습니다. **PaLADIN의 아키텍처와 핵심 기술 스택** * **레이아웃 분석 (Doclayout-Yolo):** 문서 내의 텍스트 영역, 표, 차트 등 각 요소의 위치를 파악하는 'Element-Detector' 역할을 수행하여 문서의 구조를 정의합니다. * **표 및 차트 추출 모델:** 표 구조 분석을 위해 `nemoretriever-table-structure-v1`을 사용하며, 시각적 정보가 중요한 차트 해석에는 `google/gemma3-27b-it` 모델을 활용해 데이터를 추출합니다. * **고성능 OCR 결합:** 네이버의 파파고 OCR 기술을 통합하여 문서 내 텍스트 정보를 정확하게 디지털화하며, 수치와 문자가 섞인 복잡한 본문도 정밀하게 복원합니다. * **파이프라인 최적화:** NVIDIA의 `nv-ingest` 아키텍처를 기반으로 설계를 고도화하여 대량의 PDF 문서를 신속하게 처리할 수 있는 추론 속도를 확보했습니다. **성능 평가 및 서비스 적용 사례** * **정밀한 성능 검증:** 단순 텍스트 추출을 넘어 표 구조 복원 능력과 파싱 속도를 다각도로 측정했으며, 기존 파서 대비 우수한 정확도를 입증했습니다. * **증권사 리포트 요약 서비스:** 수치와 그래프가 많은 증권 리포트를 분석하는 'AIB 증권사 리포트' 서비스에 적용되어, LLM이 잘못된 정보를 생성하는 할루시네이션(환각) 현상을 최소화했습니다. * **LLM as a Judge:** 요약 결과의 품질을 평가하기 위해 LLM을 평가자로 활용하는 방식을 도입, 서비스 적용 시의 실효성을 객관적으로 검토했습니다. **향후 개선 방향** * **정밀도 고도화:** 표 내부의 미세한 셀 좌표 인식 오류를 개선하고, 다양한 형태의 차트에서 데이터를 더 정확하게 뽑아낼 수 있도록 모델을 개선할 예정입니다. * **한국어 최적화:** 국내 사용자 환경에 맞춰 한국어 특화 모델의 성능을 지속적으로 강화하여 문서 이해의 완성도를 높여갈 계획입니다. PDF 내의 비정형 데이터를 정형화된 구조로 변환하는 것은 RAG(검색 증강 생성) 시스템의 성능을 결정짓는 핵심 요소입니다. 복잡한 표나 차트가 포함된 전문 문서를 다루는 서비스를 구축한다면, 단순한 텍스트 추출기를 넘어 레이아웃 분석 모델이 통합된 PaLADIN과 같은 전문 파이프라인 도입을 고려해볼 수 있습니다.

대규모 대화형 AI 평가를 (새 탭에서 열림)

대규모 언어 모델(LLM) 기반의 애플리케이션은 겉으로 보기에 단순해 보이지만, 내부적으로는 검색, 랭킹, 프롬프트 구성 등 복잡한 확률적 단계들이 체인처럼 연결되어 있어 미세한 수정만으로도 성능이 급변할 수 있습니다. Dropbox Dash 개발팀은 이러한 불확실성을 통제하기 위해 평가 프로세스를 단순한 사후 점검이 아닌 '프로덕션 코드'와 동일한 수준의 엄격한 표준으로 관리해야 한다고 강조합니다. 성공적인 AI 서비스를 위해서는 공공 및 내부 데이터를 혼합한 정교한 데이터셋 구축과 더불어, 단순 NLP 지표를 넘어선 LLM 기반의 자동화된 평가 체계를 구축하는 것이 핵심입니다. ### 다각적인 데이터셋 구축 전략 * **공공 데이터셋을 통한 베이스라인 수립**: Google의 Natural Questions, MS MARCO, MuSiQue 등을 활용해 대규모 문서 검색, 다중 문서 처리, 멀티홉(multi-hop) 질의응답 성능을 초기 단계에서 검증합니다. * **실제 사용자 패턴 반영**: 사내 테스트(Dogfooding)를 통해 수집된 로그 데이터를 익명화하고 랭킹화하여 실제 사용자의 질문 방식과 의도를 반영한 대표 쿼리셋을 구성합니다. * **합성 데이터(Synthetic Data) 활용**: 표, 이미지, 튜토리얼 등 다양한 콘텐츠 타입에 대해 LLM이 직접 질문과 답변 쌍을 생성하게 함으로써 실세계의 복잡한 사례들을 포괄합니다. ### 전통적 지표의 한계와 LLM 평가 도입 * **전통적 NLP 지표의 제약**: BLEU, ROUGE, BERTScore 등은 계산이 빠르지만, 답변의 사실 관계나 출처 인용의 정확성, 할루시네이션(환각) 여부를 판단하는 데에는 한계가 있습니다. * **LLM 기반 판독(LLM-as-a-judge)**: 평가 모델(Judge Model)이 답변의 사실성, 질문에 대한 직접적인 응답 여부, 톤앤매너 등을 검토하며, 단순 점수뿐만 아니라 판단 근거(Justification)를 함께 제공하도록 설계합니다. * **평가 모듈의 소프트웨어화**: 평가 프롬프트와 기준(Rubric)을 소프트웨어 모듈처럼 버전 관리하고, 정기적으로 정답 셋(Gold Standard)과 비교하여 평가 모델 자체의 성능을 교정합니다. ### 엄격한 워크플로우와 품질 관리 * **구조화된 평가 결과 산출**: JSON 형식으로 결과(사실 정확도, 인용 적절성, 명확성 등)를 출력하여 시스템이 즉각적으로 성공과 실패를 판단할 수 있는 '라이브 알람' 체계를 구축합니다. * **휴먼 인 더 루프(Human-in-the-loop)**: 자동화된 평가가 전체의 대부분을 담당하더라도, 매 배포 시 엔지니어가 회귀 테스트 세트의 5~10%를 수동으로 검수하여 평가 모델의 편향이나 오류를 잡아냅니다. * **반복적인 프롬프트 개선**: 수동 검수에서 발견된 불일치 사례를 추적하여 평가 프롬프트를 수정하거나 모델을 교체함으로써 전체적인 평가 루프의 신뢰도를 높입니다. 실질적인 AI 성능 향상을 위해서는 모델 훈련만큼이나 정교한 평가 인프라에 투자해야 합니다. 공공 데이터로 기초를 다지고 내부 로그로 실전 감각을 더하며, LLM 평가자를 엄격하게 관리하는 일련의 과정이 뒷받침될 때 비로소 신뢰할 수 있는 AI 서비스를 운영할 수 있습니다.