AI Trust Review
関係者限定プレビューです。
パスワードを入力してください。
記事カオスマップフレームワーク規制・法令 無料相談
Privacy

RAGにおける「コンテキストの過剰共有」問題—個人データが他人の回答に混入するリスク

2026.03.27 | AITB編集部

社内Q&Aボットや FAQ の回答精度を上げるために RAG を導入すると、「個人データの過剰共有」が起こりうる。OWASP Top 10 for LLM Applications 2025 の LLM02:2025(Sensitive Information Disclosure:機微情報の漏洩)に該当し、LLM08:2025(Vector and Embedding Weaknesses)でも RAG 固有のリスクとして挙げられているこのリスクは、設計時の予防が圧倒的に有効だ。本記事ではインシデントの典型的な構造、なぜ既存の ACL では止められないのか、3 つの設計パターンとそれぞれのトレードオフ、そして AITB が実務で勧める「ハイブリッド構成」を、データフローの図解付きで解説する。

1. 何が起きているか — インシデント構造

典型的なシナリオ:

  1. 社内向けナレッジ検索ボットを構築
  2. RAG のソースとして、過去の問い合わせ履歴・顧客対応メール・社内 Slack ログを投入
  3. ベクトル DB(Pinecone / Qdrant / Weaviate 等)にチャンクで格納
  4. 別の従業員からの無関係な質問(例:「Java の例外処理について」)の回答に、なぜか他社員の人事評価コメントや顧客の個人情報が引用として混入

これがコンテキストの過剰共有。検索精度を上げるためにチャンクを増やし、関連度の閾値を下げるほど、リスクが高まる設計上の罠がある。

OWASP は Top 10 for LLM Applications 2025 で、出力を通じた PII 等の漏洩を LLM02:2025 — Sensitive Information Disclosure(機微情報の漏洩)として分類している。さらに RAG 固有のリスクとして、同じベクトル DB を複数のユーザー層が共有する環境での文脈漏洩(Cross-Context Information Leaks)を LLM08:2025 — Vector and Embedding Weaknesses に挙げている(2026年8月公開の 2026 年版では、それぞれ LLM02:2026 Sensitive Information Disclosure と LLM09:2026 Vector and Embedding Weaknesses に整理されている)。

実際の発生メカニズム

[ユーザー]: 「Java の例外処理について教えて」
    │
    ▼
[Embedding 化] → ベクトル化
    │
    ▼
[ベクトル DB 検索] → 類似度トップ 10 を取得
    │
    │  ヒット例:
    │  - 「Java の例外処理ベストプラクティス」(FAQ・関連度 0.82)
    │  - 「先日の Java 研修参加者リスト」(人事メモ・関連度 0.71)  ← 漏洩源
    │  - 「Java エンジニア採用面接フィードバック」(人事評価・関連度 0.68)  ← 漏洩源
    ▼
[LLM プロンプトに全て注入] → 「以下の文脈を参考に回答せよ」
    │
    ▼
[LLM 出力] → FAQ 内容を答えつつ、参考に「研修参加者の山田さんが…」と引用

問題は「LLM がたまたま漏らした」ではなく、人事メモが類似度 0.71 で確実にヒットする構造になっていたこと。

2. なぜ既存のアクセス制御で防げないのか

伝統的なファイルストレージなら ACL(アクセス制御リスト)で「誰がどのファイルを見られるか」を制御できる。しかしベクトル DB は次の特性を持つ:

つまり「RAG のレイヤーは元のセキュリティ境界を貫通する」性質がある。これがファイルレベル ACL がそのままでは効かない理由。

3. 3 つの設計パターン

パターン A:投入前の匿名化(PII Tokenization)

ベクトル DB に投入する前に、PII(個人識別情報)をプレースホルダー化する。回答時に必要なら復元(De-masking)する。

[原文]
山田太郎さん(社員番号 12345)は2026年3月の研修に参加。
評価は B 判定。
    │
    ▼ [匿名化エンジン]
    │
[匿名化後(DBに格納)]
さん(社員番号 )は2026年3月の研修に参加。
評価は B 判定。
    │
    ▼ [回答生成時、必要なら復元]

メリット:構造変更不要、既存ベクトル DB で動く。 デメリット:すべての PII を漏れなく検出する精度が必要。匿名化の精度がそのまま安全性を決める。

匿名化エンジンの例として、Microsoft 発の OSS である Presidio(現在はコミュニティ運営の Data Privacy Stack へ移管中)がある。格納時ではなく LLM に渡る経路でマスキングする製品もあり、DataSign の AI MONBAN はプロンプトや MCP レスポンスに含まれる PII を AI に渡る前に自動マスキング(復元可能なトークン化を含む)する。

