CLAUDE LABEN
SANDBOX — Claude Managed Agentsが自前のサンドボックスとプライベートMCPサーバー接続に対応(自己ホスト型ベータ・MCPトンネルはプレビュー)PLATFORM — Claude Developer Platformにcode execution・web search・web fetchのツール新版。長時間コードのセル90秒上限を明示しますCONTEXT — response_inclusionで消費済みの結果ブロックを切り詰め、エージェント処理のコンテキストを節約できますMCP — エンタープライズ管理型MCPコネクタ(Okta連携)が継続。Claude・Claude Code・Cowork横断でゼロタッチ利用できます(Team/Enterpriseベータ)CODE — Claude Codeに/cd・ポストセッションフック・安全モードが加わり、MCPポリシー強制が厳格化されましたMODEL — 主力はOpus 4.8・Sonnet 4.6・Haiku 4.5。Fable 5はClaude Codeから利用できますSANDBOX — Claude Managed Agentsが自前のサンドボックスとプライベートMCPサーバー接続に対応(自己ホスト型ベータ・MCPトンネルはプレビュー)PLATFORM — Claude Developer Platformにcode execution・web search・web fetchのツール新版。長時間コードのセル90秒上限を明示しますCONTEXT — response_inclusionで消費済みの結果ブロックを切り詰め、エージェント処理のコンテキストを節約できますMCP — エンタープライズ管理型MCPコネクタ(Okta連携)が継続。Claude・Claude Code・Cowork横断でゼロタッチ利用できます(Team/Enterpriseベータ)CODE — Claude Codeに/cd・ポストセッションフック・安全モードが加わり、MCPポリシー強制が厳格化されましたMODEL — 主力はOpus 4.8・Sonnet 4.6・Haiku 4.5。Fable 5はClaude Codeから利用できます
記事一覧/API & SDK
API & SDK/2026-06-19上級

search_result ブロックで自前ナレッジに根拠を引かせる — Claude Citations 実装メモ

自前のRAGでClaudeが「どの記事を根拠にしたか」を見失う問題を、search_result コンテンツブロックと citations で解決する実装手順を、4サイト運用の実測値とともにまとめます。

Claude API81CitationsRAG3search_result個人開発87

プレミアム記事

自分が運営する記事群に対して「関連記事を選ぶ」「事実関係を照合する」ための社内エージェントを、Claude API で組んでいたときの話から始めます。私自身、4つの技術ブログを個人開発で回していて、日本語だけで合計600本を超える記事が手元にあります。検索でヒットした候補をプロンプトに連結し、「この主張の根拠になる記事はどれですか」と尋ねる——よくある自前RAGの形です。

最初の実装はそれなりに動いていました。ところが運用を続けるうちに、無視できない癖が見えてきます。Claude は「○○という記事に書かれています」と答えるのですが、その記事名が手元の候補に存在しないことがあるのです。連結した本文のどこを読んで判断したのかも追えません。根拠の出どころが言葉の中に溶けてしまい、後から検証できない。これは社内向けとはいえ、誠実さを欠く挙動でした。

この「どの資料の、どの部分を根拠にしたか」を構造化データとして必ず返させる仕組みが、Claude の Citations、とりわけ search_result コンテンツブロックです。本番に載せ替えて数週間運用した実装と、その過程で踏んだ落とし穴を残しておきます。

言葉で根拠を語らせると、なぜ検証できなくなるのか

自前で本文を連結して渡す方式は、Claude から見ると「ただの長い文字列」です。区切りに ## 記事A のような見出しを入れても、それは意味の境界としては伝わりますが、機械可読な参照子ではありません。結果として返ってくる根拠は「記事Aによると〜」という自然文で、これを正規表現で拾って元記事に紐付け直す後処理が必要になります。

この後処理が脆いのが問題でした。Claude が記事名を少し言い換えたり、複数記事の内容を統合して「これらの記事から」と曖昧にまとめたりすると、マッチに失敗します。私の環境では、引用の機械的な突合成功率がおよそ7割前後で頭打ちでした。残りの3割は人手で確認するしかなく、自動化の意味が半減していました。

根本原因は、参照のIDを渡していないことに尽きます。渡していない以上、返ってくるはずもありません。search_result は、まさにこの「IDを持った検索結果として資料を渡す」ためのコンテンツブロックです。

search_result コンテンツブロックの構造

search_result は、メッセージの content 配列に置ける専用ブロックです。1件の検索結果が、ソース識別子・タイトル・本文断片の配列という三点セットで表現されます。

search_result_block = {
    "type": "search_result",
    "source": "https://claudelab.net/ja/articles/api-sdk/claude-api-prompt-caching-monthly-cost-half-guide",
    "title": "プロンプトキャッシュで月額コストを半分にする実装",
    "content": [
        {"type": "text", "text": "5分TTLのキャッシュブレークポイントをsystemの末尾に置くと…"},
        {"type": "text", "text": "1時間TTLは静的な大きい前提に向きます。料金は…"},
    ],
    "citations": {"enabled": True},
}

ポイントは content が文字列ではなくテキストブロックの配列であることです。Claude はこの配列の何番目を根拠にしたかをインデックスで返すので、断片の切り方がそのまま引用の粒度になります。段落単位で分けておくと、後から「記事のこの段落」へリンクを張りやすくなります。citations.enabledtrue にしたブロックだけが引用の対象になる点も、最初に押さえておきたいところです。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
search_result ブロックで Claude の回答に『どの記事の何文目を根拠にしたか』を構造化データとして必ず付与させる実装
手組みのコンテキスト連結から移行し、引用の取りこぼしを抑えつつ送信トークンを約40%削減した手順
citations 配列を記事リンクへ還元する UI 連携と、本番で踏んだ search_result 特有の落とし穴3点
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

API & SDK2026-06-02
MCP の tools 以外の3つの能力を使い分ける:resources・prompts・sampling の設計
MCP サーバーで何でも tools にしてしまう設計の限界を、resources・prompts・sampling という3つの primitive で解きほぐします。壁紙アプリのアセット管理サーバーを題材に、判断基準と実装、クライアント対応の現実的な制約までまとめました。
API & SDK2026-06-01
Crashlyticsのクラッシュを根本原因ごとに束ねる — Claude APIで作るトリアージの設計メモ
Crashlyticsの「Issue」は同じ原因を別物として散らしてしまうことがあります。累計5,000万DLのアプリ運用で溜まったクラッシュを、Claude APIで根本原因ごとに束ね直して優先順位をつける設計を、動くコードと実測値とともに共有します。
API & SDK2026-05-27
Claude API のスケジュール運用で観察した tail latency と、リトライストームを抑えるガードレール設計
個人開発で 6 サイトを並行運用し、14 日分のログから p95/p99 の輪郭とリトライ嵐の発生条件を観測しました。ジッタ・バジェット・サーキットブレーカーを組み合わせた本番ガードレールの実装と、観測 → 設計 → 改善の比較値をまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →