DeepEval

DeepEval (DeepEval)

DeepEval은 Confident AI가 만든 LLM 시스템 테스트용 오픈소스 프레임워크예요. Pytest가 코드를 테스트한다면, DeepEval은 LLM 출력을 테스트한다고 생각하면 돼요. G-Eval, 환각(hallucination), 답변 관련성(answer relevancy) 같은 지표를 평가해요.

DeepEval은 Qdrant와 통합해서 RAG 파이프라인을 평가할 수 있어요. 벡터 검색으로 가져온 문맥을 바탕으로 LLM 애플리케이션이 관련성 있고, 근거가 있고, 충실한 답변을 내는지 확인하는 데 써요.

출처: Qdrant 공식 문서 — deepeval

동작 방식 (How it works)

DeepEval에서 테스트 케이스(test case)는 LLM 출력을 유닛 테스트하기 위한 설계도(blueprint)예요. DeepEval에는 두 종류의 테스트 케이스가 있어요.

LLMTestCase — 하나의 입력-출력 쌍을 평가할 때 써요. RAG 응답이나 에이전트의 행동이 대표적이에요.

ConversationalTestCase — LLM 시스템과의 주고받는 대화처럼 LLMTestCase 턴들의 연속을 나타내요. 챗봇이나 어시스턴트를 테스트할 때 특히 유용해요.

지표 개요 (Metrics Overview)

DeepEval은 LLM 출력의 다양한 측면을 평가하는 지표 묶음을 제공해요.

  • Answer Relevancy — LLM 출력이 주어진 입력 쿼리에 얼마나 관련 있는지 측정해요.
  • Faithfulness — LLM 응답이 제공된 문맥에 근거하고 있는지 평가해서 사실적 정확도를 확인해요.
  • Contextual Precision — 가장 관련 있는 문맥 조각이 덜 관련 있는 조각보다 더 높게 순위가 매겨졌는지 판단해요.
  • G-Eval — LLM-as-a-judge와 chain-of-thought 추론을 결합해, 커스텀 기준에 따라 출력을 평가하는 다재다능한 지표예요.
  • Hallucination — LLM이 출처 문맥에 없는 정보를 생성하는 사례를 탐지해요.
  • Toxicity — 해롭거나 공격적인 콘텐츠가 출력에 있는지 평가해요.
  • Bias — 출력에 의도하지 않은 편향이 있는지 평가해요.
  • Summarization — 생성된 요약의 품질과 정확도를 측정해요.

사용 가능한 모든 지표의 전체 목록과 자세한 설명은 DeepEval metrics reference를 참고해요. (원문이 명시적 URL 없이 "DeepEval metrics reference"로만 언급하고 있어요 — 확인 필요)

Qdrant와 DeepEval 사용하기

클라이언트 라이브러리를 설치해요.

$ pip install deepeval qdrant-client

$ deepeval login

Qdrant로 RAG 시스템을 구성하고, 쿼리에 관련 문서를 검색해 프롬프트에 넣은 뒤 DeepEval로 생성 결과를 평가하는 흐름이에요.

from deepeval.test_case import LLMTestCase, ConversationalTestCase
from deepeval.metrics import AnswerRelevancyMetric, FaithfulnessMetric, ...

# 1. Query context from Qdrant
context = qdrant_client.query_points(...)

# 2. Construct prompt using query + retrieved context
prompt = build_prompt(query, context)

# 3. Generate response from your LLM
response = llm.generate(prompt)

# 4. Create a test case for evaluation
test_case = LLMTestCase(
    input=query,
    actual_output=response,
    expected_output=ground_truth_answer,
    retrieval_context=context
)

# 5. Evaluate the output using DeepEval
evaluate(
    test_cases=[test_case],
    metrics=[
        AnswerRelevancyMetric(),
        FaithfulnessMetric(),
        ContextualPrecisionMetric(),
        ...
    ],
)

흐름을 정리하면 이래요. Qdrant에서 검색한 문맥(context)으로 LLMTestCase를 만들고, 그 안에 입력 쿼리, 실제 출력, 기대 출력, 그리고 retrieval_context(검색 문맥)를 담아요. 마지막으로 evaluate()에 지표들을 넘겨 각 측면을 평가해요. retrieval_context에 Qdrant에서 가져온 실제 문맥을 넣는 것이 faithfulness나 hallucination 같은 지표가 정확히 동작하는 핵심이에요.

더 알아보기 (Learn more)