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

RAG Метрики

Eval AI Library предоставляет полный набор метрик для оценки систем Retrieval-Augmented Generation (RAG). Эти метрики позволяют объективно измерить качество различных аспектов RAG-пайплайна -- от релевантности ответов до фактологической достоверности и качества поиска.

RAG-система состоит из двух ключевых компонентов: ретривер (поисковый модуль, который находит релевантные фрагменты из базы знаний) и генератор (языковая модель, которая формирует ответ на основе найденного контекста). Каждый из этих компонентов может работать некорректно, и задача метрик -- выявить слабые места на каждом этапе.

Доступные метрики

Метрика Что измеряет Вызовы LLM Порог по умолчанию
Релевантность ответа Насколько ответ соответствует намерению пользователя 4 0.6
Точность ответа Насколько точно ответ совпадает с эталонным 0 0.6
Фактологичность Фактическая согласованность с контекстом поиска 3 0.7
Релевантность контекста Насколько найденный контекст поддерживает вопрос 3 0.6
Точность контекста Точность ранжирования найденных фрагментов N на чанк 0.7
Полнота контекста Покрытие эталонного ответа найденным контекстом 2 0.7
Детекция предвзятости Предвзятость и дискриминация в ответах AI 1 0.8
Детекция токсичности Уровень токсичности в ответах AI 1 0.7

Как работает оценка RAG

Каждая метрика оценивает определённый аспект RAG-пайплайна. На диаграмме ниже показано, какие метрики применяются к каким компонентам системы:

graph TD
    Q["Вопрос (input)"] --> R[Ретривер]
    R --> C["Контекст (retrieval_context)"]
    C --> G[Генератор LLM]
    Q --> G
    G --> A["Ответ (actual_output)"]

    subgraph retriever_metrics ["Метрики ретривера"]
        M1[Contextual Relevancy]
        M2[Contextual Precision]
        M3[Contextual Recall]
    end

    subgraph answer_metrics ["Метрики ответа"]
        M4[Answer Relevancy]
        M5[Faithfulness]
        M6[Answer Precision]
    end

    subgraph safety_metrics ["Метрики безопасности"]
        M7[Bias]
        M8[Toxicity]
    end

    C -.-> M1
    C -.-> M2
    C -.-> M3
    A -.-> M4
    A -.-> M5
    A -.-> M6
    A -.-> M7
    A -.-> M8

Как видно из диаграммы, метрики можно разделить на три группы:

  • Метрики ретривера (Contextual Relevancy, Contextual Precision, Contextual Recall) -- оценивают качество поискового модуля, то есть насколько хорошо система находит нужную информацию.
  • Метрики генератора (Answer Relevancy, Answer Precision, Faithfulness) -- оценивают качество ответа, сгенерированного языковой моделью.
  • Метрики безопасности (Bias, Toxicity) -- оценивают безопасность и этичность сгенерированного контента.

Выбор метрик

Для оценки качества поиска

Используйте Contextual Relevancy, Contextual Precision и Contextual Recall для оценки того, насколько хорошо ваш ретривер находит нужную информацию.

  • Contextual Relevancy покажет, есть ли среди найденных документов нерелевантный шум.
  • Contextual Precision покажет, правильно ли ранжированы результаты (релевантные выше нерелевантных).
  • Contextual Recall покажет, не пропущены ли важные фрагменты информации.

Для оценки качества ответа

Используйте Answer Relevancy и Answer Precision для оценки того, насколько хорошо сгенерированный ответ отвечает на вопрос пользователя.

  • Answer Relevancy оценивает ответ с точки зрения намерения пользователя (не требует эталонного ответа).
  • Answer Precision сравнивает ответ с эталонным (требует expected_output).

Для оценки фактической точности

Используйте Faithfulness для проверки того, что ответ основан на найденном контексте и не содержит галлюцинаций. Это критически важно для систем, работающих с юридическими, медицинскими или финансовыми данными.

Для оценки безопасности

Используйте Bias и Toxicity для проверки того, что ответы безопасны и не содержат предвзятости или токсичного контента. Особенно важно для чат-ботов, работающих с широкой аудиторией.

Система вердиктов

Большинство RAG-метрик используют 5-уровневую систему вердиктов для детализированной оценки. Каждое атомарное утверждение в ответе получает один из пяти вердиктов:

Вердикт Вес Значение
fully 1.0 Критерий полностью удовлетворён
mostly 0.9 В основном удовлетворён, незначительные пробелы
partial 0.7 Частично удовлетворён
minor 0.3 Минимально затронут
none 0.0 Совсем не удовлетворён

Вердикты агрегируются с помощью Temperature-Controlled Score Aggregation для получения итогового балла от 0.0 до 1.0. Параметр temperature позволяет управлять строгостью оценки: низкая температура (0.1) сурово наказывает за любые плохие вердикты, а высокая (1.0) -- более лояльна.

Быстрый пример

Ниже приведён полный пример запуска оценки RAG-системы с использованием четырёх ключевых метрик:

import asyncio
from eval_lib import (
    evaluate,
    EvalTestCase,
    AnswerRelevancyMetric,
    FaithfulnessMetric,
    ContextualRelevancyMetric,
    ContextualRecallMetric,
)

test_case = EvalTestCase(
    input="What causes climate change?",
    actual_output="Climate change is primarily caused by greenhouse gas emissions from burning fossil fuels.",
    expected_output="The main cause of climate change is the emission of greenhouse gases, particularly from fossil fuel combustion.",
    retrieval_context=[
        "Burning fossil fuels releases carbon dioxide and other greenhouse gases into the atmosphere.",
        "These greenhouse gases trap heat, leading to global warming and climate change.",
    ]
)

metrics = [
    AnswerRelevancyMetric(model="gpt-4o", threshold=0.7),
    FaithfulnessMetric(model="gpt-4o", threshold=0.7),
    ContextualRelevancyMetric(model="gpt-4o", threshold=0.6),
    ContextualRecallMetric(model="gpt-4o", threshold=0.7),
]

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

В этом примере:

  • input -- вопрос пользователя.
  • actual_output -- ответ, сгенерированный вашей RAG-системой.
  • expected_output -- эталонный ответ (нужен для Contextual Recall и Answer Precision).
  • retrieval_context -- список фрагментов, найденных ретривером.

Результат содержит оценки по каждой метрике, вердикты и текстовые пояснения.

Практические рекомендации

  1. Начните с минимального набора метрик. Для первой оценки достаточно Answer Relevancy + Faithfulness. Добавляйте остальные по мере необходимости.
  2. Настройте пороги под вашу задачу. Для критичных приложений (медицина, финансы) повышайте пороги; для разговорных ботов можно снизить.
  3. Используйте Answer Precision для детерминированных тестов. Эта метрика не требует LLM и работает мгновенно -- отлично подходит для регрессионного тестирования.
  4. Запускайте метрики параллельно. Функция evaluate() автоматически выполняет все метрики параллельно для каждого тест-кейса.