Оценка качества RAG-системы

RAG eval в 2026: retrieval metrics, groundedness, citation quality, dataset design, RAGAS, DeepEval, LangSmith и regression gates.

RAG eval в 2026 полезно строить не вокруг абстрактного вопроса “хорошо ли отвечает бот”, а вокруг двух отдельных систем: retrieval layer и answer layer. Если вы не разделяете эти два слоя, то не понимаете, сломался ли поиск, контекстная сборка или сама генерация.

Current guidance OpenAI про evals хорошо ложится на RAG: нужны task-specific datasets, отдельные scorer-ы, baseline, human calibration и постоянное пополнение набора production failures. Для RAG это особенно важно, потому что здесь одна ошибка retrieval уже может испортить даже сильную модель.

Плохой RAG может ломаться двумя способами. Первый: не нашёл нужные документы. Второй: документы нашёл, но всё равно ответил плохо или выдумал лишнее. Поэтому RAG надо тестировать по двум осям, а не одним общим баллом.
Не сводите RAG eval к одной LLM-оценке “насколько ответ полезный”. Без retrieval metrics вы не увидите, что проблема в чанкинге, reranking, top-k или metadata filters.

Короткая версия

У хорошего RAG eval есть 5 частей:

  1. Dataset: реальные вопросы, hard cases, no-answer cases, policy-sensitive cases.
  2. Retrieval metrics: нашли ли нужные chunks и не притащили ли шум.
  3. Answer metrics: groundedness, correctness, citation quality, helpfulness.
  4. Human calibration: проверка, что grader реально коррелирует с человеком.
  5. Regression gate: релиз нельзя катить, если critical metrics просели.

Что обычно меряют

СлойЧто проверять
Retrievalrecall, precision, relevance, metadata filtering
Contextобъём шума, дубликаты, citation coverage
Answergroundedness, correctness, refusal quality, completeness
Productlatency, cost per answer, escalation rate, user feedback
ПромптRAG eval case
Вопрос: «Можно ли вернуть электронику без чека?»
Retrieved context:
- «Возврат электроники — 7 дней»
- «Для возврата нужен чек или номер заказа»
Ответ системы: «Да, можно вернуть в течение 14 дней без чека.»
Ответ модели

Retrieval может быть частично нормальным, но answer layer провален: ошибка по сроку, ошибка по policy и низкая groundedness. Именно так и должен думать хороший RAG eval.

Какие фреймворки чаще всего используют

  • RAGAS для retrieval/groundedness metrics и быстрых eval loops;
  • DeepEval для pytest-style regression checks;
  • LangSmith для experiments, datasets и trace-linked evaluation;
  • trace grading, если RAG уже agentic и multi-step.

1. С чего начинается нормальный RAG eval

OpenAI current guidance по evals подходит здесь почти дословно: сначала нужно определить objective, потом собрать dataset, затем выбрать scorer-ы и только потом сравнивать версии.

Для RAG это обычно выглядит так:

  • что должно находиться;
  • как должен выглядеть хороший grounded answer;
  • когда система обязана честно сказать не найдено;
  • какие ошибки критичны для бизнеса.

Хороший dataset почти всегда включает:

  • happy path;
  • hard retrieval;
  • multi-hop / multi-doc;
  • insufficient context;
  • stale / conflicting context;
  • policy-sensitive;
  • known regressions.

2. Retrieval и answer надо оценивать отдельно

Вот самая полезная mental model:

RAG quality
= retrieval quality
+ context assembly quality
+ answer quality

Если retrieval плохой, answer layer часто не спасти. Но и хороший retrieval не гарантирует хороший answer: модель всё ещё может неправильно синтезировать найденное.

Retrieval layer

Тут обычно проверяют:

  • нашли ли нужный chunk;
  • сколько noise попало в top-k;
  • правильно ли сработали metadata filters;
  • помог ли reranking;
  • не развалился ли hybrid search.

Answer layer

Тут проверяют:

  • groundedness / faithfulness;
  • correctness;
  • полноту ответа;
  • citation quality;
  • refusal correctness, если контекста не хватает.

3. Какие метрики полезнее всего в 2026

Retrieval recall

Показывает, найден ли вообще нужный контекст. Если recall низкий, проблема часто в:

  • chunking;
  • embeddings;
  • top-k;
  • query rewriting;
  • metadata filtering;
  • reranking.

Retrieval precision / relevance

Показывает, сколько мусора вы даёте модели. Для production это часто недооценённая метрика: слишком noisy top-k легко ломает grounded answer.

Groundedness / faithfulness

Проверяет, что ответ подтверждается retrieved context, а не “додуман” моделью.

Citation quality

Если продукт показывает источники, надо отдельно мерить:

  • есть ли citation;
  • указывает ли он на правильный chunk;
  • покрывает ли citation ключевые claims.

No-answer correctness

Очень важная RAG-метрика, которой часто нет в старых статьях: умеет ли система корректно отказаться отвечать, если контекст не найден или недостаточен.

Это особенно критично для support, legal, finance и healthcare flows.

4. Offline eval и online eval

RAG в 2026 почти никогда не оценивают только офлайн.

Offline eval

