Skip to content

chapter3_rag_functionality

icoxfog417 edited this page Nov 26, 2025 · 1 revision

Genu(ジェニュー)完全ガイド - 第3章:RAG(Retrieval-Augmented Generation)チャット機能

3.1 RAGチャット機能の概要

RAG(Retrieval-Augmented Generation)チャット機能は、Amazon KendraまたはKnowledge Bases for Amazon Bedrockと連携し、事前に登録された社内データや専門文書に基づいて回答を生成する機能です。

3.1.1 RAGとは

RAG(Retrieval-Augmented Generation)は、「情報の検索」と「大規模言語モデルの文章生成」を組み合わせる手法です。

従来のチャットとの違い

通常のチャット

  • LLMの学習時に獲得した知識のみを使用
  • 最新情報や社内固有の情報には対応できない
  • ハルシネーション(誤情報)のリスクが高い

RAGチャット

  • 検索システムから取得した参考ドキュメントに基づいて回答生成
  • 社内情報や最新情報に対応可能
  • ハルシネーションを抑制し、より正確で信頼性の高い情報提供が可能

RAGのメリット

  1. 正確性の向上

    • 実際のドキュメントに基づいた回答
    • 事実確認が可能
  2. 最新情報への対応

    • LLMの学習時期に依存しない
    • データを更新すれば最新情報に対応
  3. 社内知識の活用

    • 社内規定、マニュアル、手順書などを活用
    • ドメイン固有の専門知識に対応
  4. 透明性の確保

    • 参考にしたドキュメントを明示
    • 回答の根拠を追跡可能
  5. 学習不要

    • モデルをFine-tuningする必要がない
    • データを追加するだけで機能拡張

3.2 RAGの処理フロー

RAGチャット機能は以下の3つのステップで動作します。

3.2.1 ステップ1:クエリ生成

処理内容

  • ユーザーが入力した質問を分析
  • 検索に適した形式のクエリ(検索キーワード)を生成
  • 必要に応じて複数のクエリを生成

ユーザーの質問:
「社内WiFiにスマートフォンを接続する方法を教えてください」

生成されるクエリ:
- "社内WiFi スマートフォン 接続方法"
- "WiFi設定 モバイル デバイス"
- "無線LAN スマホ 接続手順"

3.2.2 ステップ2:データ検索

処理内容

  • 生成されたクエリを使用してデータソースを検索
  • Amazon KendraまたはKnowledge Basesが関連ドキュメントを取得
  • 関連度の高い上位の結果を選択

検索対象

  • 事前に登録されたドキュメント(PDF、Word、テキストファイル等)
  • データベースやWebページ(設定による)
  • 社内システムのコンテンツ(統合設定による)

検索の特徴

  • セマンティック検索:意味的に関連する情報を取得
  • キーワード検索:完全一致や部分一致の検索
  • メタデータフィルタリング:属性による絞り込み

3.2.3 ステップ3:回答生成

処理内容

  • 検索結果の情報を「コンテキスト」としてLLMに提供
  • ユーザーの質問と検索結果を組み合わせてプロンプトを構成
  • LLMが検索結果に基づいて回答を生成

プロンプトの構造例

以下の参考情報に基づいて、ユーザーの質問に答えてください。
参考情報に記載がない内容については、「情報が見つかりませんでした」と回答してください。

<参考情報>
[検索で取得したドキュメントの内容]
</参考情報>

<質問>
社内WiFiにスマートフォンを接続する方法を教えてください
</質問>

3.3 RAGチャット機能の有効化

Genuでは、RAGチャット機能を有効化するための2つの方法を提供しています。

3.3.1 選択肢1:Amazon Kendraを使用

Amazon Kendraとは

Amazon Kendraは、フルマネージド型のエンタープライズ検索サービスです。

特徴

  • 豊富なデータソース対応

    • AWS S3
    • SharePoint
    • Salesforce
    • ServiceNow
    • データベース(RDS等)
    • OneDrive
    • その他多数のコネクタ
  • 高度な検索機能

    • 自然言語検索
    • ファセット検索
    • 同義語辞書
    • カスタムランキング
  • エンタープライズ対応

    • アクセス制御リスト(ACL)
    • ユーザーコンテキスト
    • インクリメンタルクロール

