멀티모달 충실성(Multi modal faithfulness)

멀티모달 충실성(Multi modal faithfulness)

멀티모달 충실성은 생성된 답변이 시각적 컨텍스트와 텍스트 컨텍스트 양쪽에 대해 사실적으로 일관적인지 측정하는 지표예요. 답변에 담긴 모든 주장(claim)이 주어진 시각적 또는 텍스트 컨텍스트에서 추론될 수 있을 때 충실하다고 보죠. 답변은 0~1 범위로 환산되며, 높을수록 더 충실하다는 뜻이에요.

출처: 문서

본문

MultiModalFaithfulness

MultiModalFaithfulness 지표는 생성된 답변이 시각적 컨텍스트와 텍스트 컨텍스트 양쪽에 대해 사실적으로 일관적인지 측정해요. 답변, 검색된 텍스트 컨텍스트, 시각적 컨텍스트로부터 계산돼요. 답변은 (0,1) 범위로 환산되며, 점수가 높을수록 충실성이 더 좋다는 뜻이에요.

답변에 담긴 모든 주장이 주어진 시각적 또는 텍스트 컨텍스트에서 추론될 수 있으면 생성 답변이 충실하다고 간주돼요. 이를 판단하기 위해 응답이 제공된 컨텍스트에 대해 직접 평가되며, 충실성 점수는 0 또는 1이에요.

예시(Example, 권장 - Collections API)

from openai import AsyncOpenAI
from ragas.llms.base import llm_factory
from ragas.metrics.collections import MultiModalFaithfulness

# Setup - use a vision-capable model
client = AsyncOpenAI()
llm = llm_factory("gpt-4o", client=client)  # Vision-capable model required

# Create metric instance
metric = MultiModalFaithfulness(llm=llm)

# Evaluate faithfulness
result = await metric.ascore(
    response="The Tesla Model X is an electric SUV.",
    retrieved_contexts=[
        "path/to/tesla_image.jpg",  # Image context
        "Tesla manufactures electric vehicles."  # Text context
    ]
)
print(f"Faithfulness Score: {result.value}")  # 1.0 (faithful) or 0.0 (not faithful)

예시(Example, 레거시 API - 사용 중단)

Deprecated 레거시 API는 사용이 중단됐으며 향후 버전에서 제거될 예정이에요. 위에 보여준 Collections API로 마이그레이션해주세요.

from ragas.dataset_schema import SingleTurnSample
from ragas.metrics import MultiModalFaithfulness

sample = SingleTurnSample(
        user_input="What about the Tesla Model X?",
        response="Cats are cute.",
        retrieved_contexts=[
            "custom_eval/multimodal/images/tesla.jpg"
        ]
    )
scorer = MultiModalFaithfulness()
await scorer.single_turn_ascore(sample)

계산 방법(How It's Calculated)

예시(Example) 질문: What about the Tesla Model X? 컨텍스트(시각적):

  • An image of the Tesla Model X (custom_eval/multimodal/images/tesla.jpg) 높은 충실성 답변: The Tesla Model X is an electric SUV manufactured by Tesla. 낮은 충실성 답변: Cats are cute.

낮은 충실성 답변을 사용해 충실성이 어떻게 계산됐는지 살펴볼게요:

  • Step 1: 주어진 컨텍스트에 대해 생성된 응답을 평가해요.

    Response: "Cats are cute."

  • Step 2: 응답이 주어진 컨텍스트에서 추론될 수 있는지 확인해요.

    Response: No

  • Step 3: 결과를 사용해 충실성 점수를 결정해요.

[ \text{Faithfulness} = 0 ]

이 예시에서 "Cats are cute" 응답은 Tesla Model X 이미지에서 추론할 수 없으므로 충실성 점수는 0이에요.

지원되는 컨텍스트 유형(Supported Context Types)

이 지표는 여러 유형의 컨텍스트 입력을 지원해요:

  • 텍스트 컨텍스트(Text contexts): 일반 텍스트 문자열
  • 이미지 URL(Image URLs): 이미지를 가리키는 HTTP/HTTPS URL
  • 로컬 이미지 경로(Local image paths): 로컬 이미지 파일 경로 (jpg, png, gif, webp, bmp)
  • Base64 데이터 URI(Base64 data URIs): 인라인 base64 인코딩 이미지

요구사항(Requirements)

  • 비전 지원 LLM이 필요해요 (예: gpt-4o, gpt-4-vision-preview, claude-3-opus, gemini-pro-vision)
  • Collections API에서는 llm_factory로 LLM 인스턴스를 생성해요

더 알아보기 (Learn more)