Подходит для:

  • сравнения embeddings;
  • chunking strategies;
  • reranking changes;
  • prompt/context changes;
  • regression checks перед релизом.

Online eval

Подходит для:

  • thumbs up/down;
  • escalation rate;
  • citation opens;
  • answer accepted rate;
  • fallback / “не найдено” rate;
  • latency and cost tracking.

Обе части нужны. Offline помогает не ломать систему до релиза. Online показывает, что происходит на реальном трафике.

Без техники
{ "title": "Плохо", "content": "Раз в месяц вручную спросили у бота 10 вопросов и решили, что всё вроде работает." }
С техникой
{ "title": "Лучше", "content": "Есть regression dataset, retrieval и answer scorers, weekly refresh плохими кейсами из логов и online feedback loop." }

5. RAGAS, DeepEval, LangSmith: кто за что

RAGAS

RAGAS остаётся хорошим practical default, если вам нужно быстро мерить:

  • groundedness;
  • answer relevance;
  • retrieval relevance;
  • context precision / recall.

Сильная сторона RAGAS: он очень хорошо ложится именно на retrieval-aware eval loop.

DeepEval

DeepEval удобен, когда команда мыслит как инженеры тестов:

  • pytest-style checks;
  • thresholds;
  • CI integration;
  • быстрые regression suites.

Это хороший вариант, если вам нужен eval как часть обычного test pipeline.

LangSmith

LangSmith полезен там, где важно не только “посчитать метрику”, но и:

  • хранить dataset;
  • сравнивать experiments;
  • связывать eval с traces;
  • смотреть, какие retrieved docs реально были у run-а.

Для evolving RAG-систем это часто более зрелая operational позиция, чем “запустили один ноутбук с метриками”.

6. LLM-as-judge всё ещё полезен, но не самодостаточен

Judge-модель полезна для:

  • groundedness rubric;
  • answer quality rubric;
  • pairwise comparison A vs B;
  • citation relevance.

Но judge нельзя превращать в абсолютную истину.

Практические правила:

  1. Держите judge стабильным в рамках эксперимента.
  2. Проверяйте его на human-reviewed subset.
  3. Не смешивайте retrieval eval и answer eval в один vague score.
  4. Для critical scenarios используйте human review lane.

7. Agentic RAG требует trace grading

Если ваш RAG уже не 2-step, а agentic, то обычного final answer eval недостаточно.

Нужно отдельно смотреть:

  • когда агент решил искать;
  • сколько раз он искал;
  • не сходил ли в лишние tools;
  • правильно ли переписал query;
  • не зациклится ли на retrieval loop;
  • какие документы реально повлияли на финальный answer.

Здесь полезны trace grading и trace-linked platforms, потому что проблема может быть не в финальном answer, а в trajectory.

8. Как выглядит практический release gate

Хороший RAG gate обычно не опирается на один aggregate score.

Пример:

  • retrieval_recall >= 0.85
  • groundedness >= baseline - 0.03
  • critical_policy_failures = 0
  • no_answer_correctness >= 0.95
  • latency_p95 и cost_per_answer в допустимом диапазоне

Такой gate лучше отражает реальность, чем “общий score 4.2/5”.

Плюсы

  • Разводит retrieval и answer failures, поэтому быстрее видно реальную причину регрессии
  • Позволяет сравнивать chunking, reranking и prompt changes на общих правилах
  • Помогает строить release gates вместо vibe-based решений
  • Онлайн-метрики добавляют реальный product feedback, а не только lab scores

Минусы

  • Один judge без human calibration быстро создаёт ложную уверенность
  • Synthetic-only datasets плохо отражают реальный трафик
  • Без no-answer cases RAG eval обычно выглядит лучше, чем ведёт себя в проде
  • Слишком общий score скрывает, retrieval или generation сломались

Минимальный RAGAS-style eval loop

from ragas import evaluate
from ragas import EvaluationDataset, SingleTurnSample
from ragas.metrics import (
    Faithfulness,
    ResponseRelevancy,
    ContextPrecision,
    ContextRecall,
)

dataset = EvaluationDataset(
    samples=[
        SingleTurnSample(
            user_input="Какой срок возврата электроники?",
            response="Электронику можно вернуть в течение 7 дней.",
            retrieved_contexts=[
                "Возврат электроники возможен в течение 7 дней с момента покупки."
            ],
            reference="Электронику можно вернуть в течение 7 дней.",
        )
    ]
)

result = evaluate(
    dataset=dataset,
    metrics=[
        Faithfulness(),
        ResponseRelevancy(),
        ContextPrecision(),
        ContextRecall(),
    ],
)

print(result)

Минимальный release gate

def passes_rag_gate(metrics: dict, baseline: dict) -> bool:
    if metrics["retrieval_recall"] < 0.85:
        return False
    if metrics["groundedness"] < baseline["groundedness"] - 0.03:
        return False
    if metrics["critical_policy_failures"] > 0:
        return False
    if metrics["no_answer_correctness"] < 0.95:
        return False
    return True
Проверьте себя

1. Почему нельзя мерить RAG одним общим quality score?

2. Какая метрика особенно важна для честного RAG-поведения?

3. Когда trace grading становится особенно полезным?