{"notes":[{"id":"retrieval-augmented-generation/deep-agentic-search","category":"retrieval-augmented-generation","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"Deep Agentic Search","subtitle":"伝言ゲーム","author":"Z. Yuan","paperDate":"2026-08-02","publishedOn":"2026-09-27","paperTitle":"Deep Agentic Search for Repository-Level Code Question Answering: An Empirical Study","paperUrl":"https://arxiv.org/abs/2608.01507","bibliography":{"title":"Deep Agentic Search for Repository-Level Code Question Answering: An Empirical Study","authors":["Amirkia Rafiei Oskooei","Bora Ilci","Alperen Kayim","Mehmet Egemen Uzun","Berat Can","Kaan Emre Kara","Ozan Orhan","Mehmet S. Aktas"],"url":"https://arxiv.org/abs/2608.01507","pdfUrl":"https://arxiv.org/pdf/2608.01507v1","codeUrl":null,"preprint":{"id":"2608.01507","submittedOn":"2026-08-02","url":"https://arxiv.org/abs/2608.01507"},"publication":null,"citation":"@misc{retrievalaugmentedgenerationdeepagenticsearch2026,\n  title = {{Deep Agentic Search for Repository-Level Code Question Answering: An Empirical Study}},\n  author = {Amirkia Rafiei Oskooei and Bora Ilci and Alperen Kayim and Mehmet Egemen Uzun and Berat Can and Kaan Emre Kara and Ozan Orhan and Mehmet S. Aktas},\n  year = {2026},\n  eprint = {2608.01507},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2608.01507}\n}\n","citationPath":"/content/papers/citations/retrieval-augmented-generation/deep-agentic-search.1f8bfd9bac55.bib"},"thumbnail":{"src":"/content/papers/assets/61ecd2fcf8409a060dc66b99123841b7e1bceff328c5f1ee011397bb73773c74.png","width":944,"height":427},"locale":"ja","path":"/content/papers/ja/retrieval-augmented-generation/deep-agentic-search.1524c1778531.md","headings":[{"id":"問題の定義","text":"問題の定義","depth":2},{"id":"問題の解決","text":"問題の解決","depth":2},{"id":"2つの構成","text":"2つの構成","depth":3},{"id":"実装の詳細","text":"実装の詳細","depth":3},{"id":"モデルデータ採点","text":"モデル、データ、採点","depth":3},{"id":"議論","text":"議論","depth":2},{"id":"精度すべてのモデルでsemanticが勝つ","text":"精度：すべてのモデルでSemanticが勝つ","depth":3},{"id":"コスト追加の出費が精度につながらない","text":"コスト：追加の出費が精度につながらない","depth":3},{"id":"deepの仕事の多くはメインagentから見えない","text":"Deepの仕事の多くは、メインagentから見えない","depth":3},{"id":"失敗の分析受け渡しで問題が起きる","text":"失敗の分析：受け渡しで問題が起きる","depth":3},{"id":"著者自身が示した適用範囲","text":"著者自身が示した適用範囲","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[]}],"text":"最近のcoding agentは、「この機能はどこに書かれている？」に答える前に、小さな助っ人を送り出すことがあります。\n\nメインagentが自分でファイルをめくる代わりに、**サブエージェント**（subagent）へ探索を任せるのです。一覧を出し、grepし、ファイルを読みながら探していきます。サブエージェントは独立したコンテキストで作業し、最後に整理した結論だけを返します。メインagentのコンテキストには、簡潔な結果だけが入り、きれいな状態を保てます。\n\nこの設計は**Deep Agentic Search**と呼ばれ、「サブエージェントによるgrep検索」と呼ばれることもあります。論文によると、Claude Code、Codex、Antigravityなどのcoding agentが、相次いでこの方式を採用しました。\n\nでも、本当に正確なのでしょうか？\n\nトルコ・イスタンブールのYildiz工科大学とビジネスインテリジェンス企業Intellicaによるこの実証研究は、2026年8月にarXivへ投稿されました。著者は、あらかじめベクトル索引を作ってagentが直接検索する従来型の方法と、同じコード質問応答で比較しています。\n\n結果は意外なものでした。従来型の正答率が65.2%なのに対し、Deep Agentic Searchは46.2%。しかも、1問正解するためのコストは2倍以上でした。\n\n\n> [!TIP]\n> \n> **なぜ検索をサブエージェントへ任せる？**\n> \n> この設計が解こうとしているのは、**コンテキストの汚染**（context pollution）、あるいはcontext rotと呼ばれる問題です。検索やファイルの読み取りを続けると、コンテキストが無関係なコードや検索結果で埋まり、モデルの判断が不正確になっていきます。\n> \n> 散らかった探索をサブエージェントへ任せ、メインagentは簡潔な結論だけを受け取る。これは、よい**コンテキストエンジニアリング**（context engineering）の実践と考えられています。この論文は、それが回答精度に実際どんな効果を持つのかを調べます。\n\n\n## 問題の定義\n\n研究課題は3つあります。\n\n1. **精度**：リポジトリ全体に関する質問応答では、どちらがよりよく答えられるか？\n2. **コスト**：それぞれいくらかかるか？ 追加の出費で精度は上がるか？\n3. **振る舞いと失敗**：両者はどう動くか？ 失敗するとき、何が起きるか？\n\n## 問題の解決\n\n### 2つの構成\n\n[![2つの検索方式。上のReAct agentは事前構築したベクトル索引からコードを取得し、下のDeep Agentは索引を作らず独立したコンテキストのサブエージェントへ探索を任せる](/content/papers/assets/44afeaa4b2a8e82e998b7d93f70c43ca555a0c6588ac386081af2aedc5612536.png)](/content/papers/assets/44afeaa4b2a8e82e998b7d93f70c43ca555a0c6588ac386081af2aedc5612536.png)\n\n*原論文Fig. 1。[**v1 PDFの2ページ目**](https://arxiv.org/pdf/2608.01507v1#page=2)より。(a)はReAct agentによるSemantic search、(b)はDeep AgentによるDeep Agentic searchです。*\n\n**上半分(a)：Semantic search。**リポジトリを事前にチャンクへ分割し、ベクトルへ変換してベクトルデータベースに保存します。質問が来ると、ReAct agentがそれを検索ベクトルへ変換し、関連するコード片を取得して、自分で回答にまとめます。\n\n**下半分(b)：Deep Agentic search。**索引はありません。Deep Agentは質問を受けると、Explorer Subagentをリポジトリの探索へ送り出します。図では、サブエージェントがあるフォルダで「Not here」と言い、別のフォルダへ移って「Found it!」と言います。最後に結果をメインagentへ返し、メインagentが答えます。\n\n図の両側の破線矢印には「Waiting」とあります。待っている間、メインagentからは、サブエージェントが何をしたか見えません。\n\n### 実装の詳細\n\nどちらの構成もLangChainで実装されています。\n\n**Semantic search**はLangChainのReAct agentを使い、SWE-QAの元の評価プロトコルにある3つのツールだけを与えます。リポジトリ構造の確認、ベクトル検索、ファイルの読み取りです。shellも、ファイルへの書き込みも、計画用ツールもありません。\n\nベクトル索引の設定は付録に記載されています。\n\n- コード向けの`RecursiveCharacterTextSplitter`で分割。1チャンクは500 token、重複は50 tokenです。\n- embeddingはOpenAIの`text-embedding-3-small`（1,536次元）です。\n- リポジトリごとにChromaのベクトルデータベースへ保存し、cosine類似度で毎回上位10チャンクを取得します。\n\n**Deep Agentic search**はLangChainのDeep Agentsフレームワークを使い、標準のツールを残します。ToDoの作成（`write_todos`）、サブエージェントの派遣（`task`）、`grep`、`ls`、`glob`、ファイルの読み取りです。メインとサブエージェントには同じモデルを使います。\n\n\n> [!NOTE]\n> \n> **ツールが違っても、公平に比べられる？**\n> \n> 著者は、この疑問に正面から答えています。ツールの違い自体が、2つの方式を定義しているというのです。ReAct agentに計画とサブエージェントを足せばDeep Agentになり、Deep Agentからそれらを取り除いてベクトル索引へ置き換えればReAct agentになります。\n> \n> したがって比較しているのは、2つの「方式全体」です。1要因だけを変えたアブレーション実験とは異なります。それ以外は、15リポジトリ、720問、4モデル、判定モデル、評価基準をそろえ、各モデルを同じモデル同士で比較しています。\n\n\n比較には、ベクトル検索とgrep以外の違いも含まれます。Semantic側もファイルを読み、ディレクトリ構造を確認できます。Deep側の重要な違いは、計画とサブエージェントへの委任が加わる点です。\n\n### モデル、データ、採点\n\n**モデル**はGemini 2.5 Flash、Gemini 2.5 Pro、Gemini 3 Flashと、別の提供元のオープンウェイトモデルQwen3-235Bの4つです。4モデル×2構成で、計8条件になります。temperatureはすべて0、各問の上限は900秒、80ステップ。超えたら失敗と記録し、再実行しません。\n\n**データ**は、リポジトリ全体の質問応答を評価するSWE-QAです。15のPythonリポジトリから各48問、計720問を使います。12リポジトリはSWE-bench、3つは新しいSWE-bench-Live由来で、規模は約1.3万行から80万行超です。問題はWhat、Why、Where、Howの4種類に、ほぼ均等に分かれます。\n\n**採点**には、評価対象とは異なる提供元のClaude Sonnet 4.6を使います。SWE-QAの5側面、正確性、網羅性、関連性、明瞭さ、推論を採点し、0〜100点にまとめます。70点以上をPass、50〜70点をPartial、50点未満をFailとします。\n\n判定の信頼性も確認しています。2年以上の経験を持ち、論文の共著者ではないソフトウェアエンジニア3人が、実験条件を知らされずに800回答を採点しました。3人の一致度Fleiss' κは0.81。人間の多数決とLLM判定のCohen's κは0.74、得点の平均絶対差は5.2点でした。Deepの回答では一致度が少し低く、κは0.69、Semanticでは0.78です。著者は、Deepの回答が長く複雑なことと関係すると考えています。\n\n## 議論\n\n### 精度：すべてのモデルでSemanticが勝つ\n\n| モデル | Pass（S） | Pass（D） | 差 | 正解1問あたり（S） | 正解1問あたり（D） |\n| --- | ---: | ---: | ---: | ---: | ---: |\n| Gemini 2.5 Flash | 48.4% | 42.8% | 5.6 | $0.213 | $0.436 |\n| Gemini 2.5 Pro | 54.2% | 44.2% | 10.0 | $1.048 | $1.526 |\n| Gemini 3 Flash | 89.3% | 39.7% | 49.6 | $0.179 | $0.858 |\n| Qwen3-235B | 68.8% | 58.2% | 10.6 | $0.012 | $0.291 |\n\n*原論文Table 3・4に基づいて整理。SはSemantic、DはDeep、差の単位はパーセントポイントです。最後の2列は、正解1問あたりのコスト（米ドル）。論文で採用した単一の料金表と実測token数から算出しています。*\n\n4モデルすべてで、SemanticのPass率が上回ります。4モデルのPass率を平均すると、次のようになります。\n\n$$\n\\frac{48.4+54.2+89.3+68.8}{4}\\approx65.2\\%,\\qquad\n\\frac{42.8+44.2+39.7+58.2}{4}\\approx46.2\\%\n$$\n\nこれが要旨にある65.2%対46.2%です。Fail率は21.9%対34.4%。DeepはPassがPartialへ移るだけでなく、完全に誤答する割合も高くなっています。\n\nただし、差の大きさはモデルによって異なります。Gemini 2.5 Flashは5.6ポイントですが、Gemini 3 Flashは49.6ポイントです。対応のある検定は多重比較補正後も4モデルすべてで有意でした。一方、効果量Cliff's δは、Gemini 2.5の2モデルで約0.14、Qwen3-235Bで約0.24。大きいと言えるのはGemini 3 Flashの0.76です。著者も、方向は一致するがGemini 2.5での差は小さく、Gemini 3 Flashで特に大きい、と慎重に述べています。\n\nPassの基準が70点なのは、たまたまSemanticに有利な位置なのでしょうか。著者は基準を50〜90点まで動かしました。Semanticはすべてのモデル、すべての基準で先行し、最小の差は3.8ポイントでした。\n\n### コスト：追加の出費が精度につながらない\n\nDeepは、すべてのモデルで入力tokenを多く使います。最大の差はQwen3-235Bで、Semanticが各問約3.4万token、Deepが約76.1万token。22倍です。\n\n正解1問あたりの金額へ換算すると、4モデルを合わせて0.32米ドル対0.74米ドルで、Deepは約2.3倍高くつきます。\n\n著者は、各問の得点と出費の関係も調べました。入力token数でもツール呼び出し回数でも、両構成の近似直線の傾きは横ばいか下向きです。**費やす量が増えても、得点は上がっていません。**著者は、これが相関である点にも触れています。難しい問題ほど探索が増え、同時に間違えやすいことも、一因です。\n\n遅延の方向は一定しません。Gemini 2.5の2モデルではDeepが速く、Gemini 3 FlashとQwen3-235BではSemanticが速くなります。著者は、遅延は実行環境の影響が大きいため、これで結論を出していません。\n\nリポジトリが大きいほど、Deepの追加コストも大きくなるのでしょうか。15リポジトリのデータでは有意な関係が見つかりませんでした。ただし著者も、標本が少なく、結論はまだ出せないと認めています。\n\n### Deepの仕事の多くは、メインagentから見えない\n\nサブエージェントの操作も数えると、Deepのツール呼び出しの多くは、普通のファイル読み取り（41.6%）とテキスト検索（29.1%）です。その後にToDoの作成、ディレクトリ一覧、サブエージェントの派遣が続きます。\n\nただし、1回の「サブエージェントの派遣」から、まとまった探索が始まります。Deepの2,878実行のうち、2,395実行で少なくとも1回は派遣しています。1実行あたり平均2.1回派遣し、各サブエージェントはさらに約10回ツールを呼びます。合わせると、**ツール呼び出しの68.8%がサブエージェント内で起きており**、メインagentはその過程を直接見ていません。\n\nGemini 3 Flashはわかりやすい例です。Semanticは各問平均8.6回のツール呼び出し、Deepは44.6回です。\n\n### 失敗の分析：受け渡しで問題が起きる\n\n著者はすべてのFail実行を、独立した2つの側面から分類しました。**失敗の仕組み**（なぜ失敗したか）と、**回答の症状**（どう間違ったか）です。Claude Sonnet 4.6で分類し、著者2人が400件を手作業で分類して検証しました。2人の一致度κは、仕組みで0.78、症状で0.86。合意した分類と自動分類の一致度は0.82です。\n\n[![2構成の失敗の仕組みの分布。Semanticは検索・位置特定の失敗が中心で、Deep Agenticは連携の失敗が中心](/content/papers/assets/61ecd2fcf8409a060dc66b99123841b7e1bceff328c5f1ee011397bb73773c74.png)](/content/papers/assets/61ecd2fcf8409a060dc66b99123841b7e1bceff328c5f1ee011397bb73773c74.png)\n\n*原論文Fig. 19。[**v1 PDFの27ページ目**](https://arxiv.org/pdf/2608.01507v1#page=27)より。左の青がSemantic、右のオレンジがDeep Agentic。数値は、それぞれの失敗例に占める割合です。*\n\n失敗例は計1,621件で、Semanticが631件、Deepが990件です。失敗の仕方は大きく異なります。\n\n**Semanticの失敗の多くは「見つからない」。**最大の割合を占めるのは左下の検索・位置特定の失敗で、53.6%です。平均12.6回ツールを呼んでも、正しいファイルへたどり着けませんでした。ほかに18.1%は、十分に読まずに自信を持って答えた例、17.1%は、正しいファイルを読んでも理解を間違えた例です。\n\n**Deepの失敗の多くは「受け渡し」で起きる。**最上部のオレンジの棒、**連携の破綻**（coordination breakdown）が41.8%を占めます。メインagentとサブエージェントの受け渡しで、使える結果を作れない、または統合できない状態です。サブエージェントを持つ構成に固有の失敗なので、Semantic側は0です。\n\nさらに厄介なのは、連携の失敗の多くが**静かに起きる**ことです。その91%で、agentは流暢で断定的な回答を返しており、出力からは問題が見えません。\n\nDeepでは、13.5%がループに陥って止まれなくなる失敗です。失敗全体の24.2%では回答そのものが出ず、Semanticの12.7%を上回ります。\n\n著者の結論は、Deep Agentic Searchが**新しい失敗をひとつ追加した**、というものです。既存の失敗は残り、さらに、出力から最も気付きにくい失敗が加わりました。\n\n### 著者自身が示した適用範囲\n\nこの論文は、自分たちの結果がどこまで適用できるかを丁寧に説明しています。\n\n**第一に、各問は独立した、読み取りだけの単一の質問です。**サブエージェントの本来の価値は、長時間にわたって複数のタスクを進める際に、メインagentのコンテキストをきれいに保つことにあります。この実験は毎回新しい会話を始めるため、その利点が精度として現れる機会がありません。長い作業セッションでバランスが変わるかどうかは、この実験設計では答えられない、と著者は明記しています。\n\n**第二に、Semanticは事前に索引を作れることが前提です。**ファイルシステムが大きすぎる、変更が速すぎる、構造が乱れている場合には、その場で探索する必要があります。索引はリポジトリのある時点のスナップショットです。ブランチが変わり続けるなら更新が必要で、放置すると、気付きにくい部分で回答が古くなります。著者によると、15リポジトリすべてをembeddingにする費用は1米ドル未満で、本当のコストは変更検知、失効、再構築といった運用作業にあります。今回は固定スナップショットを使い、索引に最も有利な条件を与えています。\n\n**第三に、各方式で使ったharnessは1種類だけです。**システムプロンプト、サブエージェントの結果の要約方法、許容ステップ数は、すべて結果に影響します。別のDeep Agentフレームワークは比較しておらず、ほかの実装での差の大きさは未検証です。\n\nさらに、評価セットはSWE-QAひとつ、言語はPythonだけ、モデルは4つです。人気のあるリポジトリなので、モデルの学習データに入っている可能性も高くあります。\n\n## 結論\n\nこの論文の条件、すなわち**索引を作れる固定されたPythonリポジトリに対し、読み取りだけの問いを1問ずつ投げる場合**には、次の結果になります。\n\n1. **Semantic searchのほうが正確。**4モデルすべてでPass率が高く、平均65.2%対46.2%です。差は5.6〜49.6ポイントでした。\n2. **Semantic searchのほうが安い。**正解1問あたり平均0.32米ドル対0.74米ドル。Deepで増えたtokenは、高い得点につながりませんでした。\n3. **Deepの主な失敗は受け渡しにある。**失敗の41.8%はメインagentとサブエージェントの連携の破綻で、その91%が流暢で断定的な誤答を返しました。\n\n著者の提案は実務的です。読み取りだけの質問応答で、リポジトリの索引を作れるなら、索引を使う検索agentを標準にする。重いサブエージェントの制御は、長い作業セッションでのコンテキスト管理、索引を作れない環境、コードを書いたり実行したりするタスクなど、単発の質問の正答率では測れない需要に使います。次の一歩としては、普段は安い意味検索の索引を使い、本当に必要なときだけサブエージェントを派遣するルーターが考えられます。\n\n仕事を任せれば、メインagentのコンテキストは確かにきれいになります。ただ、返ってきた一言が正しいかどうかも、メインagentには見えなくなるのです。\n","imageSizes":{"/content/papers/assets/44afeaa4b2a8e82e998b7d93f70c43ca555a0c6588ac386081af2aedc5612536.png":{"width":1258,"height":1083},"/content/papers/assets/61ecd2fcf8409a060dc66b99123841b7e1bceff328c5f1ee011397bb73773c74.png":{"width":944,"height":427}}}
