메인 콘텐츠로 건너뛰기
Colab에서 열기 Weave의 로컬 스코어러는 지연 시간이 매우 짧고 로컬 머신에서 실행되는 소형 언어 모델 제품군입니다. 이 모델은 AI 시스템의 입력, 컨텍스트, 출력의 안전성과 품질을 평가합니다. 이 페이지에서는 Weave의 로컬 스코어러를 사용해 AI 시스템의 안전성과 품질을 평가하는 방법을 설명하고, 사용 참고 사항과 예시와 함께 사용 가능한 각 스코어러를 안내합니다. 이 가이드를 사용해 사용 사례에 맞는 스코어러를 선택하고, 의존성을 설치하고, AI 시스템의 입력, 컨텍스트 또는 출력에 스코어러를 추가하세요. W&B는 이러한 모델 중 일부를 파인튜닝했으며, 나머지는 커뮤니티에서 트레이닝한 최신 오픈 소스 모델입니다. W&B Reports에는 트레이닝 및 평가 프로세스가 문서화되어 있습니다. 자세한 내용은 이 W&B Reports 목록을 참조하세요. 모델 가중치는 W&B Artifacts에 공개되어 있으며, Weave는 스코어러 클래스를 인스턴스화하면 이를 자동으로 다운로드합니다. 직접 다운로드하려면 weave.scorers.default_models의 아티팩트 경로를 참조하세요. 이 스코어러가 반환하는 객체에는 입력 텍스트가 안전하거나 품질이 높은지 여부를 나타내는 passed 불리언 속성과, 모델의 원시 점수 등 더 자세한 정보를 담은 metadata 속성이 포함됩니다. 로컬 스코어러는 CPU에서도 실행할 수 있지만, 최상의 성능을 위해 W&B는 GPU 사용을 권장합니다.
로컬 스코어러는 Weave Python SDK에서만 사용할 수 있습니다. 아직 Weave TypeScript SDK에서는 사용할 수 없습니다.TypeScript에서 Weave 스코어러를 사용하려면 function-based scorers를 참조하세요.

사전 요구 사항

Weave의 로컬 스코어러를 사용하려면 먼저 필요한 Scorer 라이브러리가 포함된 추가 의존성을 설치하세요:
    pip install weave[scorers]
의존성을 설치했으면 이제 평가에 사용할 Scorer를 선택할 준비가 되었습니다.

스코어러 선택

다음 로컬 스코어러를 사용할 수 있습니다. 사용 사례에 따라 스코어러를 선택한 다음, 아래의 해당 섹션으로 이동하여 사용 참고 사항과 예시를 확인하세요.
ScorerScenario
WeaveToxicityScorerV1증오 표현이나 위협을 포함해 AI 시스템의 입력과 출력에서 독성 또는 유해 콘텐츠를 파악합니다.
WeaveBiasScorerV1AI 시스템의 입력과 출력에서 편향되거나 고정관념적인 콘텐츠를 감지합니다. 생성된 텍스트의 유해한 편향을 줄이는 데 유용합니다.
WeaveHallucinationScorerV1제공된 입력과 컨텍스트를 바탕으로 RAG 시스템이 출력에서 환각을 생성하는지 파악합니다.
WeaveContextRelevanceScorerV1AI 시스템의 출력이 제공된 입력 및 컨텍스트와 관련이 있는지 측정합니다.
WeaveCoherenceScorerV1AI 시스템 출력의 일관성과 논리적 구조를 평가합니다.
WeaveFluencyScorerV1AI 시스템의 출력이 유창한지 측정합니다.
WeaveTrustScorerV1독성, 환각, 컨텍스트 관련성, 유창성, 일관성 스코어러를 단일 신뢰 시그널로 결합합니다.
PresidioScorerMicrosoft의 Presidio 라이브러리를 사용하여 AI 시스템의 입력과 출력에서 Personally Identifiable Information (PII)을 감지합니다.

WeaveBiasScorerV1

이 스코어러는 다음 두 가지 차원에서 성별 및 인종 또는 출신에 대한 편향을 평가합니다:
  • 인종 및 출신: 인종차별, 출신 국가 또는 지역에 대한 편향, 이민 신분 또는 민족성.
    • 성별 및 성: 성차별, 여성혐오, 동성애혐오, 트랜스젠더혐오 또는 성희롱.
WeaveBiasScorerV1는 파인튜닝된 deberta-small-long-nli 모델을 사용합니다. 모델, 데이터셋, 보정 과정에 대한 자세한 내용은 WeaveBiasScorerV1 W&B 리포트를 참조하세요.

사용 참고 사항

  • score 방법은 output 매개변수로 문자열을 받습니다.
    • score가 높을수록 텍스트에 편향이 있다는 예측이 더 강하다는 의미입니다.
    • threshold 매개변수는 설정되어 있지만, 초기화 시 재정의할 수도 있습니다.

사용 예제

    import weave
    from weave.scorers import WeaveBiasScorerV1

    bias_scorer = WeaveBiasScorerV1()
    result = bias_scorer.score(output="Martian men are terrible at cleaning")

    print(f"The text is biased: {not result.passed}")
    print(result)

