Когда выбирать Ragas
Подходит
- Нужно оценить RAG по стандартным метрикам: faithfulness, context precision и recall, response relevancy.
- Нет готового тестового набора: Ragas умеет генерировать тестовые данные, близкие к продакшену.
- Нужны собственные метрики: их можно описать простыми декораторами и получить эксперименты с историей результатов.
- Нужна интеграция с LangChain, LlamaIndex и подобными фреймворками.
Не подходит
- Нужны тесты в стиле pytest с assert и запуском через CLI — удобнее DeepEval (в нём есть и собственные RAG-метрики).
- Нужен декларативный прогон и сравнение моделей без Python-кода — берите Promptfoo.
- Нужна платформа с трассировкой и мониторингом — используйте Langfuse, LangSmith или Arize Phoenix вместе с метриками.
Установка
pip install ragasПримеры тестов
Своя метрика с дискретной оценкой
1import asyncio
2from openai import AsyncOpenAI
3from ragas.metrics import DiscreteMetric
4from ragas.llms import llm_factory
5
6client = AsyncOpenAI()
7llm = llm_factory("gpt-4o", client=client)
8
9metric = DiscreteMetric(
10 name="summary_accuracy",
11 allowed_values=["accurate", "inaccurate"],
12 prompt="""Evaluate if the summary is accurate and captures key information.
13Response: {response}
14Answer with only 'accurate' or 'inaccurate'.""",
15)
16
17
18async def main():
19 score = await metric.ascore(
20 llm=llm,
21 response="The summary of the text is...",
22 )
23 print(f"Score: {score.value}")
24
25
26asyncio.run(main())Пример из README библиотеки: критерий оценки задаётся промптом, а допустимые значения ограничены списком. Метрика вызывается асинхронно (ascore) и использует LLM, созданную через llm_factory.
Типичные ошибки
- Оценка без набора для поиска
- Метрики RAG показывают итог, но не заменяют раздельную проверку поиска и генерации. Если ответ плохой, проверьте отдельно, нашёл ли поиск нужное, и только затем ищите проблему в модели.
- Метрики без калибровки
- Метрики на основе LLM зависят от модели-оценщика и промпта. Сверьте их значения с человеческой разметкой на небольшом наборе, прежде чем ставить пороги.
- Быстро меняющийся API
- Названия модулей и классов метрик меняются между версиями. Фиксируйте версию библиотеки в зависимостях и сверяйте импорты с документацией именно этой версии.
- Синтетические тесты без ревью
- Сгенерированные тестовые данные нужно просматривать глазами: слишком лёгкие или однотипные кейсы завысят оценки. Добавляйте реальные вопросы пользователей.
Вопросы на собеседовании по Ragas
- Что измеряют Faithfulness, Context Precision, Context Recall и Response Relevancy в RAG?
- Чем метрики на основе LLM отличаются от классических (BLEU, ROUGE, Exact Match) и когда какие использовать?
- Как построить эксперимент, чтобы сравнить две версии RAG-пайплайна?
- Как проверить, что результат метрики можно доверять?
- Для чего нужна генерация тестовых данных и чем она может навредить?
Отработать ответы можно на мок-собеседовании.
Частые вопросы
Что такое Ragas?
Open-source библиотека (Apache-2.0) для оценки LLM-приложений: метрики на основе LLM и классические, эксперименты, датасеты и генерация тестовых наборов. Чаще всего её применяют для оценки RAG.
Какие метрики есть в Ragas?
В документации метрики сгруппированы. RAG: Context Precision, Context Recall, Context Entities Recall, Noise Sensitivity, Response Relevancy, Faithfulness. Агенты: Topic Adherence, Tool Call Accuracy, Tool Call F1, Agent Goal Accuracy. Сравнение текстов: Factual Correctness, Semantic Similarity, BLEU, CHRF, ROUGE, Exact Match. Есть также метрики для SQL и универсальные (Aspect Critic, оценка по рубрикам).
Чем Ragas отличается от DeepEval?
Ragas — библиотека метрик и экспериментов с упором на RAG и генерацию тестовых данных. DeepEval — фреймворк в стиле pytest с запуском тестов командой deepeval test run. У DeepEval есть собственные RAG-метрики, а RAGAS-метрики доступны в нём как отдельная группа.