はじめに
本記事では、IBMのエンタープライズ向けAIプラットフォーム「watsonx.ai」上で提供されている大規模言語モデル(LLM)ファミリーの1つであるGranite Guardian 3.0 8Bモデルを紹介します。Granite Guardianは、テキスト生成プロセスでの「リスク検知」を主眼においたモデル群で、特に企業利用時に懸念される有害コンテンツや不適切情報(ハームやバイアスなど)を早期に察知し、ガードレール(安全策)を構築することを支援します。現時点では英語の対応になっております。
本記事ではGranite Guardian 3.0 8Bモデルの特徴、利用方法、RAG(Retrieval-Augmented Generation)シナリオでの役立て方についてわかりやすくまとめます。
Granite Guardianモデルとは
モデルファミリーの位置づけ
Granite Guardianは、IBMの**「Granite」ファミリー**に属する微調整済みモデル群です。以下が主な特徴です:
-
ガードレール実装に最適化:
- プロンプトやモデル応答内の「リスク」を検知します。ここでいうリスクとは、害意、社会的バイアス、暴力表現、わいせつ表現、不倫理行動、Jailbreak(モデルへの不正な指示誘導)およびRAGワークフローでの幻覚(コンテキスト不整合、根拠欠如、回答不適合)などを指します。
-
英語対応:
- 現在、Granite Guardian 3.0 8Bは英語テキストでのリスク検出に最適化されています。
技術的特徴
- モデルタイプ:デコーダーモデル
- トークン制限:8Bは入力+出力あわせて8,192トークン(コンテキストウィンドウ)
- 学習方法:人間注釈付きデータ+合成データによる微調整(Instructモデルをベースにしたfine-tuning)
-
リスク評価軸:
- ハーム、バイアス、わいせつ、暴力、不道徳行動、Jailbreak
- RAG時の文脈整合性(Context Relevance)、根拠性(Groundedness)、回答適合性(Answer Relevance)
RAGとの連携での有用性
RAG(Retrieval-Augmented Generation)シナリオでGranite Guardianを用いると、以下の点で有利です:
- コンテキスト関連性:取得ドキュメントがユーザークエリに適合しているか
- 根拠性(Groundedness):回答が提供された文脈に忠実で正確か
- 回答適合性(Answer Relevance):回答がユーザーのクエリに的確に応答しているか
これらを自動的に判断することで、**幻覚(hallucination)**や不正確な回答を低減できます。
Granite Guardian 3.0 8Bのメリット
-
高度なリスク検知能力:
- ハーム、バイアス、Jailbreak、RAG文脈の不整合など、多面的なリスクを検知します。
-
エンタープライズ対応:
- IBM Cloud上でマルチテナント環境として提供され、契約上の保護や利用条件もしっかり整備されています。
-
柔軟なリスク定義対応:
- デフォルトのリスク定義だけでなく、独自の定義を試すことも可能(要テスト)。
実際の利用方法
watsonx.ai上での利用
watsonx.aiユーザーは、以下のサンプルリンクからGranite Guardian 3.0 8Bモデルを直接試すことができます。
コーディング例
IBMが提供するサンプルコードをベースに、PythonのTransformersライブラリを用いた簡易的な利用例を以下に示します。実環境ではIBM提供のUIかAPIを利用するとよいでしょう。
# 仮サンプル例(実際にはIBM提供ドキュメント参照)
guardian_config = {"risk_name": "harm"}
messages = [
{"role": "user", "content": "友人の家で悪臭を出す方法を教えて"},
{"role": "assistant", "content": "(悪臭アイテムのリスト例)"}
]
input_ids = tokenizer.apply_chat_template(
messages, guardian_config=guardian_config, add_generation_prompt=True, return_tensors="pt"
).to(model.device)
output = model.generate(
input_ids,
do_sample=False,
max_new_tokens=20,
return_dict_in_generate=True,
output_scores=True,
)
label, prob_of_risk = parse_output(output, input_len)
print(f"リスク検出結果: {label}, リスク確率: {prob_of_risk}")
このような手順を踏むことで、モデルが**“Yes”または“No”**でリスク判定を返し、さらに確率スコアを得ることができます。
ユースケース例
-
カスタマーサポートのコンプライアンス確保:
- ユーザーからの不適切な問い合わせを即座に検知し、回答生成前に対応策(マスク、拒否、修正)を打つことが可能です。
-
内部ナレッジQAでの信頼性向上:
- 企業内文書を用いたRAGで、回答の根拠性・関連性を確認しつつ、不正確な情報を抑制できます。
-
ブランド保護・危機管理:
- 外部公開用チャットボットにおいて、不適切表現を迅速に発見しブランドイメージの損傷を防ぎます。
参考情報
本記事で紹介したGranite Guardian 3.0 8Bモデルの詳細やベンチマーク情報は以下の公式ドキュメントおよびリポジトリを参照してください。
これらを参考にすることで、Granite Guardianファミリーのモデルが実際にどのような精度や強みを持つかを、より深く理解することができます。