中文翻译暂不可用,显示俄语原文。
Как вы оцениваете качество генерации в RAG? Назовите 3 ключевые метрики.
Краткий тезис
Оценка качества генерации в RAG — это многомерная задача, потому что плохой ответ может быть следствием разных проблем: LLM могла нагаллюцинировать (выдумать факты), могла ответить не на вопрос (мимо цели) или могла получить плохой контекст (retrieval принёс мусор). Три ключевые метрики закрывают каждую из этих проблем: Faithfulness (достоверность — нет галлюцинаций), Answer Relevance (релевантность ответа — ответ по вопросу) и Context Relevance (релевантность контекста]] — retrieval хороший). Инструменты вроде RAGAS автоматизируют подсчёт этих метрик, используя LLM-судью (обычно GPT-4 или другую модель).
Ключевая идея Нельзя полагаться на одну метрику. Высокая Answer Relevance при низкой Faithfulness — это плохо (модель уверенно врёт). Высокая Faithfulness при низкой Answer Relevance — тоже плохо (модель честно говорит не то, что спросили).
1. Термин: Генерация в RAG
Что это Финальный этап RAG, когда LLM получает на вход:
- Контекст (retrieved documents — найденные документы)
- Вопрос пользователя (query)
- Инструкцию (prompt, например: "Ответь на вопрос, используя только контекст")
И генерирует ответ.
Проблемы, которые могут возникнуть
| Проблема | Пример | Какая метрика падает |
|---|---|---|
| Галлюцинация | LLM добавляет факты, которых нет в контексте | Faithfulness |
| Не по вопросу | LLM отвечает на другой вопрос или уходит в сторону | Answer Relevance |
| Плохой контекст | Retrieval принёс нерелевантные документы | Context Relevance |
Термин «LLM-as-a-judge» Использование одной LLM (например, GPT-4) для оценки ответов другой LLM. Это дешёвая альтернатива ручной оценке (human evaluation).
2. Метрика 1: Faithfulness (достоверность, отсутствие галлюцинаций)
Что это Доля утверждений в ответе LLM, которые можно подтвердить информацией из контекста (retrieved documents). Это самая важная метрика в RAG, потому что галлюцинации подрывают доверие пользователей.
Термин «Галлюцинация» (Hallucination LLM генерирует факты, которых нет в контексте. Например, контекст не содержит информацию о цене, но LLM пишет «Цена 1000 рублей».
Как измеряется (метод RAGAS
# Шаг 1: Разбить ответ на отдельные утверждения (statements)
response = "Компания была основана в 2010 году. У неё 5000 сотрудников. Она находится в Москве."
statements = [
"Компания была основана в 2010 году",
"У неё 5000 сотрудников",
"Она находится в Москве"
]
# Шаг 2: Для каждого утверждения проверить, можно ли его подтвердить из контекста
context = "Компания была основана в 2010 году. Основатель — Иван Иванов."
# Утверждение 1: подтверждается ✅
# Утверждение 2: НЕТ в контексте ❌
# Утверждение 3: НЕТ в контексте ❌
# Шаг 3: Подсчёт
faithfulness = (1 подтверждённое) / (3 всего) = 0.33 (33%)
Формула
Faithfulness = (количество подтверждённых утверждений) / (общее количество утверждений в ответе)
Интерпретация
| Значение | Интерпретация |
|---|---|
| 0.95+ | Отлично (почти нет галлюцинаций) |
| 0.85-0.95 | Хорошо |
| 0.70-0.85 | Средне (есть проблемы) |
| <0.70 | Плохо (много галлюцинаций, система ненадёжна) |
Как это делает RAGAS (автоматически
from ragas.metrics import faithfulness
from ragas import evaluate
result = evaluate(dataset, metrics=[faithfulness])
# RAGAS внутри использует LLM для разбиения на утверждения и проверки
Термин «NLI (Natural Language Inference)» Некоторые реализации faithfulness используют NLI-модель (например, DeBERTa-NLI), которая определяет, следует ли утверждение из контекста (entailment), противоречит ли (contradiction) или нейтрально (neutral).
3. Метрика 2: Answer Relevance (релевантность ответа)
Что это Насколько сгенерированный ответ отвечает на заданный вопрос. Модель могла быть достоверной (Faithfulness высокая), но ответить не на тот вопрос или уйти в сторону.
Пример низкой Answer Relevance
Вопрос: "Сколько стоит iPhone 15?"
Ответ: "iPhone 15 был выпущен в сентябре 2024 года." (верно, но не отвечает на вопрос о цене)
Как измеряется (метод RAGAS
# Шаг 1: Из ответа генерируем гипотетические вопросы
question = "Сколько стоит iPhone 15?"
answer = "iPhone 15 стоит от 799 долларов в США."
# LLM генерирует N (например, 3) вопросов, на которые этот ответ подходит:
generated_questions = [
"Какова цена iPhone 15?",
"В каком ценовом диапазоне находится iPhone 15?",
"Сколько долларов стоит iPhone 15?"
]
# Шаг 2: Вычисляем семантическое сходство между исходным вопросом и сгенерированными
similarities = [
cosine_similarity(embed(question), embed(q))
for q in generated_questions
]
# Шаг 3: Answer relevance = среднее арифметическое similarities
answer_relevance = sum(similarities) / len(similarities)
Формула (RAGAS
Answer Relevance = (1/N) * Σ cos_sim(emb(question), emb(generated_question_i))
где generated_question_i — вопросы, сгенерированные LLM из ответа.
Интерпретация
| Значение | Интерпретация |
|---|---|
| 0.95+ | Отлично (ответ точно по вопросу) |
| 0.85-0.95 | Хорошо |
| 0.70-0.85 | Средне (ответ немного не в тему) |
| <0.70 | Плохо (ответ не по вопросу) |
Важный нюанс Answer Relevance ничего не говорит о правильности ответа. Она измеряет только смысловое пересечение вопроса и ответа.
4. Метрика 3: Context Relevance (релевантность контекста)
Что это Насколько найденные retrieval'ем документы (контекст) релевантны запросу пользователя. Это метрика качества retrieval, а не LLM, но она критична для RAG, потому что плохой контекст = плохой ответ (мусор на входе — мусор на выходе).
Пример низкой Context Relevance
Вопрос: "Какая цена iPhone 15?"
Retrieved context: ["iPhone 15 имеет 48-мегапиксельную камеру",
"iPhone 15 работает на процессоре A17"]
→ Ни один документ не говорит о цене
Как измеряется (метод RAGAS
# Шаг 1: Разбить retrieved context на предложения
context = ["iPhone 15 стоит от 799 долларов.",
"iPhone 15 имеет 48-МП камеру.",
"Доставка осуществляется бесплатно."]
sentences = [
"iPhone 15 стоит от 799 долларов.",
"iPhone 15 имеет 48-МП камеру.",
"Доставка осуществляется бесплатно."
]
# Шаг 2: Для каждого предложения оценить, нужно ли оно для ответа на вопрос
question = "Сколько стоит iPhone 15?"
# LLM оценивает каждое предложение:
# - S1 (цена) → полезно (relevance=1)
# - S2 (камера) → не полезно (relevance=0)
# - S3 (доставка) → не полезно (relevance=0)
# Шаг 3: Context relevance = доля полезных предложений
context_relevance = 1 / 3 = 0.33 (33%)
Формула
Context Relevance = (количество предложений в контексте, полезных для ответа) / (общее количество предложений в контексте)
Интерпретация
| Значение | Интерпретация |
|---|---|
| 0.90+ | Отлично (контекст чистый, нет мусора) |
| 0.70-0.90 | Хорошо |
| 0.50-0.70 | Средне (много шума) |
| <0.50 | Плохо (retrieval приносит много мусора) |
Когда низкая Context Relevance
- Плохая embedding-модель
- Плохой chunking (слишком большие чанки с мусором)
- Неправильный top-k (слишком много чанков)
- Отсутствие reranking
5. Три метрики вместе: что они показывают
| Сценарий | Faithfulness | Answer Relevance | Context Relevance | Диагноз |
|---|---|---|---|---|
| Идеальная система | 0.95 | 0.95 | 0.95 | Всё отлично |
| LLM галлюцинирует | 0.60 | 0.90 | 0.90 | LLM добавляет своё — нужен better prompting или fine-tuning |
| LLM отвечает не на вопрос | 0.90 | 0.60 | 0.90 | Prompt плохой — перепишите инструкцию |
| Retrieval плохой | 0.90 | 0.90 | 0.40 | Проблема в поиске — лучше embedding, chunking |
| Retrieval плохой + LLM галлюцинирует | 0.60 | 0.90 | 0.40 | Комбинированная проблема |
| Retrieval хороший, но LLM не использует контекст | 0.70 | 0.85 | 0.90 | LLM игнорирует контекст — fine-tuning |
6. Инструменты для расчёта метрик
6.1 RAGAS (RAG Assessment)
Что это Open-source фреймворк для автоматической оценки RAG-систем.
Установка
pip install ragas
Использование
from datasets import Dataset
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_relevancy
# Данные: вопросы, ответы LLM, контекст (retrieved chunks)
data = {
"question": ["Сколько стоит iPhone 15?", "Какая камера у iPhone 15?"],
"answer": ["iPhone 15 стоит от 799 долларов.", "48 мегапикселей"],
"contexts": [
["iPhone 15 стоит 799 долларов", "iPhone 15 имеет A17 процессор"],
["iPhone 15 имеет 48-МП камеру", "iPhone 15 весит 180 грамм"]
]
}
dataset = Dataset.from_dict(data)
result = evaluate(dataset, metrics=[faithfulness, answer_relevancy, context_relevancy])
print(result)
# {'faithfulness': 0.95, 'answer_relevancy': 0.92, 'context_relevancy': 0.88}
Плюсы Бесплатно, open-source, поддерживает русский (через BGE-m3). Минусы Нужен LLM-судья (по умолчанию OpenAI, можно заменить на local).
6.2 TruLens
Что это Платформа для оценки и мониторинга LLM-приложений (от Truera).
Использование
from trulens_eval import TruChain, Feedback
from trulens_eval.feedback import Groundedness
grounded = Groundedness()
f_faithfulness = Feedback(grounded.groundedness_measure_with_cot_reasons)
tru = TruChain(rag_chain, feedbacks=[f_faithfulness])
tru.invoke("Сколько стоит iPhone 15?")
Плюсы Глубокий анализ галлюцинаций, интеграция с LangChain. Минусы Бесплатная версия ограничена.
7. Пет-проект для закрепления
Задача Оценить свою RAG-систему по трём метрикам с помощью RAGAS.
Инструменты Python, RAGAS, любой LLM (можно локальный, например, Ollama)
Шаги
- Подготовить датасет из 50-100 примеров (вопрос, ответ, retrieved context)
- Запустить RAGAS с метриками faithfulness, answer_relevancy, context_relevancy
- Проанализировать, где метрики низкие:
- Низкий context_relevancy → проблемы с retrieval
- Низкий faithfulness → LLM галлюцинирует
- Низкий answer_relevancy → LLM отвечает не на вопрос
- Улучшить систему:
- Запустить оценку снова, увидеть улучшение
Ожидаемый результат Вы получите численные метрики для своей RAG-системы и поймёте, куда направить усилия по оптимизации.
Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 5 | Оценка retrieval (дополняет context relevance) |
| 7 | Оптимизация latency (метрики помогают не ухудшить качество) |
| 17 | Уменьшение галлюцинаций (faithfulness) |
| 131-140 | LLM-as-Judge подробно (bias, калибровка) |
| 134 | Faithfulness в production (RAGAS) |
16. Как вы оцениваете качество генерации в RAG. Назовите 3 ключевые метрики.|16. Как вы оцениваете качество генерации в RAG. Назовите 3 ключевые метрики.|16. Как вы оцениваете качество генерации в RAG. Назовите 3 ключевые метрики.|16 полностью разобран. Переходим к вопросу 17, когда будете готовы|Вопрос 16 полностью разобран. Переходим к вопросу 17, когда будете готовы]]
Навигация
- Предыдущий: 15
- Следующий: 17
- Индекс: 00. Индекс разборов