5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ollama入門:ローカルAIで“お手軽な秘書”を作る(RAG評価編)

5
Last updated at Posted at 2026-03-09

はじめに

こんにちは!
Dirbatoの社内横断技術支援組織「Backbeat」に所属している繁田です。

前回のローカルRAGの話に続けて、今回はRAG評価方法について投稿してみたいと思います!


RAG、動いた。でも「良い」のか?

前回でRAG(Retrieval-Augmented Generation)を作りました。

  • ドキュメントも入れた
  • ベクトルDBも作った
  • LLMも繋いだ
Q: 有給は何日ありますか?
A: 就業規則によると、有給休暇は付与されます。

おお、ちゃんと答えてる!

……で?


「RAGの精度どうですか?」という質問が一番つらい

ある日、こう聞かれた。

上司「このRAG、精度どれくらい?」

自分「……体感では、まあまあです」

上司「まあまあって何%?」

自分「……LLMが“それっぽく”言ってます」


❌ RAG評価あるある

  • サンプルを数件見て「良さそう」
  • 自分の知ってる質問だけ試す
  • LLMに「正しいですか?」って聞く
  • 「うん、問題なさそう」で出荷

👉 これ、全部ダメです


RAGの何を評価すべきなのか?

RAGは2段構えの地雷があります。

① Retrieval(検索)
② Generation(生成)

よくある事故

状況 原因
それっぽい嘘をつく 検索は正しいが生成が暴走
的外れな回答 検索がズレている
回答が薄い コンテキスト不足
自信満々で間違う ハルシネーション

👉 「回答が正しいか?」だけでは何も分からない


ここで登場、RAGAS

RAGASとは何者?

RAGAS = RAG評価のために生まれてきたOSSライブラリ。LLMを活用してRAGの品質を評価します

  • 論文ベース
  • Pythonライブラリ
  • RAG特化


RAGASが何をしてくれるのか(ざっくり)

RAGASはこう言ってくる。

「RAGの評価、分解して考えようぜ」


RAGASの代表的な評価指標(ここ重要)

1. Context Precision

公式定義(要約)

取得したコンテキストのうち、質問に関連している情報の割合を測る指標。

何を測る?

  • 検索結果に 無関係な文書(ノイズ)がどれくらい混ざっているか

高いと何が嬉しい?

  • 検索が「無駄撃ちしていない」

いつ使う?

  • Retrieverの設定調整
  • chunkサイズ・top-k見直し時

✅ 具体例

質問

有給休暇は何日付与されますか?

取得したコンテキスト

  1. 有給休暇は入社6ヶ月後に10日付与される
  2. 有給休暇の繰越ルールについて
  3. 社員旅行は年1回実施される

👉 ③は質問に無関係な情報
👉 Context Precision は低下する

📎 公式
https://docs.ragas.io/en/latest/concepts/metrics/context_precision/


2. Context Recall

公式定義(要約)

正解を導くために必要な情報が、取得したコンテキストにどれだけ含まれているかを測る指標。

何を測る?

  • 「必要な情報、ちゃんと取れてる?」問題

高いと何が嬉しい?

  • 検索漏れが少ない

いつ使う?

  • 「答えが薄い」「根拠不足」な時

✅ 具体例

質問

有給休暇は何日付与されますか?

取得したコンテキスト

  • 有給休暇制度の概要について説明する

👉 日数(10日など)が含まれていない
👉 答えに必要な情報が欠けている

👉 Context Recall は低い

📎 公式
https://docs.ragas.io/en/latest/concepts/metrics/context_recall/


3. Context Entities Recall

公式定義(要約)

正解回答に含まれるエンティティ(人名・日付・数値など)が、コンテキスト内にどれだけ含まれているかを測る指標。

何を測る?

  • 重要な固有情報を検索できているか

いつ使う?

  • 規程・契約・FAQなど 正確性重視RAG

✅ 具体例

生成された回答

有給休暇は 入社6ヶ月後に10日 付与されます。

取得したコンテキスト

  • 有給休暇は一定期間勤務後に付与される

👉 回答に含まれる

  • 「6ヶ月」
  • 「10日」

という 数値エンティティが含まれていない

👉 Context Entities Recall は低い

📎 公式
https://docs.ragas.io/en/latest/concepts/metrics/context_entities_recall/


4. Noise Sensitivity