WeaveToxicityScorerV1

이 스코어러는 입력 텍스트의 독성을 다음 다섯 가지 차원에서 평가합니다.
  • 인종 및 출신: 특정 국가 또는 출신 지역, 이민 신분 또는 민족성에 대한 인종차별과 편견
    • 성별 및 성적 지향: 성차별, 여성혐오, 동성애 혐오, 트랜스젠더 혐오 또는 성희롱
    • 종교: 개인의 종교에 대한 편견이나 고정관념
    • 능력: 개인의 신체적, 정신적, 또는 지적 능력이나 장애와 관련된 편견
    • 폭력 및 학대: 지나치게 적나라한 폭력 묘사, 폭력 위협, 또는 폭력 선동
WeaveToxicityScorerV1는 PleIAs의 오픈 소스 Celadon 모델을 사용합니다. 자세한 내용은 WeaveToxicityScorerV1 W&B 리포트를 참조하세요.

사용 시 참고 사항

  • score 방법은 output 매개변수에 문자열이 전달되기를 기대합니다.
    • 모델은 서로 다른 5개의 카테고리에 대해 0부터 3까지의 점수를 반환합니다.
      • 이 점수의 합이 total_threshold(기본값 5)보다 크면 입력은 유해한 것으로 표시됩니다.
      • 단일 카테고리의 점수가 category_threshold(기본값 2)보다 높으면 입력은 유해한 것으로 표시됩니다.
    • 필터링을 더 엄격하게 하려면 초기화 시 category_threshold 또는 total_threshold를 재정의하세요.

사용 예시

    import weave
    from weave.scorers import WeaveToxicityScorerV1

    toxicity_scorer = WeaveToxicityScorerV1()
    result = toxicity_scorer.score(output="people from the south pole of Mars are the worst")

    print(f"Input is toxic: {not result.passed}")
    print(result)

WeaveHallucinationScorerV1

이 스코어러는 입력 데이터를 기반으로 AI 시스템의 출력에 환각이 포함되어 있는지 확인합니다. WeaveHallucinationScorerV1는 Vectara의 오픈 소스 HHEM 2.1 모델을 사용합니다. 자세한 내용은 WeaveHallucinationScorerV1 W&B 리포트를 참조하세요.

사용 시 참고 사항

  • score 방법은 queryoutput 매개변수로 값을 전달받아야 합니다.
    • 컨텍스트는 output 매개변수로 전달해야 합니다(문자열 또는 문자열 목록).
    • 출력 점수가 높을수록 출력에 환각이 포함되었을 가능성이 더 큽니다.
    • threshold 매개변수는 설정되어 있지만 초기화 시 재정의할 수 있습니다.

사용 예시

    import weave
    from weave.scorers import WeaveHallucinationScorerV1

    hallucination_scorer = WeaveHallucinationScorerV1()

    result = hallucination_scorer.score(
        query="What is the capital of Antarctica?",
        context="People in Antarctica love the penguins.",
        output="While Antarctica is known for its sea life, penguins aren't liked there."
    )

    print(f"Output is hallucinated: {not result.passed}")
    print(result)

WeaveContextRelevanceScorerV1

RAG 시스템을 평가할 때 이 스코어러를 사용하세요. 쿼리에 대한 컨텍스트의 관련성을 점수화합니다. WeaveContextRelevanceScorerV1는 tasksource의 파인튜닝된 deberta-small-long-nli 모델을 사용합니다. 자세한 내용은 WeaveContextRelevanceScorerV1 W&B 리포트를 참조하세요.

사용 시 참고 사항

  • score 방법은 queryoutput 값을 필요로 합니다.
    • 컨텍스트는 output 매개변수(문자열 또는 문자열 목록)로 전달해야 합니다.
    • 점수가 높을수록 해당 컨텍스트가 쿼리와 관련 있다는 예측이 더 강하다는 뜻입니다.
    • 청크별 점수를 조회하려면 score 방법에 verbose=True를 전달하면 됩니다.

사용 예시

    import weave
    from weave.scorers import WeaveContextRelevanceScorerV1

    context_relevance_scorer = WeaveContextRelevanceScorerV1()

    result = context_relevance_scorer.score(
        query="What is the capital of Antarctica?",
        output="The Antarctic has the happiest penguins."  # context는 output 파라미터에 전달됩니다
    )

    print(f"Output is relevant: {result.passed}")
    print(result)

WeaveCoherenceScorerV1

이 스코어러는 입력 텍스트의 일관성을 확인합니다. WeaveCoherenceScorerV1는 tasksource의 파인튜닝된 deberta-small-long-nli 모델을 사용합니다. 자세한 내용은 WeaveCoherenceScorerV1 W&B 리포트를 참조하세요.

사용 시 참고 사항

  • score 방법은 queryoutput 매개변수에 텍스트를 전달해야 합니다.
    • output 점수가 높을수록 일관성이 높다는 예측이 더 강하다는 뜻입니다.

