mcpField
R
RAGScore

RAGScore

ローカル
github.com/HZYAI開発ツール1522 週間前に更新

RAGScore について

RAGScoreは、ドキュメントからQAデータセットを生成し、RAGエンドポイントを評価するコマンドラインおよびPythonツールキットです。ローカルとホスト型のLLMに対応し、評価指標と失敗診断を備えています。

主な機能

  1. 01ドキュメントからQAペアを生成
  2. 02RAGエンドポイントの回答を評価
  3. 035つの観点で回答品質を採点
  4. 04一般的な失敗原因を分類
  5. 05ローカルのOllamaまたはホスト型LLMを利用

活用シーン

  1. 01文書群からテスト質問を作成
  2. 02RAGのリリース前に回答品質を測定
  3. 03検索漏れやハルシネーションを特定
  4. 04ローカルモデルで機密文書を評価

MCP 対応

`ragscore serve`でMCPサーバーとして実行し、機能をMCPクライアントに提供できます。テレメトリーの収集はこのモードに限られます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"hzyai-ragscore": {
"command": "uvx",
"args": [
"ragscore"
],
"env": {
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"ANTHROPIC_API_KEY": "<ANTHROPIC_API_KEY>"
}
}
}
}
起動コマンドuvx ragscore
設定が必要な環境変数
OPENAI_API_KEYシークレットOpenAI API key (if using OpenAI provider)
ANTHROPIC_API_KEYシークレットAnthropic API key (if using Anthropic provider)

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiragscore0.8.6

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

RAGScore ロゴ

PyPI version PyPI Downloads Python 3.9+ License Ollama Open In Colab MCP

2つのコマンドでQAデータセットを生成し、RAGシステムを評価

🔒 プライバシー優先 • ⚡ 超高速 • 🤖 あらゆるLLMに対応 • 🏠 ローカルまたはクラウド • 🌍 多言語対応

English | 中文 | 日本語 | Deutsch


⚡ 2行でRAGを評価

# Step 1: Generate QA pairs from your docs
ragscore generate docs/

# Step 2: Evaluate your RAG system
ragscore evaluate http://localhost:8000/query

これだけです。 正解率スコアと誤ったQAペアをすぐに確認できます。

============================================================
✅ EXCELLENT: 85/100 correct (85.0%)
Average Score: 4.20/5.0
============================================================

❌ 15 Incorrect Pairs:

  1. Q: "What is RAG?"
     Score: 2/5 - Factually incorrect

  2. Q: "How does retrieval work?"
     Score: 3/5 - Incomplete answer

🚀 クイックスタート

インストール
pip install ragscore              # Core (works with Ollama)
pip install "ragscore[openai]"    # + OpenAI support
pip install "ragscore[notebook]"  # + Jupyter/Colab support
pip install "ragscore[all]"       # + All providers

すでにインストール済みですか? 最新の状態を保ちましょう。新しいバージョンでは、失敗の診断や取得したコンテキストの記録などの機能が追加されます。

pip install --upgrade ragscore
オプション1:Python API(ノートブック向け)

Jupyter、Colab、迅速な反復開発に最適です。すぐに可視化できます。

from ragscore import quick_test

# 1. Audit your RAG in one line
result = quick_test(
    endpoint="http://localhost:8000/query",  # Your RAG API
    docs="docs/",                            # Your documents
    n=10,                                    # Number of test questions
)

# 1b. Tailored QA — target specific audiences
result = quick_test(
    endpoint="http://localhost:8000/query",
    docs="docs/",
    audience="developers",                   # Who asks the questions?
    purpose="api-integration",               # What's the document for?
)

# 2. See the report
result.plot()

# 3. Inspect failures
bad_rows = result.df[result.df['score'] < 3]
display(bad_rows[['question', 'rag_answer', 'reason']])

豊富なオブジェクト API:

  • result.accuracy - 正解率スコア
  • result.df - すべての結果を含む Pandas DataFrame
  • result.plot() - 3パネルの可視化(detailed=Trueの場合は4パネル)
  • result.corrections - 修正が必要な項目のリスト
オプション2:CLI(本番環境向け)
QAペアを生成
# Set API key (or use local Ollama - no key needed!)
export OPENAI_API_KEY="sk-..."

