> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wandb.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 로컬 스코어러로 평가하기

> 로컬에서 실행되는 소형 언어 모델을 사용해 AI 시스템의 안전성과 품질을 평가합니다

<a target="_blank" href="https://colab.research.google.com/github/wandb/examples/blob/master/weave/docs/scorers_local_weave_scorers.ipynb" aria-label="Google Colab에서 열기">
  <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Colab에서 열기" />
</a>

Weave의 로컬 스코어러는 지연 시간이 매우 짧고 로컬 머신에서 실행되는 소형 언어 모델 제품군입니다. 이 모델은 AI 시스템의 입력, 컨텍스트, 출력의 안전성과 품질을 평가합니다.

이 페이지에서는 Weave의 로컬 스코어러를 사용해 AI 시스템의 안전성과 품질을 평가하는 방법을 설명하고, 사용 참고 사항과 예시와 함께 사용 가능한 각 스코어러를 안내합니다. 이 가이드를 사용해 사용 사례에 맞는 스코어러를 선택하고, 의존성을 설치하고, AI 시스템의 입력, 컨텍스트 또는 출력에 스코어러를 추가하세요.

W\&B는 이러한 모델 중 일부를 파인튜닝했으며, 나머지는 커뮤니티에서 트레이닝한 최신 오픈 소스 모델입니다. W\&B Reports에는 트레이닝 및 평가 프로세스가 문서화되어 있습니다. 자세한 내용은 이 [W\&B Reports 목록](https://wandb.ai/c-metrics/weave-scorers/reports/Weave-Scorers-v1--VmlldzoxMDQ0MDE1OA)을 참조하세요.

모델 가중치는 W\&B Artifacts에 공개되어 있으며, Weave는 스코어러 클래스를 인스턴스화하면 이를 자동으로 다운로드합니다. 직접 다운로드하려면 `weave.scorers.default_models`의 아티팩트 경로를 참조하세요.

이 스코어러가 반환하는 객체에는 입력 텍스트가 안전하거나 품질이 높은지 여부를 나타내는 `passed` 불리언 속성과, 모델의 원시 점수 등 더 자세한 정보를 담은 `metadata` 속성이 포함됩니다.

로컬 스코어러는 CPU에서도 실행할 수 있지만, 최상의 성능을 위해 W\&B는 GPU 사용을 권장합니다.

<Note>
  로컬 스코어러는 Weave Python SDK에서만 사용할 수 있습니다. 아직 Weave TypeScript SDK에서는 사용할 수 없습니다.

  TypeScript에서 Weave 스코어러를 사용하려면 [function-based scorers](/ko/weave/guides/evaluation/scorers#function-based-scorers)를 참조하세요.
</Note>

<div id="prerequisites">
  ## 사전 요구 사항
</div>

Weave의 로컬 스코어러를 사용하려면 먼저 필요한 Scorer 라이브러리가 포함된 추가 의존성을 설치하세요:

```bash theme={null}
    pip install weave[scorers]
```

의존성을 설치했으면 이제 평가에 사용할 Scorer를 선택할 준비가 되었습니다.

<div id="select-a-scorer">
  ## 스코어러 선택
</div>

다음 로컬 스코어러를 사용할 수 있습니다. 사용 사례에 따라 스코어러를 선택한 다음, 아래의 해당 섹션으로 이동하여 사용 참고 사항과 예시를 확인하세요.

| Scorer                                                          | Scenario                                                                                           |
| --------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| [WeaveToxicityScorerV1](#weavetoxicityscorerv1)                 | 증오 표현이나 위협을 포함해 AI 시스템의 입력과 출력에서 독성 또는 유해 콘텐츠를 파악합니다.                                              |
| [WeaveBiasScorerV1](#weavebiasscorerv1)                         | AI 시스템의 입력과 출력에서 편향되거나 고정관념적인 콘텐츠를 감지합니다. 생성된 텍스트의 유해한 편향을 줄이는 데 유용합니다.                            |
| [WeaveHallucinationScorerV1](#weavehallucinationscorerv1)       | 제공된 입력과 컨텍스트를 바탕으로 RAG 시스템이 출력에서 환각을 생성하는지 파악합니다.                                                  |
| [WeaveContextRelevanceScorerV1](#weavecontextrelevancescorerv1) | AI 시스템의 출력이 제공된 입력 및 컨텍스트와 관련이 있는지 측정합니다.                                                          |
| [WeaveCoherenceScorerV1](#weavecoherencescorerv1)               | AI 시스템 출력의 일관성과 논리적 구조를 평가합니다.                                                                     |
| [WeaveFluencyScorerV1](#weavefluencyscorerv1)                   | AI 시스템의 출력이 유창한지 측정합니다.                                                                            |
| [WeaveTrustScorerV1](#weavetrustscorerv1)                       | 독성, 환각, 컨텍스트 관련성, 유창성, 일관성 스코어러를 단일 신뢰 시그널로 결합합니다.                                                 |
| [PresidioScorer](#presidioscorer)                               | Microsoft의 Presidio 라이브러리를 사용하여 AI 시스템의 입력과 출력에서 Personally Identifiable Information (PII)을 감지합니다. |

<div id="weavebiasscorerv1">
  ## `WeaveBiasScorerV1`
</div>

이 스코어러는 다음 두 가지 차원에서 성별 및 인종 또는 출신에 대한 편향을 평가합니다:

* 인종 및 출신: 인종차별, 출신 국가 또는 지역에 대한 편향, 이민 신분 또는 민족성.
  * 성별 및 성: 성차별, 여성혐오, 동성애혐오, 트랜스젠더혐오 또는 성희롱.

`WeaveBiasScorerV1`는 파인튜닝된 [deberta-small-long-nli](https://huggingface.co/tasksource/deberta-small-long-nli) 모델을 사용합니다. 모델, 데이터셋, 보정 과정에 대한 자세한 내용은 [WeaveBiasScorerV1 W\&B 리포트](https://wandb.ai/c-metrics/bias-benchmark/reports/Bias-Scorer--VmlldzoxMDM2MTgzNw)를 참조하세요.

### 사용 참고 사항

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

<div id="usage-example">
  ### 사용 예제
</div>

```python lines theme={null}
    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)
```

***

<div id="weavetoxicityscorerv1">
  ## `WeaveToxicityScorerV1`
</div>

이 스코어러는 입력 텍스트의 독성을 다음 다섯 가지 차원에서 평가합니다.

* 인종 및 출신: 특정 국가 또는 출신 지역, 이민 신분 또는 민족성에 대한 인종차별과 편견
  * 성별 및 성적 지향: 성차별, 여성혐오, 동성애 혐오, 트랜스젠더 혐오 또는 성희롱
  * 종교: 개인의 종교에 대한 편견이나 고정관념
  * 능력: 개인의 신체적, 정신적, 또는 지적 능력이나 장애와 관련된 편견
  * 폭력 및 학대: 지나치게 적나라한 폭력 묘사, 폭력 위협, 또는 폭력 선동

`WeaveToxicityScorerV1`는 PleIAs의 오픈 소스 [Celadon](https://huggingface.co/PleIAs/celadon) 모델을 사용합니다. 자세한 내용은 [WeaveToxicityScorerV1 W\&B 리포트](https://wandb.ai/c-metrics/toxicity-benchmark/reports/Toxicity-Scorer--VmlldzoxMDMyNjc0NQ)를 참조하세요.

<div id="usage-notes">
  ### 사용 시 참고 사항
</div>

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

### 사용 예시

```python lines theme={null}
    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)
```

***

<div id="weavehallucinationscorerv1">
  ## `WeaveHallucinationScorerV1`
</div>

이 스코어러는 입력 데이터를 기반으로 AI 시스템의 출력에 환각이 포함되어 있는지 확인합니다.

`WeaveHallucinationScorerV1`는 Vectara의 오픈 소스 [HHEM 2.1 모델](https://huggingface.co/vectara/hallucination_evaluation_model)을 사용합니다. 자세한 내용은 [WeaveHallucinationScorerV1 W\&B 리포트](https://wandb.ai/c-metrics/hallucination/reports/Hallucination-Scorer--VmlldzoxMDM3NDA3MA)를 참조하세요.

<div id="usage-notes">
  ### 사용 시 참고 사항
</div>

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

### 사용 예시

```python lines theme={null}
    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)
```

***

<div id="weavecontextrelevancescorerv1">
  ## `WeaveContextRelevanceScorerV1`
</div>

RAG 시스템을 평가할 때 이 스코어러를 사용하세요. 쿼리에 대한 컨텍스트의 관련성을 점수화합니다.

`WeaveContextRelevanceScorerV1`는 tasksource의 파인튜닝된 [deberta-small-long-nli](https://huggingface.co/tasksource/deberta-small-long-nli) 모델을 사용합니다. 자세한 내용은 [WeaveContextRelevanceScorerV1 W\&B 리포트](https://wandb.ai/c-metrics/context-relevance-scorer/reports/Context-Relevance-Scorer--VmlldzoxMDYxNjEyNA)를 참조하세요.

<div id="usage-notes">
  ### 사용 시 참고 사항
</div>

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

### 사용 예시

```python lines theme={null}
    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)
```

***

<div id="weavecoherencescorerv1">
  ## `WeaveCoherenceScorerV1`
</div>

이 스코어러는 입력 텍스트의 일관성을 확인합니다.

`WeaveCoherenceScorerV1`는 tasksource의 파인튜닝된 [deberta-small-long-nli](https://huggingface.co/tasksource/deberta-small-long-nli) 모델을 사용합니다. 자세한 내용은 [WeaveCoherenceScorerV1 W\&B 리포트](https://wandb.ai/c-metrics/coherence_scorer/reports/Coherence-Scorer--VmlldzoxMDI5MjA1MA)를 참조하세요.

<div id="usage-notes">
  ### 사용 시 참고 사항
</div>

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

<div id="usage-example">
  ### 사용 예제
</div>

```python lines theme={null}
    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)
```

***

<div id="weavefluencyscorerv1">
  ## `WeaveFluencyScorerV1`
</div>

이 스코어러는 입력 텍스트가 유창한지(읽기 쉽고 자연스러운 사람의 언어와 유사한지) 확인합니다. 문법, 구문, 전반적인 가독성을 평가합니다.

`WeaveFluencyScorerV1`는 AnswerDotAI의 파인튜닝된 [ModernBERT-base](https://huggingface.co/answerdotai/ModernBERT-base) 모델을 사용합니다. 자세한 내용은 [WeaveFluencyScorerV1 W\&B 리포트](https://wandb.ai/c-metrics/fluency-eval/reports/Fluency-Scorer--VmlldzoxMTA3NzE2Ng)를 참조하세요.

<div id="usage-notes">
  ### 사용 시 참고 사항
</div>

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

### 사용 예시

```python lines theme={null}
    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)
```

***

<div id="weavetrustscorerv1">
  ## `WeaveTrustScorerV1`
</div>

각 Scorer를 개별적으로 실행하는 대신, 여러 Scorer를 결합한 단일 신뢰 시그널이 필요할 때 이 Scorer를 사용하세요.

`WeaveTrustScorerV1`는 다른 스코어러를 Critical과 Advisory의 두 범주로 그룹화해 모델 출력의 신뢰성을 평가하는 RAG 시스템용 복합 스코어러입니다. 복합 점수에 따라 다음 신뢰 수준을 반환합니다:

* `high`: 문제가 감지되지 않음.
  * `medium`: Advisory 문제만 감지됨.
  * `low`: Critical 문제가 감지되었거나 입력이 비어 있음.

Critical 스코어러 중 하나라도 실패하면 `low` 신뢰 수준이 됩니다. Advisory 스코어러가 실패하면 `medium`이 됩니다.

* **Critical:**
  * `WeaveToxicityScorerV1`

  * `WeaveHallucinationScorerV1`

  * `WeaveContextRelevanceScorerV1`

  * **Advisory:**
    * `WeaveFluencyScorerV1`
    * `WeaveCoherenceScorerV1`

<div id="usage-notes">
  ### 사용 시 참고 사항
</div>

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

### 사용 예시

```python lines theme={null}
    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)
```

***

<div id="presidioscorer">
  ## `PresidioScorer`
</div>

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

### 사용 참고 사항

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

### 사용 예시

```python lines theme={null}
    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)
```
