Перейти к содержанию

Semantic Similarity

Метрика Semantic Similarity вычисляет косинусное сходство между эмбеддингами actual_output и expected_output. LLM-модель не требуется.

Как это работает

graph TD
    A[actual_output] --> B[1. Генерация эмбеддинга]
    C[expected_output] --> D[2. Генерация эмбеддинга]
    B --> E[3. Косинусное сходство]
    D --> E
    E --> F[Итоговый балл 0.0-1.0]
  1. Эмбеддинг фактического выхода — преобразует actual_output в векторное представление
  2. Эмбеддинг ожидаемого выхода — преобразует expected_output в векторное представление
  3. Косинусное сходство — вычисляет косинус угла между двумя векторами

Параметры

Параметр Тип По умолчанию Описание
threshold float 0.7 Минимальный балл для прохождения
embedding_provider str "openai" Провайдер эмбеддингов ("openai" или "local")
model_name str по умолчанию провайдера Название модели эмбеддингов

Обязательные поля

Поле Обязательно
actual_output Да
expected_output Да
input Нет
retrieval_context Нет

Использование

from eval_lib.metrics.vector_metrics import SemanticSimilarityMetric
from eval_lib import EvalTestCase, evaluate
import asyncio

test_case = EvalTestCase(
    actual_output="Париж — столица Франции.",
    expected_output="Столица Франции — Париж."
)

metric = SemanticSimilarityMetric(
    threshold=0.8,
    embedding_provider="openai",
    model_name="text-embedding-3-small"
)

results = asyncio.run(evaluate([test_case], [metric]))

Стоимость

1 вызов API эмбеддингов на оценку (оба текста объединяются в один запрос).

Примеры

Высокий балл (0.95+)

EvalTestCase(
    actual_output="Кот сидел на коврике.",
    expected_output="На коврике сидел кот."
)
# Семантически почти идентичные утверждения

Низкий балл (< 0.5)

EvalTestCase(
    actual_output="Python — это язык программирования.",
    expected_output="Змея скользила по траве."
)
# Одно слово, совершенно разный смысл