# Generate from any document
ragscore generate paper.pdf
ragscore generate docs/*.pdf --concurrency 10

# Tailored QA generation — target specific audiences
ragscore generate docs/ --audience developers --purpose faq
ragscore generate docs/ --audience customers --purpose "pre-sales"
ragscore generate docs/ --audience "compliance auditors" --purpose "security audit"
RAGを評価
# Point to your RAG endpoint
ragscore evaluate http://localhost:8000/query

# Custom options
ragscore evaluate http://api/ask --model gpt-4o --output results.json

🔬 詳細なマルチメトリック評価

単一のスコアにとどまりません。detailed=Trueを追加すると、回答ごとに5つの診断指標を、1回のLLM呼び出しで取得できます。

result = quick_test(
    endpoint=my_rag,
    docs="docs/",
    n=10,
    detailed=True,  # ⭐ Enable multi-metric evaluation
)

# Inspect per-question metrics
display(result.df[[
    "question", "score", "correctness", "completeness",
    "relevance", "conciseness", "faithfulness"
]])

# Radar chart + 4-panel visualization
result.plot()
==================================================
✅ PASSED: 9/10 correct (90%)
Average Score: 4.3/5.0
Threshold: 70%
──────────────────────────────────────────────────
  Correctness: 4.5/5.0
  Completeness: 4.2/5.0
  Relevance: 4.8/5.0
  Conciseness: 4.1/5.0
  Faithfulness: 4.6/5.0
==================================================
指標測定内容スケール
正確性正解となる回答との意味的な一致度5 = 完全に正確
完全性重要なポイントをすべて網羅しているか5 = 完全に網羅
関連性質問に適切に答えているか5 = 質問に完全に沿っている
簡潔性要点に絞られ、冗長な表現がないか5 = 簡潔で正確
忠実性事実を捏造していないか5 = 完全に忠実

CLI:

ragscore evaluate http://localhost:8000/query --detailed
🔍 失敗の診断(--diagnose)

回答が失敗したとき、--diagnoseを使うと原因がわかります。検索漏れ、生成時のハルシネーション、不完全な回答、誤った解釈などを特定できます。

ragscore evaluate http://localhost:8000/query --diagnose
🔍 Failure Diagnosis:
  Retriever Miss: 3 (42.9%)
  Generator Hallucination: 2 (28.6%)
  Incomplete Answer: 1 (14.3%)
  Wrong Interpretation: 1 (14.3%)

各QAペアの生成時にすでに作成されているsupport_spanを利用し、評価時に根拠となるコンテキストを提供します。--detailedと組み合わせると、詳細な診断をすべて確認できます。

ragscore evaluate http://localhost:8000/query --diagnose --detailed -o results.json
カテゴリ意味
検索漏れRAGが証拠を含むチャンクを取得できなかった
生成時のハルシネーション正しく取得したものの、情報を捏造した
不完全な回答正しく取得したものの、回答が部分的だった
誤った解釈正しく取得したものの、内容を誤解した

📓 デモ用ノートブック全文 — ミニRAGを構築し、詳細な指標でテストできます。

🎯 対象者と目的のデモ — 開発者、顧客、監査担当者などに合わせたQAを生成できます。

🏠 Ollamaローカルデモ — APIキー不要で、100%プライベートなRAG評価を実現します。


🏠 ローカルLLMで100%プライベート

# Use Ollama - no API keys, no cloud, 100% private
ollama pull llama3.1
ragscore generate confidential_docs/*.pdf
ragscore evaluate http://localhost:8000/query

最適な用途: 医療 🏥 • 法務 ⚖️ • 金融 🏦 • 研究 🔬

Ollama モデルの推奨

RAGScore は、JSON 形式で複雑な構造化 QA ペア(質問+回答+根拠+根拠箇所)を生成します。そのため、指示への追従性と JSON 出力能力に優れたモデルが必要です。

モデルサイズ最小 RAMQA 品質推奨用途
llama3.1:70b40GB48GB VRAM優秀GPU サーバー(A100、L40)
qwen2.5:32b18GB24GB VRAM優秀GPU サーバー(A10、L20)
llama3.1:8b4.7GB8GB VRAM良好ローカルで最適な選択肢
qwen2.5:7b4.4GB8GB VRAM良好ローカルで使える優れた代替モデル
mistral:7b4.1GB8GB VRAM良好ローカルで使える優れた代替モデル
llama3.2:3b2.0GB4GB RAMまずまずCPU のみ/テスト用
qwen2.5:1.5b1.0GB2GB RAM低い推奨しません

最小推奨モデル:8B 以上。 小型モデル(1.5B~3B)では、根拠箇所の品質が低下し、長いチャンクでタイムアウトする場合があります。

Ollama のパフォーマンスガイド
# Recommended: 8B model with concurrency 2 for local machines
ollama pull llama3.1:8b
ragscore generate docs/ --provider ollama --model llama3.1:8b

# GPU server (A10/L20): larger model with higher concurrency
ollama pull qwen2.5:32b
ragscore generate docs/ --provider ollama --model qwen2.5:32b --concurrency 5

想定パフォーマンス(28 チャンク、チャンクごとに QA ペアを 5 件):

ハードウェアモデル時間同時実行数
MacBook(CPU)llama3.2:3b約 45 分2
MacBook(CPU)llama3.1:8b約 25 分2
A10(24GB)llama3.1:8b約 3~5 分5
L20/L40(48GB)qwen2.5:32b約 3~5 分5
OpenAI APIgpt-4o-mini約 2 分10

RAGScore は、GPU/CPU の競合を避けるため、ローカルの Ollama では同時実行数を自動的に 2 に減らします。


🔌 対応 LLM

プロバイダーセットアップ備考
Ollamaollama serveローカル、無料、プライベート
OpenAIexport OPENAI_API_KEY="sk-..."最高品質
Anthropicexport ANTHROPIC_API_KEY="..."長いコンテキスト
DashScopeexport DASHSCOPE_API_KEY="..."Qwen モデル
vLLMexport LLM_BASE_URL="..."本番環境向け
OpenAI 互換の任意のサービスexport LLM_BASE_URL="..."Groq、Together など

📊 出力形式

生成された QA ペア(output/generated_qas.jsonl)
{
  "id": "abc123",
  "question": "What is RAG?",
  "answer": "RAG (Retrieval-Augmented Generation) combines...",
  "rationale": "This is explicitly stated in the introduction...",
  "support_span": "RAG systems retrieve relevant documents...",
  "difficulty": "medium",
  "source_path": "docs/rag_intro.pdf"
}
評価結果(--output results.json)
{
  "summary": {
    "total": 100,
    "correct": 85,
    "incorrect": 15,
    "accuracy": 0.85,
    "avg_score": 4.2
  },
  "incorrect_pairs": [
    {
      "question": "What is RAG?",
      "golden_answer": "RAG combines retrieval with generation...",
      "rag_answer": "RAG is a database system.",
      "score": 2,
      "reason": "Factually incorrect - RAG is not a database"
    }
  ]
}

🧪 Python API

from ragscore import run_pipeline, run_evaluation

# Generate QA pairs
run_pipeline(paths=["docs/"], concurrency=10)

# Generate tailored QA pairs for specific audiences
run_pipeline(
    paths=["docs/"],
    audience="support engineers",
    purpose="fine-tuning a support chatbot",
)

# Evaluate RAG
results = run_evaluation(
    endpoint="http://localhost:8000/query",
    model="gpt-4o",  # LLM for judging
)
print(f"Accuracy: {results.accuracy:.1%}")

🤖 AI エージェントとの統合

RAGScore は、AI エージェントと自動化のために設計されています。

# Structured CLI with predictable output
ragscore generate docs/ --concurrency 5
ragscore evaluate http://api/query --output results.json

# Exit codes: 0 = success, 1 = error
# JSON output for programmatic parsing

CLI リファレンス:

コマンド説明
ragscore generate <paths>ドキュメントから QA ペアを生成
ragscore generate <paths> --audience <who>特定の対象者向けに QA を調整
ragscore generate <paths> --purpose <why>ドキュメントの目的に沿って QA を生成
ragscore evaluate <endpoint>ゴールデン QA を使って RAG を評価
ragscore evaluate <endpoint> --detailed複数の指標で評価
ragscore evaluate <endpoint> --diagnose失敗の根本原因を分類
ragscore --helpすべてのコマンドとオプションを表示
ragscore generate --helpgenerate のオプションを表示
ragscore evaluate --helpevaluate のオプションを表示

⚙️ 設定

設定は不要です。以下の環境変数は任意です。

export RAGSCORE_CHUNK_SIZE=512          # Chunk size for documents
export RAGSCORE_QUESTIONS_PER_CHUNK=5   # QAs per chunk
export RAGSCORE_WORK_DIR=/path/to/dir   # Working directory

🔐 プライバシーとセキュリティ

データクラウド LLMローカル LLM
ドキュメント✅ ローカル✅ ローカル
テキストチャンク⚠️ LLM に送信✅ ローカル
生成された QA✅ ローカル✅ ローカル
評価結果✅ ローカル✅ ローカル

コンプライアンス: GDPR ✅ • HIPAA ✅(ローカル LLM 使用時)• SOC 2 ✅


🧪 開発

git clone https://github.com/HZYAI/RagScore.git
cd RagScore
pip install -e ".[dev,all]"
pytest

📡 テレメトリー

RAGScore がテレメトリーを収集するのは MCP サーバーモード(ragscore serve)の場合のみです。通常の CLI と Python API の使用では、テレメトリーは送信されません。

機能の利用状況を把握し、信頼性を向上させるために、限定的な匿名の運用メトリクスを収集します。ドキュメントの内容、プロンプト、QA テキスト、モデル出力、API キー、エンドポイント URL、ファイルパスは収集しません。

MCP モードで収集される情報:

  • 呼び出された MCP ツール
  • LLM プロバイダーとモデル名
  • ragscore のバージョン、Python のバージョン、OS の種類
  • 成功/失敗のステータス
  • ランダムな匿名インストール ID

オプトアウト:

export RAGSCORE_NO_TELEMETRY=1

�� リンク


⭐ RAGScoreがお役に立ちましたら、GitHubでスターをお願いします!
RAGコミュニティのために❤️を込めて作りました

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。