推奨する場合

  • 検索基盤の設定をAWSに任せたい
  • チャット形式だけでなく、検索システムとしても使いたい
  • 多様なデータソースを統合したい
  • すでにAmazon Kendraを導入している

有効化手順(CDK使用時)

  1. cdk.jsonの編集

    cd ~/generative-ai-use-cases
  2. packages/cdk/cdk.jsonファイルを開く

  3. 20行目のragEnabledを変更:

    変更前: "ragEnabled": false
    変更後: "ragEnabled": true
  4. ファイルを保存(Command+S / Ctrl+S)

  5. デプロイ

    npm -w packages/cdk run -- cdk deploy --require-approval never --all

Kendraインデックスへのドキュメント追加

  1. AWSコンソールでKendraを開く

    • 「Amazon Kendra」サービスを検索
    • 作成されたインデックスを選択
  2. データソースの作成

    • 「データソースの追加」をクリック
    • S3コネクタを選択(または他のコネクタ)
    • データソース名を入力
    • S3バケットとフォルダを指定
  3. 同期の実行

    • 「今すぐ同期」をクリック
    • 初回同期には時間がかかる場合があります
  4. 検索のテスト

    • Kendraコンソールで検索をテスト
    • 適切な結果が返されることを確認

3.3.2 選択肢2:Knowledge Bases for Amazon Bedrockを使用

Knowledge Bases for Amazon Bedrockとは

Knowledge Bases for Amazon Bedrockは、Amazon Bedrockのフルマネージド型RAG機能です。

特徴

  • 簡単なセットアップ

    • ベクトルデータベースへのデータ取り込みを自動管理
    • インフラ管理が不要
  • 最適化されたRAG

    • Bedrockモデルとの統合
    • 自動的なチャンキング
    • エンベディングの生成
  • コスト最適化

    • OpenSearch Serverlessの冗長化を無効化可能
    • 利用量が少ない場合のコスト削減

GenUでの実装

  • ベクトルデータベース:OpenSearch Serverless
  • 日本語最適化:日本語検索に最適化された設定
  • 柔軟なカスタマイズ:検索パラメータの調整が可能

推奨する場合

  • 検索基盤を柔軟にカスタマイズしたい
  • コストを最適化したい
  • Amazon S3を中心にデータを蓄積している
  • RAGに特化した機能が必要

有効化手順(CDK使用時)

  1. cdk.jsonの編集

    cd ~/generative-ai-use-cases
  2. packages/cdk/cdk.jsonファイルを開く

  3. 26行目のragKnowledgeBaseEnabledを変更:

    変更前: "ragKnowledgeBaseEnabled": false
    変更後: "ragKnowledgeBaseEnabled": true
  4. ファイルを保存(Command+S / Ctrl+S)

  5. デプロイ

    npm -w packages/cdk run -- cdk deploy --require-approval never --all

Knowledge Baseへのドキュメント追加

  1. S3バケットの確認

    • デプロイ時に自動作成されたS3バケットを確認
    • バケット名は CloudFormationのOutputsに表示されます
  2. ドキュメントのアップロード

    # AWS CLIを使用してアップロード
    aws s3 cp document.pdf s3://[バケット名]/documents/

    または、AWSコンソールからマニュアルでアップロード

  3. サポートされるファイル形式

    • PDF
    • Microsoft Word (.doc, .docx)
    • Microsoft PowerPoint (.ppt, .pptx)
    • Microsoft Excel (.xls, .xlsx)
    • テキストファイル (.txt)
    • HTML
    • Markdown (.md)
    • CSV
  4. 同期(インジェスト)の実行

    方法1:AWSコンソールから

    • Amazon Bedrockコンソールを開く
    • 「Knowledge bases」を選択
    • 作成されたKnowledge baseを選択
    • 「データソース」タブから同期を実行

    方法2:AWS CLIから

    aws bedrock-agent start-ingestion-job \
      --knowledge-base-id [KNOWLEDGE_BASE_ID] \
      --data-source-id [DATA_SOURCE_ID]
  5. 同期の確認

    • 同期ステータスを確認
    • エラーがある場合はログを確認

