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] - Эмбеддинг фактического выхода — преобразует
actual_outputв векторное представление - Эмбеддинг ожидаемого выхода — преобразует
expected_outputв векторное представление - Косинусное сходство — вычисляет косинус угла между двумя векторами
Параметры¶
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
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="На коврике сидел кот."
)
# Семантически почти идентичные утверждения