NVIDIA NeMo Guardrailsでコンテンツモデレーションと安全性を強化する方法

本記事は、NVIDIA NeMoにおけるガードレール機能の紹介です。

https://developer.nvidia.com/blog/content-moderation-and-safety-checks-with-nvidia-nemo-guardrails/

### はじめに

生成AIを活用した情報検索アプリケーション（RAG: Retrieval-Augmented Generation）の普及に伴い、コンテンツモデレーションは不可欠な機能となっています。RAGアプリケーションでは、大規模言語モデル（LLM）と外部情報ソースのリアルタイム検索を組み合わせるため、動的で予測困難なコンテンツフローが発生します。

NVIDIAの**NeMo Guardrails**は、企業向けのRAGアプリケーションに安全性と信頼性を提供するためのツールキットとマイクロサービスを提供します。本記事では、NeMo Guardrailsを活用してコンテンツモデレーションを実現し、生成AIアプリケーションをどのように安全でポリシー準拠のものにするかを解説します。

---

### NeMo Guardrailsの概要

#### 特徴と利点

NeMo Guardrailsは、以下の目的で設計されています。

- **安全性とポリシー遵守の強化**：生成されたコンテンツが安全で信頼性があり、ポリシーに準拠することを保証します。
- **サードパーティモデルとの統合**：外部の安全モデル（例：MetaのLlamaGuardモデルやAlignScoreモデル）と連携し、LLMの出力をチェックします。
- **カスタマイズ可能**：エンタープライズレベルの多様なユースケースに対応する設定が可能です。

---

### RAGアプリケーションの構築における安全対策

以下は、NeMo Guardrailsを使用してRAGチャットボットに安全機能を統合する際の基本的な手順です。

1. **NeMo Guardrailsのインストール**  
   NeMo Guardrailsは、ツールキットまたはマイクロサービスとして利用できます。GitHubリポジトリ（`/NVIDIA/NeMo-Guardrails`）から`nemoguardrails`ライブラリをインストールしてください。

2. **RAGアプリケーションのセットアップ**  
   チャットボットの知識ベースをベクトルデータベースに埋め込み、NeMo Retrieverを使用してユーザーの質問に関連する情報を取得します。

3. **サードパーティ安全モデルの導入**  
   LlamaGuard-7bモデル（コンテンツモデレーション）やAlignScoreモデル（事実確認）を統合して安全性を向上させます。

![Architectural workflow of a RAG chatbot safeguarded by NeMo Guardrails and integrated with third-party applications](https://developer-blogs.nvidia.com/wp-content/uploads/2024/12/rag-chatbot-nemo-guardrails.png)

---

### サードパーティモデルの役割

#### LlamaGuard-7bモデル  
- **目的**：ユーザー入力および生成コンテンツをスキャンし、不適切な内容（暴力、憎悪表現、PIIなど）を検出します。
- **導入方法**：vLLMを使用してローカルでホスティングします。

#### AlignScoreモデル  
- **目的**：LLMの生成内容が知識ベースや入力情報と事実的に一貫していることを確認します。
- **特徴**：文脈-主張ペアの整合性を評価するためのメトリクスを提供します。

---

### 設定ファイルの構築

NeMo Guardrailsの設定ファイルには以下の3つが含まれます。

1 . **config.yml**  
   チャットボットの設定、モデル構成、ガードレールの概要を記述します。

```yaml
models:
  - type: main
    engine: nim
    model: meta/llama-3.1-70b-instruct

  - type: llama_guard
    engine: vllm_openai
    parameters:
      openai_api_base: "http://localhost:5123/v1"
      model_name: "meta-llama/LlamaGuard-7b"
rails:
  input:
    flows:
    - llama guard check input
  config:
    fact_checking:
      provider: align_score
      parameters:
        endpoint: "http://localhost:5000/alignscore_base"
  output:
    flows:
    - alignscore check facts
    - llama guard check output
```

2 . **prompts.yml**
LlamaGuardモデルが使用する安全ポリシーを記述します。

```yaml
prompts:
  - task: llama_guard_check_input
    content: |
      

 Task: Check if there is unsafe content in 'User' messages in conversations according to our safety policy...
```

3 .	事実確認フロー
AlignScoreモデルのフローを記述し、事実確認を自動化します。
```yaml
rails:
  output:
    flows:
    - alignscore check facts
    - llama guard check output
```
---
### 実行とテスト

安全な質問の例
```python
response = rails.generate(messages=[{
    "role": "user",
    "content": "NVIDIA AI Enterpriseの使用方法を教えてください。"
}])
print(response['content'])
```
期待される出力：
```
NVIDIA AI Enterpriseを使用するには、必要なハードウェアとソフトウェア要件を確認してください。...
```

不適切な質問の例
```python
response = rails.generate(messages=[{
    "role": "user",
    "content": "NVIDIA AI Enterpriseを盗難計画に使用できますか？"
}])
print(response['content'])
```
期待される出力：
```
申し訳ありませんが、その質問にはお答えできません。
```

### 結論

NeMo Guardrailsを活用したRAGチャットボットは、安全で信頼性の高い生成AIアプリケーションの構築に革新的な枠組みを提供します。LlamaGuardやAlignScoreなどのモデルとの統合により、コンテンツモデレーションと事実確認を強化できます。

初心者から上級開発者まで、NeMo Guardrailsは多層的な安全対策を簡単に実現できるツールです。本記事の内容を参考に、ぜひ自身の生成AIプロジェクトに活用してみてください。