メインコンテンツへスキップ
Colab で開く Weave のローカルScorerは、最小限のレイテンシでローカルマシン上で動作する小規模言語モデル群です。これらのモデルは、AI システムの入力、コンテキスト、出力の安全性と品質を評価します。 これらのモデルの一部は Weights & Biases によってファインチューニングされており、その他はコミュニティによってトレーニングされた最先端のオープンソースモデルです。トレーニングと評価には Weights & Biases (W&B) Reports が使用されました。詳細は、この W&B Reports の一覧で確認できます。 モデルの重みは W&B Artifacts で公開されており、Scorerクラスをインスタンス化すると自動的にダウンロードされます。自分でダウンロードしたい場合は、artifact のパスをこちらで確認できます: weave.scorers.default_models これらのScorerが返すオブジェクトには、入力テキストが安全または高品質かどうかを示す passed という真偽値属性と、モデルの生のスコアなど、より詳細な情報を含む metadata 属性が含まれます。 ローカルScorerは CPU でも実行できますが、最高のパフォーマンスを得るには GPU の使用を推奨します。
ローカルScorerは Weave Python SDK でのみ利用できます。Weave TypeScript SDK ではまだ利用できません。TypeScript で Weave Scorerを使用するには、関数ベースのScorerを参照してください。

前提条件

Weave のローカル scorer を使用する前に、追加の依存関係をインストールしてください。
    pip install weave[scorers]

Scorerを選択

以下のローカルScorerが利用可能です。ユースケースに応じてScorerを選択してください。
ScorerScenario
WeaveToxicityScorerV1ヘイトスピーチや脅迫などを含む、AI システムの入力および出力内の有害なコンテンツを特定します。
WeaveBiasScorerV1AI システムの入力および出力内の偏見やステレオタイプを含むコンテンツを検出します。生成テキストに含まれる有害なバイアスを減らすのに適しています。
WeaveHallucinationScorerV1入力と提供されたコンテキストに基づき、RAG システムの出力にハルシネーションが含まれるかどうかを特定します。
WeaveContextRelevanceScorerV1AI システムの出力が、入力および提供されたコンテキストに関連しているかどうかを測定します。
WeaveCoherenceScorerV1AI システムの出力の一貫性と論理構造を評価します。
WeaveFluencyScorerV1AI システムの出力が流暢かどうかを測定します。
WeaveTrustScorerV1毒性、ハルシネーション、コンテキスト関連性、流暢さ、一貫性の各Scorerを組み合わせた集約Scorerです。
PresidioScorerMicrosoft の Presidio ライブラリを使用して、AI システムの入力および出力内の個人を特定できる情報 (PII) を検出します。

WeaveBiasScorerV1

このScorerは、性別および人種/出身に関するバイアスを、次の 2 つの観点から評価します。
  • 人種と出身: 人種差別、および出身国や地域、移民ステータス、民族性などに対するバイアス。
    • ジェンダーとセクシュアリティ: 性差別、女性差別、同性愛嫌悪、トランスジェンダー嫌悪、セクシュアルハラスメントなど。
WeaveBiasScorerV1 は、ファインチューニング済みの deberta-small-long-nli モデルを使用します。モデル、データセット、およびキャリブレーションプロセスの詳細については、WeaveBiasScorerV1 W&B Report を参照してください。

使用上の注意

  • score method では、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

このScorerは、入力テキストの有害性を次の 5 つの観点で評価します。
  • 人種と出身: 人種差別や、出身国・地域、移民ステータス、民族性などに対する偏見。
    • ジェンダーとセクシュアリティ: 性差別、女性蔑視、同性愛嫌悪、トランスジェンダー嫌悪、セクシュアルハラスメントなど。
    • 宗教: 個人の宗教に対する偏見や固定観念。
    • 能力: 身体的、精神的、または知的な能力や障害に関する偏見。
    • 暴力と虐待: 過度に生々しい暴力描写、暴力の脅迫、または暴力の扇動。
WeaveToxicityScorerV1 は、PleIAs のオープンソースの Celadon モデルを使用します。詳細は、WeaveToxicityScorerV1 W&B Reportを参照してください。