3.3.3 KendraとKnowledge Basesの比較

観点 Amazon Kendra Knowledge Bases for Amazon Bedrock
セットアップの容易さ やや複雑 簡単
データソース 多様(50+のコネクタ) 主にS3
検索機能 高度(ファセット、同義語等) RAGに最適化
カスタマイズ性 高い 中程度
コスト(小規模) 高め 低め
コスト(大規模) 中程度 中程度
検索以外の用途 可能 RAG専用
日本語対応 良好 GenUで最適化済み
メンテナンス やや必要 少ない

3.4 RAGチャットの使い方

3.4.1 基本的な使用方法

  1. RAGチャット画面を開く

    • サイドバーから「RAGチャット」を選択
  2. 質問を入力

    • テキストボックスに質問を入力
    • 通常のチャットと同じように自然言語で質問
  3. 回答の確認

    • AIが検索結果に基づいて回答を生成
    • 回答の下に参考ドキュメントが表示されます

3.4.2 参考ドキュメントの確認

RAGチャットの回答には、以下の情報が表示されます:

表示される情報

  • ドキュメント名:参照したファイル名
  • 関連度スコア:質問との関連性(0-1の値)
  • 抜粋テキスト:関連する部分のテキスト
  • ソースリンク:元ドキュメントへのアクセスリンク

ソースアクセスの仕組み

  • Amazon S3の署名付きURLを使用
  • 一時的なアクセス権限(通常15分間有効)
  • セキュアなファイルアクセス

活用方法

1. 回答を確認
2. 参考ドキュメントのリンクをクリック
3. 元のドキュメント全体を確認
4. 情報の正確性を検証
5. 必要に応じて追加の質問を入力

3.4.3 効果的なRAGチャットの使い方

具体的な質問をする

悪い例

WiFiについて教えて

→ 範囲が広すぎて適切な検索ができない

良い例

社内WiFiにiPhoneを接続する具体的な手順を教えてください。

→ 明確な質問で適切なドキュメントが検索される

コンテキストを提供する

新入社員向けのオンボーディング手順で、初日に実施すべきIT関連の手続きを教えてください。

複数の観点から質問する

最初の回答で不十分な場合は、別の角度から質問:

質問1: 社内WiFiの設定方法を教えてください。
[回答を確認]

質問2: WiFi接続ができない場合のトラブルシューティング方法は?
[回答を確認]

質問3: ゲストWiFiと社員用WiFiの違いは何ですか?

3.5 RAGチャットの活用例

3.5.1 社内手順書への質問応答

シナリオ:新入社員が社内システムの使い方を学ぶ

質問例

社内WiFiに接続する方法を教えてください。

期待される回答

社内WiFiへの接続方法は以下の通りです:

1. デバイスのWiFi設定を開く
2. ネットワーク一覧から「CompanyWiFi-Secure」を選択
3. 認証方式:WPA2-Enterprise
4. ユーザー名:社員番号@company.com
5. パスワード:社内ポータルと同じパスワード
6. 接続をクリック

参考ドキュメント:
- IT基盤利用ガイド.pdf (関連度: 0.95)
- 新入社員向けマニュアル.pdf (関連度: 0.87)

3.5.2 製品マニュアルの検索

シナリオ:カスタマーサポート担当者が製品の技術情報を検索

質問例

製品XYZ-100のエラーコードE-503が表示された場合の対処方法を教えてください。

期待される回答

エラーコードE-503は「通信タイムアウト」を示しています。

対処方法:
1. ネットワーク接続を確認してください
2. ファイアウォール設定を確認し、ポート8443が開いていることを確認
3. デバイスを再起動してください
4. 問題が解決しない場合は、サポートセンター(0120-xxx-xxx)にご連絡ください

参考ドキュメント:
- 製品XYZ-100トラブルシューティングガイド.pdf
- エラーコード一覧表.xlsx

3.5.3 法規制や社内規定の確認

シナリオ:経理担当者が経費精算のルールを確認

質問例