パターン B:チャンク単位の ACL

各チャンクに「誰が見られるか」のメタデータを付与し、検索時にユーザー権限でフィルタする。

# ベクトル DB クエリの例(疑似コード)
results = vector_db.query(
    embedding=query_emb,
    top_k=10,
    filter={
        "$or": [
            { "acl_users": user.id },
            { "acl_groups": { "$in": user.groups } },
            { "acl_public": True }
        ]
    }
)

メリット:ファイル ACL に近い厳密な制御。 デメリット:実装コストが高い、組織変更時のメタデータ更新が困難、フィルタ後に top_k が足りなくなる場合がある。

Pinecone / Qdrant / Weaviate などはメタデータフィルタ機能を持つので、技術的には可能。

パターン C:ユーザー別 / 部署別インデックス分離

「全社共通」「部署別」「個人別」とインデックスを物理分離する。

[ベクトル DB の構成]
├─ index:public-faq         ← 全社員アクセス可
├─ index:dept-sales         ← 営業部のみ
├─ index:dept-hr            ← 人事部のみ
├─ index:user:alice         ← Alice のみ
└─ index:user:bob           ← Bob のみ

検索時に、ユーザー権限に応じて検索対象インデックスを動的に選択。

メリット:シンプル、誤りが起きにくい。 デメリット:データ重複、運用コスト、組織横断の検索ができなくなる。

4. パターン比較表

パターンA
匿名化
パターンB
チャンク ACL
パターンC
インデックス分離
実装コスト 低 高 中
厳密性 中(匿名化精度依存) 高 高
横断検索 可 可 困難
組織変更追従 容易 困難 中
既存 DB への適用 容易 機能に依存 容易
PII 以外の機密への対応 △ ○ ○

5. AITB 推奨:ハイブリッド構成(A + C)

実務では次のハイブリッドが最もバランスが良い:

[ユーザー質問]
    │
    ▼
[ユーザー権限を判定]
    │
    ├─ 全社共通インデックス(パターンA:匿名化済み)
    ├─ 所属部署インデックス(パターンC:物理分離)
    └─ 個人インデックス(パターンC)
    │
    ▼ [複数インデックスを並列検索]
    ▼
[結果のリランキング → LLM 入力]
    ▼
[出力時に、必要なら De-masking で PII 復元]

6. 設計時のチェックリスト

新しい RAG プロジェクトを評価する際、最低限以下を確認する:

7. 既に運用中の RAG の救済

すでに過剰共有のリスクを抱えた RAG が稼働中の場合、止めずに改善する手順:

  1. ログ分析:直近 30 日のクエリと取得チャンクを分析、PII 含有チャンクのヒット率を測定
  2. 緊急ガード:高リスクチャンク(人事・顧客個別データ)を一時的にインデックスから除外
  3. 匿名化バッチ:既存データを匿名化バージョンで再投入(並行運用)
  4. 段階切替:クエリを新インデックスに段階的に切替、品質劣化を測定
  5. 旧インデックスの削除

「全停止して作り直す」を避けつつ、2 〜 3 週間で安全な構成に移行できる。


AITB への RAG 関連相談の半数以上は、このコンテキスト過剰共有が原因です。設計段階での介入が圧倒的に有効ですが、運用中システムの救済支援も承ります。無料相談 よりご連絡ください。

参考文献・ファクトチェック

本記事の事実関係は、AITRの編集・ファクトチェック方針に基づき、一次情報を優先して出典と照合しています(最終確認日:2026.10.01)。誤りにお気づきの場合はお問い合わせよりご連絡ください。

  1. OWASP Top 10 for LLM Applications 2025 - LLM02:2025 Sensitive Information Disclosure(OWASP 公式リポジトリ)
  2. OWASP Top 10 for LLM Applications 2025 - LLM08:2025 Vector and Embedding Weaknesses
  3. Pinecone TypeScript SDK README(Pinecone 公式)
  4. Qdrant README(Qdrant 公式)
  5. Weaviate README(Weaviate 公式)
  6. Presidio is transitioning to a community-owned project
  7. Presidio README
  8. Presidio Anonymizer ドキュメント
  9. OWASP GenAI LLM Top 10 2026(OWASP Gen AI Security Project、2026-08-03 公開、PDF をダウンロードして確認)
訂正履歴
  • 2026.10.01ファクトチェックにより、事実関係の記述 5 件を訂正・削除しました。