Skip to main content
Glama

retriEVAL

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

Попробуйте вживую (без регистрации) · Посмотрите 2-минутное демо · Панель


Зачем

Пять ответов службы поддержки, оценённых по двум метрикам:

метрика

оценка

прохождение

answer_relevancy

0.98

5/5

faithfulness

0.70

3/5

Каждый ответ был по теме и хорошо написан. Два из них противоречили политике, на которую они якобы опирались: один обещал бесплатный возврат, которого политика не предусматривает, другой выдумал бесплатную замену в течение ночи. При просмотре глазами вы бы одобрили все пять.

В этом и суть. Релевантность спрашивает: ответил ли он на вопрос. Точность спрашивает: есть ли это на самом деле в источнике. Нужны обе, и вторая ловит дорогостоящие ошибки.

Related MCP server: AgentOps EvalBench MCP

Подключение

Самостоятельное размещение. Склонируйте, укажите судью, запустите — ваши данные никогда не покидают вашу машину, и не нужно нигде регистрироваться.

git clone https://github.com/hcarrillo001/retrieval-mcp
cd retrieval-mcp
pip install -r requirements.txt

export ANTHROPIC_API_KEY=sk-ant-...        # or a local judge, below
python server.py                            # stdio, for Claude Desktop / Cursor

Затем просто спросите:

Оцените эти случаи по faithfulness: [{"input": "...", "actual_output": "...", "retrieval_context": ["..."]}]

Передавайте случаи инлайн — ничего не сохраняется: один вызов, без шага настройки. См. Локальный запуск (stdio) для конфигурации клиента и Развертывание как HTTP, если хотите собственный постоянно доступный экземпляр с панелью.

Хотите попробовать, ничего не устанавливая? Есть живая песочница на retrieval-mcp.com — без регистрации, работает на бесплатном судье, ничего не сохраняется.

Полностью локально: установите RETRIEVAL_JUDGE_BACKEND=ollama, и судья тоже работает на вашей машине, так что данные не покидают вашу сеть ни на каком этапе. Полезно, если вы оцениваете то, что нельзя отправлять третьим лицам.

Что вы получаете

  • 9 встроенных метрик плюс пользовательские метрики, которые вы создаёте на простом английском

  • Сменные судьи — Anthropic, Groq, Gemini, OpenRouter или локальная модель Ollama, так что ничего не должно покидать вашу сеть

  • Golden sets из файлов, URL, инлайн JSON, JSONL, CSV или TSV

  • История запусков в Supabase с общими постоянными ссылками и сравнением запусков

  • Лимит расходов, потому что инструмент на основе судьи иначе может накрутить счёт

Честные ограничения

  • Согласованность судьи ещё не проверена на человеческих разметках, поэтому относитесь к оценкам как к сигналу, а не к истине.

  • Golden sets в настоящее время содержат собственные выходы, поэтому повторный запуск одного из них против новых выходов модели означает загрузку второго набора. Разделение — следующее изменение.

  • Golden sets и созданные метрики живут в процессе сервера и теряются при перезапуске. Запуски сохраняются; эти — нет.


Метрики (совместимые с DeepEval)

faithfulness · answer_relevancy · contextual_precision · contextual_recall · contextual_relevancy · hallucination · bias · toxicity · summarization — плюс создаваемые G-Eval метрики, которые вы определяете на простом языке. Все нормализованы так, что выше = лучше (bias/toxicity сообщают чистую долю), и каждая сначала рассуждает, а затем оценивает.

Универсальные golden sets

load_golden_set принимает путь к файлу (включая загруженные файлы), http(s) URL, инлайн JSON-массив или JSONL-текст в форматах JSON / JSONL / CSV / TSV. Имена полей автоматически нормализуются (question→input, answer→actual_output, ground_truth→expected_output, contexts→context, passages→retrieval_context, …), так что большинство публичных бенчмарков загружаются как есть.

Короткие ответы по умолчанию

run_eval оценивает каждый случай, но по умолчанию возвращает только 3 самых низко оценённых (настраивается через limit), с total_cases/shown и указателем на show_run_cases(run_id, offset, limit, metric) для просмотра остальных постранично.

Лимит расходов (чтобы не набежал счёт)

Расходы судьи измеряются по реальному использованию токенов и сохраняются. Установите жёсткий предел:

export RETRIEVAL_BUDGET_USD=20     # 0/unset = unlimited

Как только суммарные расходы достигают лимита, дальнейшие вызовы Anthropic прекращаются, и инструменты возвращают понятное сообщение budget_exceeded. Проверка/сброс через get_budget / reset_budget. (Цены приблизительные — переопределите RETRIEVAL_PRICE_IN/OUT $/1M токенов, чтобы соответствовать текущим ценам для вашей модели.)

Гибридная настройка (локально + постоянно доступная панель)

История запусков использует подключаемое хранилище, выбираемое через env:

  • FileStore (по умолчанию) — JSONL в ~/.retrieval. Ноль настройки, только локально.

  • SupabaseStore — когда заданы SUPABASE_URL + SUPABASE_SERVICE_KEY. История запусков живёт в Postgres, используется локальным CLI, развёрнутым MCP и веб-панелью.