出張時の宿泊費の上限額と、領収書の提出要件を教えてください。

期待される回答

出張時の宿泊費については以下の規定があります:

【上限額】
- 国内出張:1泊あたり15,000円
- 海外出張:都市により異なる(出張規定別表参照)

【領収書の提出要件】
1. 宿泊施設が発行した正式な領収書が必要
2. 宿泊者名、日付、金額、宿泊施設名が明記されていること
3. クレジットカードの利用明細書のみでは不可
4. 電子領収書も原本として認められる

参考ドキュメント:
- 経費精算規程.pdf (第3章 出張費用)
- 出張規定改定通知_2024年4月.pdf

3.5.4 技術ドキュメントの検索

シナリオ:開発者がAPIの使用方法を確認

質問例

認証APIの使用方法と、アクセストークンの更新手順を教えてください。

期待される回答

認証APIの使用方法:

【初回認証】
エンドポイント: POST /api/v1/auth/login
リクエストボディ:
{
  "username": "ユーザー名",
  "password": "パスワード"
}

レスポンス:
{
  "access_token": "...",
  "refresh_token": "...",
  "expires_in": 3600
}

【トークンの更新】
エンドポイント: POST /api/v1/auth/refresh
ヘッダー: Authorization: Bearer [refresh_token]

レスポンス:
{
  "access_token": "新しいアクセストークン",
  "expires_in": 3600
}

参考ドキュメント:
- API仕様書_v2.3.pdf
- 認証フロー設計書.md

3.5.5 FAQ対応

シナリオ:カスタマーサポートがよくある質問に回答

質問例

製品の保証期間と、保証の対象外となるケースを教えてください。

期待される回答

【保証期間】
- 標準保証:購入日から1年間
- 延長保証(オプション):最大3年まで延長可能

【保証対象】
- 正常な使用状況での故障や不具合
- 製造上の欠陥による問題

【保証対象外】
- お客様の過失による破損(落下、水濡れ等)
- 不適切な使用方法による故障
- 分解や改造を行った製品
- 消耗品(バッテリー、ケーブル等)の自然な劣化
- 天災による損傷

参考ドキュメント:
- 製品保証規定.pdf
- よくある質問(FAQ).html

3.6 RAGチャットの高度な活用

3.6.1 フィルタリングとメタデータの活用

ドキュメントにメタデータを付与することで、検索を絞り込むことができます。

メタデータの例

  • 部署:人事、経理、営業、開発
  • ドキュメントタイプ:規定、マニュアル、FAQ
  • 最終更新日
  • アクセス権限レベル

活用例

# Kendraの場合
質問時にフィルタを指定(実装による)

# Knowledge Basesの場合
S3にアップロード時にメタデータを設定
aws s3 cp document.pdf s3://bucket/path/ \
  --metadata department=hr,doctype=policy

3.6.2 複数ドキュメントからの情報統合

RAGチャットは複数のドキュメントから情報を統合して回答できます。

質問例

入社手続きで必要な書類と、それぞれの提出先を教えてください。

複数ソースからの統合

  • 人事規定.pdf → 必要書類のリスト
  • 新入社員ガイド.pdf → 提出先と期限
  • 最新通知.pdf → 最近の変更事項

3.6.3 時系列情報の考慮

最新の情報を優先的に使用するように設定できます。

質問: 在宅勤務の申請手順を教えてください。

回答時の情報源の優先順位:
1. 在宅勤務規定_改定版_2024年.pdf(最新)
2. 在宅勤務規定_2023年.pdf(古い情報として参照)
3. COVID-19対応ガイドライン.pdf(関連情報)

3.7 RAGチャットのチューニング

3.7.1 検索パラメータの調整

検索結果の数

  • デフォルト:上位5件
  • 推奨範囲:3-10件
  • 多すぎるとノイズが増加、少なすぎると情報不足

関連度の閾値

  • 関連度スコアの下限を設定
  • 無関係なドキュメントを除外

チャンクサイズ(Knowledge Basesの場合):

  • ドキュメントを分割する単位
  • 小さすぎると文脈が失われる
  • 大きすぎると検索精度が低下
  • 推奨:300-1000トークン

