LLMソース引用(エルエルエムソースインヨウ)
LLMが回答を生成する際に参照した情報源のURLやドキュメント名を回答に付記する機能で、ユーザーが出典を確認・検証できるようにする仕組み。
LLMソース引用とは
LLMソース引用(Source Citation)は、AIチャットボットや検索エンジンが回答と一緒に「この情報はここから来ました」という出典を表示する機能です。Google検索の結果に参照サイトのリンクが付くのと同様に、LLMの回答にも情報源へのリンクを付けることで、ユーザーが内容の正確性を自分で確認できるようにします。
2024年以降、Perplexity AI の成功によってソース引用が AI アシスタントの標準機能として定着し、Google Gemini・Microsoft Copilot・Anthropic Claude も同様の機能を実装しています。
主要サービスの引用機能比較
| サービス | 引用スタイル | 最大引用数 | 引用精度 | 特徴 |
|---|---|---|---|---|
| Perplexity AI | 番号付き脚注 [1][2] | 制限なし | 高 | 回答全体に引用分布。学術的スタイル |
| Google Gemini | 出典カード | 3〜5 | 中〜高 | Google Search Grounding 統合 |
| Microsoft Copilot | インライン + サイドパネル | 5〜10 | 中 | Bing 検索結果ベース |
| ChatGPT (Browse) | 脚注リンク | 3〜8 | 中 | Web browsing 有効時のみ |
| Claude (Citations β) | ドキュメント参照 | 制限なし | 高 | アップロード文書への引用に強い |
引用の仕組み
検索統合型(Search-Augmented)
Web検索の結果をLLMのコンテキストに注入し、回答生成時に参照した検索結果のURLを引用として表示します。
処理フロー:
- ユーザーのクエリを検索エンジンに送信
- 検索結果(タイトル・スニペット・URL)を取得
- 検索結果をLLMのプロンプトに含めて回答を生成
- LLMが回答中で参照した検索結果のURLを引用として付記
ドキュメント参照型(Document-Grounded)
ユーザーがアップロードしたPDF・ドキュメントをチャンク分割し、関連チャンクを取得して回答に引用を付けます。
{
"response": "売上高は前年比15%増の120億円でした。",
"citations": [
{
"text": "2025年度の連結売上高は120億円(前年比+15%)",
"source": "annual_report_2025.pdf",
"page": 12,
"chunk_id": "chunk_047"
}
]
}
API実装例
Anthropic Claude の Citations API(β)を使った実装:
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-6-20260620",
max_tokens=1024,
messages=[{
"role": "user",
"content": [
{
"type": "document",
"source": {"type": "base64", "media_type": "application/pdf", "data": pdf_b64},
"title": "Annual Report 2025",
"citations": {"enabled": True}
},
{"type": "text", "text": "売上高について教えてください"}
]
}]
)
引用の品質評価
引用精度(Citation Precision)
付与された引用のうち、実際に回答の根拠となっている引用の割合です。
Citation Precision = 正確な引用数 / 全引用数
不要な引用が多いと、ユーザーが確認すべきリンクが増えて UX が悪化します。
引用再現率(Citation Recall)
回答中の事実主張のうち、適切な引用が付いている主張の割合です。
Citation Recall = 引用付き主張数 / 全事実主張数
引用漏れがあると、ユーザーが検証できない主張が残ります。
引用関連性(Citation Relevance)
引用先のコンテンツが、対応する主張の裏付けとして実際に関連しているかどうかです。URLは付いているが、リンク先の内容が主張と無関係な場合(誤帰属)を検出します。
ソース引用のベストプラクティス
RAG アプリケーションでソース引用を実装する際の推奨事項です。
- チャンクIDを保持する: 検索で取得したチャンクのIDとソース情報を回答生成まで保持し、引用に使用する
- 引用粒度を文単位にする: 段落単位の引用はどの部分がどの出典かが曖昧になる
- リンク切れチェック: 引用URLの定期的な死活監視を実装する
- 引用なし回答を許容しない: 引用を付けられない場合は「この情報は確認できません」と明示する
- 引用元のスニペットを表示する: URLだけでなく、該当箇所の抜粋を表示してクリック前に確認できるようにする
FAQ
Q1: ソース引用があればハルシネーションは防げる?
引用があっても、引用先の内容と回答の主張が一致していない(誤帰属)場合があります。引用は検証の助けにはなりますが、ハルシネーションの完全な防止策ではありません。引用先を実際に確認することが重要です。
Q2: 引用機能がないLLMでも出典付き回答は可能?
プロンプトで「各主張の後に情報源を[1]のように記載してください」と指示することで、擬似的な引用が可能です。ただし、LLM が生成した引用URLは実在しない場合があるため、Web検索で取得したURLのみを使用するように制約する必要があります。
Q3: 社内文書に対する引用機能の実装コストは?
ベクトルDBに文書をチャンク分割して格納し、各チャンクにファイル名・ページ番号のメタデータを付与すれば、基本的な引用機能は 1〜2 週間で実装できます。チャンク分割の品質が引用精度を大きく左右します。