DSPy.rb를 활용한 Chain-of-Thought 요약 성능 실험 및 평가

Does Chain Of Thought Actually Improve Summaries? A Quick Experiment

작성자
Ruby AI News
발행일
2025년 12월 01일

핵심 요약

  • 1 DSPy.rb를 사용하여 Chain-of-Thought(CoT) 방식이 일반 예측(Predict) 방식보다 요약 품질(특히 사실성 및 일관성)에서 3%p 개선을 보임을 입증했습니다.
  • 2 LLM 심사위원(Judge)을 통해 다차원적 품질 평가를 자동화하고, DSPy::Evals로 예측기, 예시, 평가 지표를 통합하여 실험 워크플로우를 간소화했습니다.
  • 3 Chain-of-Thought의 추론 단계가 환각 현상을 줄이고 구조화된 출력을 생성하는 데 기여하며, 데이터 기반 실험의 중요성을 강조합니다.

도입

동료 개발자와의 페어 프로그래밍 중 Chain-of-Thought(CoT) 방식이 항상 더 나은 결과를 생성한다는 주장에 대한 회의감에서 본 실험이 시작되었습니다. 특히 요약과 같은 간단한 작업에서 단계별 사고 과정이 정말로 도움이 되는지 검증하기 위해, 맹목적인 가정이 아닌 실제 데이터를 기반으로 한 실험을 DSPy.rb 프레임워크를 활용하여 수행하기로 결정했습니다. 이 글은 실험의 설정, 방법론, 그리고 결과를 상세히 설명하며, CoT 방식의 실제적인 이점을 평가합니다.

실험 설정: 요약 작업 및 LLM 심사위원

본 실험은 세 가지 핵심 요소로 구성됩니다: 비교 대상인 요약 작업, 품질을 평가할 LLM 심사위원, 그리고 이들을 실행할 평가 하네스입니다.

1. 요약 시그니처 정의

Summarize라는 DSPy::Signature를 정의하여 텍스트를 입력받아 핵심 개념을 보존하는 간결한 요약을 출력하도록 했습니다. 이 시그니처는 DSPy::PredictDSPy::ChainOfThought 두 가지 예측기 모두에 동일하게 적용됩니다.

ruby class Summarize < DSPy::Signature description "Summarize the given text concisely while preserving key concepts" input { const :text, String, description: "Text to summarize" } output { const :summary, String, description: "Concise summary preserving key concepts (2-3 sentences)" } end

gpt-4o-mini 모델을 사용하여 PredictChainOfThought 예측기를 각각 생성하고, ChainOfThoughtreasoning 단계를 추가로 출력합니다.

2. 다차원 품질 평가를 위한 LLM 심사위원

수동 검토 대신 LLM을 사용하여 요약 품질을 평가하는 G-Eval 방식이 도입되었습니다. 이를 위해 EvaluatorMindset (Critical, Balanced, Generous)과 GroundedSummary (source_text, summary) 타입을 정의했습니다. EvaluateSummary 시그니처는 GroundedSummaryEvaluatorMindset을 입력받아 faithfulness, relevance, coherence, fluency를 1-5점 척도로 평가하고 overall_score를 산출합니다. 심사위원 자체도 DSPy::ChainOfThought를 사용하여 평가 과정에서 추론하도록 설정되었습니다.

ruby class EvaluateSummary < DSPy::Signature description "Evaluate summary quality using G-Eval criteria according to the specified mindset." input { const :grounded_summary, GroundedSummary; const :mindset, EvaluatorMindset } output do const :faithfulness, Integer, description: "Score 1-5: Is the summary factually accurate?" const :relevance, Integer, description: "Score 1-5: Does it capture the most important information?" const :coherence, Integer, description: "Score 1-5: Is it well-structured with logical flow?" const :fluency, Integer, description: "Score 1-5: Is it grammatically correct and readable?" const :overall_score, Float, description: "Overall quality score from 1.0 to 5.0" end end

3. LLM 심사위원 패키징 및 평가 실행

create_llm_judge_metric 함수는 LLM 심사위원을 캡슐화한 람다 함수로, 예시와 예측을 받아 평가 결과를 반환합니다. 이 지표는 DSPy::Evals와 함께 사용되어 예측기와 CoT 예측기의 성능을 5개의 위키피디아 문서(광합성, 비잔틴 제국 등)에 대해 평가했습니다. gpt-4o-mini가 요약기로, gpt-4.1이 심사위원으로 사용되었습니다.

실험 결과

실험 결과, 일반 예측 방식은 평균 93.0%의 점수를, ChainOfThought 방식은 평균 96.0%의 점수를 기록하여 CoT 방식이 3.0%p 더 높은 성능을 보였습니다. 세부 차원별 분석에서는 특히 Faithfulness(사실성)에서 0.4점, Coherence(일관성)에서 0.2점의 개선이 나타났습니다. Relevance(관련성)와 Fluency(유창성)는 두 방식 모두 높은 점수를 기록했습니다. 이 결과는 CoT의 추론 단계가 모델이 환각을 피하고 더 잘 구조화된 출력을 생성하는 데 도움이 됨을 시사합니다.

결론

결론적으로, `gpt-4o-mini`와 같은 유능한 모델을 사용하는 요약 작업에서 Chain-of-Thought 방식은 미미하지만 실제적인 품질 향상, 특히 사실성 측면에서 이점을 제공합니다. 3%p의 개선은 사실성이 중요한 프로덕션 환경에서 의미 있는 차이를 만들 수 있습니다. 본 실험은 DSPy.rb를 활용하면 예측기와 Chain-of-Thought, 다른 모델, 프롬프트 전략, 온도 변화 등 다양한 비교 실험을 단 50여 줄의 코드로 신속하게 구축하고 실행할 수 있음을 보여줍니다. 이는 맹목적인 가정 대신 데이터 기반의 의사결정을 가능하게 하며, DSPy.rb의 시그니처, Sorbet 타입, LLM 심사위원, DSPy::Evals 통합 워크플로우가 이러한 실험을 얼마나 효율적으로 지원하는지 강조합니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!