Рекомендуемый гибридный процесс:

  1. Выполните supabase_schema.sql в Supabase (создаёт таблицу runs).

  2. Установите SUPABASE_URL + SUPABASE_SERVICE_KEY на MCP (локально и/или Railway), чтобы каждый запуск записывался централизованно. Каждый запуск фиксирует свои generator_model и judge_model для сравнения между моделями.

  3. Разверните web/ на Vercel (задайте те же переменные окружения Supabase) и привяжите к retrieval-mcp.com. Панель читает историю через /api/runs (сервисный ключ остаётся на сервере) и отображает тренд по моделям, лидерборд моделей и историю запусков. Пока Supabase не подключён, показывает примеры данных.

Локально остаётся вашей бесплатной песочницей (судья Ollama, файловая история); веб-сайт — постоянно доступное окно в общую историю.

Локальный запуск (stdio) — Claude Desktop

pip install -r requirements.txt
export ANTHROPIC_API_KEY=sk-ant-...
{
  "mcpServers": {
    "retrieval": {
      "command": "python",
      "args": ["/ABSOLUTE/PATH/server.py"],
      "env": { "ANTHROPIC_API_KEY": "sk-ant-...", "RETRIEVAL_BUDGET_USD": "10" }
    }
  }
}

Затем: «Загрузите examples/rag_golden.jsonl как 'space', запустите faithfulness, пометьте как v1».

Развертывание как HTTP (доступ откуда угодно)

export RETRIEVAL_TOKEN=$(openssl rand -hex 24)   # required for a public endpoint
export ANTHROPIC_API_KEY=sk-ant-...
export RETRIEVAL_BUDGET_USD=20
python app.py        # serves $PORT (default 8000); MCP at /mcp, health at /healthz

Разверните на Railway (или любом хосте): включённые Dockerfile / Procfile работают как есть. Задайте ANTHROPIC_API_KEY, RETRIEVAL_TOKEN, RETRIEVAL_BUDGET_USD в окружении хоста. Клиенты подключаются к https://<host>/mcp с заголовком Authorization: Bearer <token> — добавьте его как пользовательский коннектор в claude.ai / Claude Desktop или укажите Agent Builder / CI. Состояние (golden sets, история запусков, расходы) живёт на сервере, поэтому сохраняется между машинами.

Посмотрите на реальном RAG-пайплайне (демо)

demo/rag_demo.py строит крошечный сквозной RAG на небольшом размеченном наборе данных (demo/labeled.json + demo/corpus.json): он извлекает с помощью BM25, вычисляет recall@k по золотым отрывкам (детерминированно — оценка ретривера), генерирует ответ, а затем оценивает faithfulness (оценка генератора). Один ответ намеренно галлюцинирован, чтобы вы увидели, как разделяются два типа ошибок.

python demo/rag_demo.py            # offline, no key needed
python demo/rag_demo.py --real     # real generation + RetriEval judge (needs ANTHROPIC_API_KEY)

Он также записывает demo/generated_goldenset.jsonl — загрузите его в MCP (load_golden_set → run_eval) для версии с оценкой судьи. Это мост: ваш пайплайн выдаёт предсказания, набор данных предоставляет метки, а RetriEval оценивает ретривер и генератор независимо.

Подключение к RAG-пайплайну

  • Офлайн (по умолчанию): экспортируйте извлечённый контекст и ответ вашего пайплайна в golden set и оцените его — RetriEval не касается вашего пайплайна.

  • Вживую: добавьте инструмент query_rag(question), который вызывает ваш RAG-эндпоинт или векторное хранилище (Chroma / Supabase pgvector), захватывает контекст и ответ и оценивает за один раз.

Бэкенд судьи

export RETRIEVAL_JUDGE_BACKEND=anthropic          # default
export RETRIEVAL_JUDGE_MODEL=claude-sonnet-4-6
# or local, free:
export RETRIEVAL_JUDGE_BACKEND=ollama
export RETRIEVAL_JUDGE_MODEL=deepseek-r1:70b

Инструменты

Инструмент

Назначение

list_metrics

встроенные + созданные метрики

load_golden_set(name, source, fmt)

назвать набор для повторного использования (только self-host — общий и теряется при перезапуске)

list_golden_sets

что загружено

author_metric(name, criteria, examples)

простой язык → скорер

run_eval(metrics, cases, golden_set, threshold, outputs, label, limit)

оценить набор; передать cases инлайн (JSON/JSONL/CSV/TSV/путь/URL) — ничего не сохраняется

show_run_cases(run_id, offset, limit, metric)

просмотр остальных постранично

evaluate_case(...)

разовая оценка

ground_against_url(url, output, question)

проверить согласованность вывода с веб-страницей (без меток — согласованность, а не корректность)

list_runs(golden_set, last_n)

сохранённые запуски

plot_metric_trend / plot_run / compare_runs

встроенные графики

get_budget / reset_budget

статус лимита расходов / сброс


Лицензия

Apache License 2.0. Автор: Ханнс Каррильо.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables LLM evaluation and observability by uploading documents, building test sets, running RAG pipelines, and automatically scoring answers for groundedness, hallucination risk, retrieval quality, latency, and cost, with tools exposed to MCP-compatible clients.
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that lets any AI agent evaluate RAG outputs -- faithfulness scoring, hallucination detection, and retrieval quality metrics -- with zero API keys, using MCP sampling.
    6
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Evaluates RAG outputs on faithfulness, answer relevancy, and context precision using an LLM-as-a-Judge backend. Exposes tools for running evaluations, scoring individual samples, and checking thresholds, enabling CI gating and on-demand assessment via MCP.
    MIT