公式定義(要約)

コンテキストにノイズが含まれた場合に、モデルの回答品質がどれだけ影響を受けるかを測る指標。

何を測る?

  • 「ゴミ文書に引っ張られやすいRAGか?」

いつ使う?

  • top-kが多い
  • 大量ドキュメントRAG

✅ 具体例

取得したコンテキスト

  1. 有給休暇は10日付与される
  2. 社員旅行は年1回実施される

生成された回答(悪い例)

社員旅行は年1回実施されます。

👉 ノイズ(②)に引っ張られて回答が崩れた
👉 Noise Sensitivity が高い(=悪い)

生成された回答(良い例)

有給休暇は10日付与されます。

👉 ノイズがあっても影響を受けていない
👉 Noise Sensitivity が低い(=良い)

📎 公式
https://docs.ragas.io/en/latest/concepts/metrics/noise_sensitivity/


5. Response Relevancy

公式定義(要約)

生成された回答が、質問にどれだけ関連しているかを測る指標。

何を測る?

  • 質問にちゃんと答えているか

いつ使う?

  • 回答がズレている時
  • プロンプト改善時

✅ 具体例

質問

リモートワークは可能ですか?

生成された回答(良い例)

条件付きでリモートワークが可能です。

👉 質問に直接答えている
👉 Response Relevancy:高い

生成された回答(悪い例)

働き方改革は企業にとって重要です。

👉 質問と意味的にズレている
👉 Response Relevancy:低い

📎 公式
https://docs.ragas.io/en/latest/concepts/metrics/answer_relevance/


6. Faithfulness

公式定義(要約)

生成された回答が、提供されたコンテキストにどれだけ忠実かを測る指標。

何を測る?

  • ハルシネーション耐性

いつ使う?

  • 嘘をつくRAGを止めたい時
  • 法務・規程・医療系

✅ 具体例

取得したコンテキスト

  • 有給休暇は入社6ヶ月後に10日付与される

生成された回答(良い例)

有給休暇は入社6ヶ月後に10日付与されます。

👉 コンテキストの範囲内
👉 Faithfulness:高い

生成された回答(悪い例)

有給休暇は法律上、最低20日付与されます。

👉 コンテキストに存在しない情報を追加
👉 Faithfulness:低い

📎 公式
https://docs.ragas.io/en/latest/concepts/metrics/faithfulness/


実際に使ってみる(最小構成)

インストール

pip install ragas

APIKEYの設定

RAGASの評価に使うLLMのAPIKEYを環境変数に設定します。

*商用利用の場合は利用規約や契約条件を確認してくださいね


データのセット(超重要)

RAGASには質問文や正解データをセットしてきます:
Hugging FaceのDatasetもしくはRagasのEvaluationDatasetで渡してください。

dataset = Dataset.from_dict({
  "question": questions,         # 質問文
  "contexts": contexts,          # LLMから取得したコンテキスト一覧
  "answer": answers,             # LLMからの回答文
  "ground_truth": ground_truths, # 正解データ
})

LLMの評価

確認したい指標とデータをセットして、evaluateで複数データを評価します

from ragas import evaluate
from ragas.metrics import faithfulness, context_precision

evaluate(
  dataset,
  metrics=[faithfulness, context_precision, context_recall]
)

実行すると:

faithfulness: 0.42
context_precision: 0.58
context_recall: 0.62

📎 公式
https://docs.ragas.io/en/latest/references/evaluate/?h=evaluate#ragas.evaluation.evaluate


数字が出た!…で、どうする?

ここが一番大事。

例

指標 スコア
Faithfulness 0.42
Context Precision 0.58
Context Recall 0.62

読み方

  • 質問には答えてる ✅
  • でも
  • 検索結果にないことを盛ってる ❌
  • そもそも検索が足りてない ❌

👉 改善ポイントが明確になります


RAGASを使うと、会話が変わる

Before(地獄)

上司「精度どう?」
自分「まあまあです」


After(文明)

自分「Faithfulnessが0.4なので、生成が暴走してます」
上司「じゃあ検索改善しよう」

👉 話が技術になる


最後に: RAG評価はエンジニアの仕事

  • 「LLMが動いた」はスタート地点
  • 評価して具体的な改善サイクルにつなげましょう

そろそろローカルLLMのお題から外れてきたので、次回は新ネタを投稿します!

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?