사용 예제

    import weave
    from weave.scorers import WeaveCoherenceScorerV1

    coherence_scorer = WeaveCoherenceScorerV1()

    result = coherence_scorer.score(
        query="What is the capital of Antarctica?",
        output="but why not monkey up day"
    )

    print(f"Output is coherent: {result.passed}")
    print(result)

WeaveFluencyScorerV1

이 스코어러는 입력 텍스트가 유창한지(읽기 쉽고 자연스러운 사람의 언어와 유사한지) 확인합니다. 문법, 구문, 전반적인 가독성을 평가합니다. WeaveFluencyScorerV1는 AnswerDotAI의 파인튜닝된 ModernBERT-base 모델을 사용합니다. 자세한 내용은 WeaveFluencyScorerV1 W&B 리포트를 참조하세요.

사용 시 참고 사항

  • score 방법은 텍스트를 output 매개변수로 전달받아야 합니다.
    • 출력 점수가 높을수록 유창성이 높습니다.

사용 예시

    import weave
    from weave.scorers import WeaveFluencyScorerV1

    fluency_scorer = WeaveFluencyScorerV1()

    result = fluency_scorer.score(
        output="The cat did stretching lazily into warmth of sunlight."
    )

    print(f"Output is fluent: {result.passed}")
    print(result)

WeaveTrustScorerV1

각 Scorer를 개별적으로 실행하는 대신, 여러 Scorer를 결합한 단일 신뢰 시그널이 필요할 때 이 Scorer를 사용하세요. WeaveTrustScorerV1는 다른 스코어러를 Critical과 Advisory의 두 범주로 그룹화해 모델 출력의 신뢰성을 평가하는 RAG 시스템용 복합 스코어러입니다. 복합 점수에 따라 다음 신뢰 수준을 반환합니다:
  • high: 문제가 감지되지 않음.
    • medium: Advisory 문제만 감지됨.
    • low: Critical 문제가 감지되었거나 입력이 비어 있음.
Critical 스코어러 중 하나라도 실패하면 low 신뢰 수준이 됩니다. Advisory 스코어러가 실패하면 medium이 됩니다.
  • Critical:
    • WeaveToxicityScorerV1
    • WeaveHallucinationScorerV1
    • WeaveContextRelevanceScorerV1
    • Advisory:
      • WeaveFluencyScorerV1
      • WeaveCoherenceScorerV1

사용 시 참고 사항

  • RAG 파이프라인을 평가하려면 이 Scorer를 사용하세요.
    • 정확한 점수 산정을 위해서는 query, context, output 키가 필요합니다.

사용 예시

    import weave
    from weave.scorers import WeaveTrustScorerV1

    trust_scorer = WeaveTrustScorerV1()

    def print_trust_scorer_result(result):
        print()
        print(f"Output is trustworthy: {result.passed}")
        print(f"Trust level: {result.metadata['trust_level']}")
        if not result.passed:
            print("Triggered scorers:")
            for scorer_name, scorer_data in result.metadata['raw_outputs'].items():
                if not scorer_data.passed:
                    print(f"  - {scorer_name} did not pass")
        print()
        print(f"WeaveToxicityScorerV1 scores: {result.metadata['scores']['WeaveToxicityScorerV1']}")
        print(f"WeaveHallucinationScorerV1 scores: {result.metadata['scores']['WeaveHallucinationScorerV1']}")
        print(f"WeaveContextRelevanceScorerV1 score: {result.metadata['scores']['WeaveContextRelevanceScorerV1']}")
        print(f"WeaveCoherenceScorerV1 score: {result.metadata['scores']['WeaveCoherenceScorerV1']}")
        print(f"WeaveFluencyScorerV1: {result.metadata['scores']['WeaveFluencyScorerV1']}")
        print()

    result = trust_scorer.score(
        query="What is the capital of Antarctica?",
        context="People in Antarctica love the penguins.",
        output="The cat stretched lazily in the warm sunlight."
    )

    print_trust_scorer_result(result)
    print(result)

PresidioScorer

이 스코어러는 Presidio 라이브러리를 사용해 AI 시스템의 입력과 출력에서 personally identifiable information (PII)을 감지합니다.

사용 참고 사항

  • 이메일이나 전화번호 같은 특정 entity 유형을 감지하려면 Presidio entity 목록을 selected_entities 매개변수로 전달하세요. 그렇지 않으면 Presidio는 기본 entity 목록에 있는 모든 entity 유형을 감지합니다.
    • custom_recognizers 매개변수를 통해 presidio.EntityRecognizer 인스턴스 목록 형태로 맞춤형 recognizer를 전달할 수 있습니다.
    • 영어 이외의 입력을 처리하려면 language 매개변수로 언어를 지정하세요.

사용 예시

    import weave
    from weave.scorers import PresidioScorer

    presidio_scorer = PresidioScorer()

    result = presidio_scorer.score(
        output="Mary Jane is a software engineer at XYZ company and her email is mary.jane@xyz.com."
    )

    print(f"Output contains PII: {not result.passed}")
    print(result)