3.7.2 プロンプトテンプレートのカスタマイズ

RAGチャットのシステムプロンプトをカスタマイズできます。

デフォルトのプロンプトテンプレート

以下の参考情報に基づいて、ユーザーの質問に答えてください。
参考情報に記載がない内容については、「情報が見つかりませんでした」と回答してください。

<参考情報>
{search_results}
</参考情報>

<質問>
{user_question}
</質問>

カスタマイズ例

あなたは社内ヘルプデスクの担当者です。

以下の社内ドキュメントに基づいて、社員からの質問に丁寧に回答してください。
- 回答は簡潔かつ具体的に
- 手順がある場合は番号付きリストで
- ドキュメントに記載がない場合は、ITヘルプデスク(内線1234)への問い合わせを案内

<参考情報>
{search_results}
</参考情報>

<質問>
{user_question}
</質問>

3.7.3 ドキュメント管理のベストプラクティス

ドキュメントの構造化

  • 明確なタイトル:ファイル名で内容がわかるように
  • 目次の作成:長文ドキュメントには目次を追加
  • セクション分け:見出しを使って構造化
  • メタデータの付与:検索性を向上

更新管理

  • バージョン管理:ファイル名に日付やバージョン番号
  • 古い文書の削除:定期的に不要な文書を削除
  • 更新通知:重要な文書の更新を周知

ファイル形式の最適化

  • PDF:検索可能なテキストレイヤーを含める
  • Word/Excel:シンプルな構造を維持
  • HTML/Markdown:構造化タグを活用

3.8 トラブルシューティング

3.8.1 適切な回答が得られない場合

原因1:関連ドキュメントが見つからない

  • 対策:ドキュメントが正しくアップロード・同期されているか確認
  • 確認方法:Kendra/Knowledge Basesコンソールで検索テスト

原因2:質問が曖昧

  • 対策:より具体的な質問をする
  • 例:「WiFi」→「社内WiFiにiPhoneを接続する方法」

原因3:ドキュメントの品質

  • 対策:元のドキュメントを改善
  • チェック項目:
    • テキストが読み取れるか(画像PDFでないか)
    • 情報が明確に記載されているか
    • 見出しやセクション分けがされているか

3.8.2 検索パフォーマンスの問題

遅い検索

  • ドキュメント数が多すぎる
  • インデックスの最適化が必要
  • リソースのスケールアップを検討

高いコスト

  • Knowledge Bases:冗長化設定を確認
  • Kendra:Developer Editionの利用を検討
  • 不要なドキュメントを削除

3.8.3 同期エラー

エラーの確認

# Knowledge Basesの場合
aws bedrock-agent list-ingestion-jobs \
  --knowledge-base-id [KB_ID] \
  --data-source-id [DS_ID]

一般的なエラーと対処

  • ファイル形式エラー:サポートされている形式か確認
  • アクセス権限エラー:S3バケットのIAM権限を確認
  • ファイルサイズエラー:大きすぎるファイルを分割

3.9 セキュリティとアクセス制御

3.9.1 データの保護

  • 転送時の暗号化:TLS/SSL通信
  • 保管時の暗号化:S3、OpenSearch Serverlessで有効化
  • アクセスログ:CloudTrailで監査

3.9.2 アクセス制御

ドキュメントレベル

  • S3バケットポリシー
  • IAMロール
  • Cognitoユーザーグループ

ユーザーレベル

  • Kendraの場合:ACL(Access Control List)
  • 部署や役職に応じたアクセス制限

3.9.3 コンプライアンス

  • データレジデンシー:適切なリージョン選択
  • 保持期間:ドキュメントのライフサイクル管理
  • 監査証跡:アクセスログの保管

まとめ

第3章では、RAGチャット機能について、基本的な仕組み、Amazon KendraとKnowledge Basesの選択、効果的な活用方法、チューニング、トラブルシューティングまで詳しく解説しました。RAGを活用することで、社内データに基づいた正確で信頼性の高い情報提供が可能になります。次章では、文章生成、要約、翻訳などの各種生成機能について説明します。

Clone this wiki locally