Reference Match¶
Метрика Reference Match вычисляет сходство эмбеддингов между actual_output и списком референсных текстов. Итоговый балл агрегируется с использованием максимального или среднего сходства по всем референсам. LLM-модель не требуется.
Как это работает¶
graph TD
A[actual_output] --> B[1. Генерация эмбеддинга]
C[references] --> D[2. Генерация эмбеддингов]
B --> E[3. Косинусное сходство для каждого референса]
D --> E
E --> F[4. Агрегация: max или mean]
F --> G[Итоговый балл 0.0-1.0] - Эмбеддинг фактического выхода — преобразует
actual_outputв векторное представление - Эмбеддинги референсов — преобразует каждый референсный текст в векторное представление
- Попарное сходство — вычисляет косинусное сходство между
actual_outputи каждым референсом - Агрегация — берет
maxилиmeanвсех баллов сходства
Параметры¶
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
threshold | float | 0.7 | Минимальный балл для прохождения |
references | list[str] | обязательный | Список референсных текстов для сравнения |
aggregation | str | "max" | Стратегия агрегации ("max" или "mean") |
embedding_provider | str | "openai" | Провайдер эмбеддингов ("openai" или "local") |
model_name | str | по умолчанию провайдера | Название модели эмбеддингов |
Обязательные поля¶
| Поле | Обязательно |
|---|---|
actual_output | Да |
references | Да (через параметр) |
input | Нет |
expected_output | Нет |
Использование¶
from eval_lib.metrics.vector_metrics import ReferenceMatchMetric
from eval_lib import EvalTestCase, evaluate
import asyncio
test_case = EvalTestCase(
actual_output="Столица Франции — Париж, расположенный на берегу Сены."
)
metric = ReferenceMatchMetric(
threshold=0.75,
references=[
"Париж — столица и крупнейший город Франции.",
"Столицей Франции является Париж.",
"Париж, расположенный на Сене, является столицей Франции."
],
aggregation="max",
embedding_provider="openai"
)
results = asyncio.run(evaluate([test_case], [metric]))
Стратегии агрегации¶
"max" (по умолчанию)¶
Возвращает наивысший балл сходства среди всех референсов. Используйте, когда достаточно совпадения хотя бы с одним референсом.
"mean"¶
Возвращает средний балл сходства по всем референсам. Используйте, когда выход должен быть согласован со всеми референсами.
Стоимость¶
1 вызов API эмбеддингов на оценку (все тексты объединяются в один запрос).
Примеры¶
Высокий балл (0.90+)¶
metric = ReferenceMatchMetric(
references=[
"Для сброса пароля перейдите в Настройки.",
"Перейдите в Настройки > Безопасность для смены пароля."
],
aggregation="max"
)
EvalTestCase(
actual_output="Перейдите в Настройки > Безопасность, чтобы сбросить пароль."
)
# Высокое сходство хотя бы с одним референсом
Низкий балл (< 0.5)¶
metric = ReferenceMatchMetric(
references=[
"Для сброса пароля перейдите в Настройки.",
"Перейдите в Настройки > Безопасность для смены пароля."
],
aggregation="mean"
)
EvalTestCase(
actual_output="Наша компания была основана в 2020 году и базируется в Сан-Франциско."
)
# Нет семантического пересечения ни с одним референсом