使用上のメモ

  • score method では、output パラメーターに文字列を渡す必要があります。
    • モデルは、5 つの異なるカテゴリに対して 0 から 3 のスコアを返します。
      • これらのスコアの合計が total_threshold (デフォルト値は 5) を超える場合、入力は有害であると判定されます。
      • いずれか 1 つのカテゴリのスコアが 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

このScorerは、入力データに基づいて AI システムの出力にハルシネーションが含まれているかどうかを確認します。 WeaveHallucinationScorerV1 は、Vectara のオープンソースの HHEM 2.1 モデル を使用します。詳細は、WeaveHallucinationScorerV1 W&B Reportをご覧ください。

使用時のメモ

  • score method では、query パラメーターと output パラメーターに値を渡す必要があります。
    • コンテキストは output パラメーターに渡します (文字列または文字列のリストとして) 。
    • 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

このScorerは、RAG システムの評価時に使用することを想定して設計されています。コンテキストがクエリにどの程度関連しているかを評価します。 WeaveContextRelevanceScorerV1 は、tasksource のファインチューニング済み deberta-small-long-nli モデルを使用します。詳細は、WeaveContextRelevanceScorerV1 W&B Report を参照してください。

使用に関するメモ

  • score method では、queryoutput の値を指定する必要があります。
    • コンテキストは output パラメーターに渡します (文字列または文字列のリスト) 。
    • スコアが高いほど、そのコンテキストがクエリに関連しているという予測がより強いことを意味します。
    • score method に 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."  # コンテキストはoutputパラメーターに渡されます
    )

    print(f"出力は関連しています: {result.passed}")
    print(result)

WeaveCoherenceScorerV1

このScorerは、入力テキストに一貫性があるかどうかを確認します。 WeaveCoherenceScorerV1 は、tasksource のファインチューニング済み deberta-small-long-nli モデルを使用します。詳細は、WeaveCoherenceScorerV1 W&B Reportを参照してください。

使用上のメモ

  • score method は、query パラメーターと 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

このScorerは、入力テキストが流暢、つまり自然な人間の言語のように読みやすく理解しやすいかどうかを判定します。文法、構文、全体的な読みやすさを評価します。 WeaveFluencyScorerV1 は、AnswerDotAI のファインチューニング済み ModernBERT-base モデルを使用します。詳細は、WeaveFluencyScorerV1 W&B Reportを参照してください。

使用時のメモ

  • score method には、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

WeaveTrustScorerV1 は、RAG システム向けの複合Scorerで、他のScorerを Critical と Advisory の 2 つのカテゴリに分類することで、モデル出力の信頼性を評価します。複合スコアに基づいて、次の信頼レベルを返します。
  • high: 問題は検出されない
    • medium: Advisory の問題のみが検出される
    • low: Critical の問題が検出される、または入力が空である
いずれかの Critical Scorerで失敗した入力は、low の信頼レベルになります。Advisory Scorerで失敗した場合は、medium になります。
  • Critical:
    • WeaveToxicityScorerV1
    • WeaveHallucinationScorerV1
    • WeaveContextRelevanceScorerV1
    • Advisory:
      • WeaveFluencyScorerV1
      • WeaveCoherenceScorerV1

使用上の注意

  • この scorer は、RAG パイプラインの評価向けに設計されています。
    • 正しくスコアリングを行うには、querycontextoutput のキーが必要です。

使用例

    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

このScorerは、Presidioライブラリ を使用して、AI システムの入力と出力に含まれる Personally Identifiable Information (PII) を検出します。

使用上のメモ

  • メールアドレスや電話番号などの特定のエンティティタイプを指定するには、Presidio エンティティのリストを selected_entities パラメーターに渡します。指定しない場合、Presidio はデフォルトのエンティティリストに含まれるすべてのエンティティタイプを検出します。
    • メールアドレスや電話番号などの特定のエンティティタイプを検出するには、リストを selected_entities パラメーターに渡します。
    • custom_recognizers パラメーターには、presidio.EntityRecognizer インスタンスのリストとしてカスタム認識器を渡せます。
    • 英語以外の入力を処理するには、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)