RAGソース認証

引用される ≠ 検証されている

企業AIが「内部ポリシーセクションXに基づく」と回答するとき、引用されたソースが変更されていない原本と一致する保証はない。RAGインデックスは定期的に再構築され、文書はバージョン管理され、エンベディングはドリフトする。Lemmaは、AI回答内の各引用が、それが参照すると主張する正確な文書バージョンに暗号論的に紐付けられていることを証明する。

P2 AI出力の検証可能性 法務テック · 企業ナレッジマネジメント · 金融コンプライアンス 16 min read

問題提起

AIエージェントは、応答中に典拠を明示する習慣を身につけました。「社内規程第3条第2項により」「国税庁通達X号によれば」「契約書第7条には」──このような引用は、応答の説得力を支え、業務利用の前提条件にもなっています。

しかし応答を受け取る側には、その引用が真正かを検証する手段がありません。応答テキストだけを見ても、次の3つを区別できないからです:

  • 実在する原本から正しく引用されたもの
  • 実在する原本に近いが、文言が微妙に異なるもの(パラフレーズ)
  • 完全に存在しない引用(ハルシネーション)

加えて構造的な問題があります:

  • 応答テキスト中の引用箇所が、retrieve された具体的なチャンクのどこと対応しているか、暗号的に証明されていません
  • retrieve されたチャンクが、そもそも原本と一致しているかも、別レイヤで担保されない限り曖昧です
  • RAGインデックスが時間とともに再構築されれば、過去の応答が当時参照していたチャンクは消えていきます

法務、税務、医療、金融、コンサルティング──いずれも、誤った引用に基づく判断は重大な責任問題に発展する領域です。応答の事後検証可能性は、運用上のオプションではなく、業務継続性の前提です。

シナリオ

大手税理士法人のAIエージェントは、税法・通達・過去の事例を参照しながら、顧客企業に税務ガイダンスを提供しています。AIは「国税庁通達X号第3項により、当該支出は損金算入可能」のように、典拠を明示して回答します。

2026年8月、ある法人顧客がAIの回答を前提に会計処理を進めます。決算後の税務調査で「その通達にそのような規定はない」と指摘されます。法人は税理士法人に説明を求めます。

税理士法人はAI応答ログを確認します。ログには応答テキストと「通達X号より」という典拠表示が残っているだけ。AIが応答時点で実際に retrieve したチャンクが、通達X号の原本と一致していたか、応答テキストがそのチャンクから正確に引用されたか──いずれも事後検証できません。RAGインデックスはその後の通達追加で再構築されており、当時の状態は再現不能です。

Lemmaが導入されていれば、応答の生成時点で次が同時に封じられています:

  • AIエージェントの識別子と応答時刻
  • retrieve されたチャンク群のハッシュ
  • そのチャンクと原本(RAGコンテンツ来歴で固定化済み)の暗号的束縛
  • 応答テキスト中の引用区間と、該当チャンクの暗号的紐付け

顧客と税理士法人は、独立に検証できます──「2026年8月18日のAI応答で引用された通達X号第3項は、当時の原本のこの箇所であり、応答テキストはそこから一字一句正確に引用された」ことを。あるいはその逆──「ログ上の引用は、当時の原本に存在しない」ことが暗号的に明らかになる場合もあります。

責任の所在が、推測ではなく証明で決まります。

アーキテクチャ

Lemmaの4つの暗号レイヤが、AI応答のライフサイクルに対応します。

1. ENCRYPT ─ 応答生成時の引用要素の密封

AIエージェントが応答を生成する瞬間、retrieve したチャンク群、生成された応答テキスト、応答内の引用区間を、AES-GCMで暗号化します。要素間の対応関係は、原本を平文化することなく記録できます。

2. PROVE ─ 引用の暗号的束縛

ZKサーキット上で、(a) AIエージェント識別子、(b) retrieve されたチャンクのハッシュ、(c) 原本のdocHash(RAGコンテンツ来歴側で既に固定化されている前提)、(d) 応答テキスト中の引用区間── これら4要素の整合性を証明として封じます。「AIが何を見て、どこから引用したか」が一気通貫で証明されます。

3. DISCLOSE ─ 文脈別の選択的開示

応答受け手の権限に応じて開示範囲を制御します。顧客には引用箇所と原本の存在証明、規制当局には完全なチャンクと retrieve 履歴、第三者監査には引用整合性の証明のみ──といった階層的開示が、発行者署名付きで実行できます。

4. PROVENANCE ─ 応答そのものの永続記録

応答時刻、AIエージェント識別子、引用元のdocHash、応答ハッシュをオンチェーンに刻みます。RAGインデックスが再構築されても、AIエージェントが入れ替わっても、過去応答の引用整合性は永続的に検証可能です。

┌──────────────────────────────────────────────────────────┐
│  AIエージェント応答生成                                    │
│  クエリ → retrieve → チャンク選択 → 応答テキスト生成         │
└───────────────────────┬──────────────────────────────────┘
                        │ 応答 + 引用区間 + retrieveチャンク

┌──────────────────────────────────────────────────────────┐
│  ENCRYPT (AES-GCM)                                       │
│  ・retrieve チャンク群を暗号化                              │
│  ・応答テキスト中の引用区間を封印                             │
│  → 要素間の対応関係を原本平文化なしで記録                     │
└───────────────────────┬──────────────────────────────────┘
                        │ 暗号化済み引用要素

┌──────────────────────────────────────────────────────────┐
│  PROVE (ZK Circuit)                                      │
│  束縛:(a) AIエージェント識別子 (b) チャンクハッシュ         │
│        (c) 原本docHash(来歴で固定化済み)                    │
│        (d) 応答テキスト中の引用区間                          │
│  → 「AIが何を見て、どこから引用したか」を一気通貫で証明        │
└───────────────────────┬──────────────────────────────────┘
                        │ ZK証明 + 引用束縛

┌──────────────────────────────────────────────────────────┐
│  DISCLOSE (選択的開示)                                     │
│  顧客 → 引用箇所 + 原本の存在証明                           │
│  規制当局 → 完全なチャンク + retrieve履歴                    │
│  第三者監査 → 引用整合性の証明のみ                           │
└───────────────────────┬──────────────────────────────────┘
                        │ 開示済み属性

┌──────────────────────────────────────────────────────────┐
│  PROVENANCE (On-chain)                                   │
│  応答時刻 / AI識別子 / 引用元docHash / 応答ハッシュ         │
│  → RAG再構築・エージェント入れ替え後も引用整合性は不変         │
└──────────────────────────────────────────────────────────┘

証明される事実

LemmaのCitation Proverによって生成される引用proofは、以下の事実を暗号学的に確立します:

1. 引用時点の文書ハッシュ

  • ソース文書の正確な SHA-256 ハッシュ(引用が生成された時点でのもの)。
  • このハッシュは、文書の論理名やストレージパスだけでなく、文書バージョンを一意に識別します。
  • proofは、ハッシュが後続または以前のバージョンではなく、AIが実際に検索した文書コンテンツと一致することを保証します。

2. 文書バージョン / コンテンツ識別子 (CID)

  • 不変ストレージ内の正確な文書バージョンを特定するCID(IPFSスタイルのコンテンツアドレス識別子)。
  • proofは、文書ハッシュをこのCIDにバインドし、元の文書ストアがなくなった場合でも、コンテンツアドレスネットワークから引用コンテンツを取得できることを保証します。
  • 文書が可変システム(SharePoint、Google Drive、S3)に保存されている場合、Lemmaは取り込み時にハッシュ‑CIDペアをアンカーします;後続の変更は新しいハッシュ‑CIDペアを生成します。

3. 引用‑ソースバインディング

  • AIによって引用された特定のテキストセグメントがハッシュで識別される文書の部分文字列であること。
  • proofは、引用テキストが文書内の特定の文字オフセット(または段落/文の位置)に現れることを示します。
  • バインディングは、使用されるZKスキームに応じて、コミットメント包含証明または部分文字列チェック回路を介して検証されます。

4. 発行者の署名

  • 文書の承認された発行者(例:法務部門、コンプライアンス担当者、文書所有者)からのデジタル署名。
  • 署名は文書ハッシュ(およびオプションのメタデータ)に対して行われ、文書が信頼できるソースから発行されたことを証明します。
  • proofは、署名者の秘密鍵を明らかにすることなく、署名の有効性を検証します。

5. タイムスタンプ

  • 引用が生成された壁時計時間(UTC、マイクロ秒精度)。
  • タイムスタンプはproofに埋め込まれ、オンチェーンにアンカーされ、引用イベントのグローバルに一貫した順序付けを提供します。
  • Lemmaはブロックチェーンのコンセンサス時間(ブロックタイムスタンプ)をトラストレスなクロックとして使用します;proofのタイムスタンプは、proof digestが記録されたブロックより早くならないことが保証されます。

6. RAGインデックスライフサイクルからの独立

  • proofは、RAGインデックス、ベクトルエンベディング、または検索パイプラインの変更に関係なく有効なままです。
  • proofがベクトルエンベディングやインデックスメタデータではなく、文書ハッシュとCIDにコミットするため、以下の影響を受けません:
    • RAGインデックスの再構築
    • エンベディングモデルのアップグレード
    • ベクトルデータベースの移行
    • チャンキングや前処理ロジックの変更
  • 検証者はRAGシステムの内部状態ではなく、オンチェーンハッシュレジストリのみを信頼すればよいです。

7. 引用コンテキストの否認防止

  • proofには、引用を生成したクエリコンテキスト(ユーザーの質問、セッションID、AIモデルバージョンなど)のハッシュが含まれます。
  • これにより、発行者が後で「AIは異なるクエリを引用した」または「引用が文脈から外れている」と主張することを防ぎます。
  • コンテキストハッシュはAIサービス(または委任された証明鍵)によって署名され、proofの一部として検証されます。

検証手順

任意の当事者は、以下の手順でこれらの事実を検証できます:

  1. proofを取得する – AIレスポンスに添付されている、または検証可能な資格証明に保存されているものを取得。
  2. オンチェーンアンカーを取得する – 記録されたブロックでLemmaRegistryからproof digestとメタデータを取得。
  3. 文書ハッシュレジストリをチェックする – 文書ハッシュが登録され、主張されたCIDにリンクされていることを確認。
  4. ZK proofを検証する – 公開パラメータを使用して検証アルゴリズムを実行。
  5. 発行者署名を検証する – 発行者の公開鍵(オンチェーンまたはDID文書で公開されているもの)を使用。
  6. タイムスタンプの整合性を確認する – proofのタイムスタンプがオンチェーンブロックタイムスタンプと一致することを確認(許容範囲内)。
  7. コンテキストハッシュを再計算する – 必要に応じて、クエリコンテキストをハッシュし、コミットされた値と比較。

すべての手順が通過すれば、検証者は元の文書ストア、RAGインデックス、内部ログにアクセスすることなく、上記の7つの事実を確信できます。

はじめる

証明する準備はできましたか?

ユースケースについてお聞かせください。1営業日以内にご返信いたします。