grepの使用をやめたら、エージェントが10倍高速化した話

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00コードベース全体をインデックス化する「Claude Context」というMCPプラグインがあります。
00:00:06これによりコーディングエージェントは必要なコードを素早く取得できます。
00:00:11grepやglobで推測して、正しいファイルが見つかるか不安になる必要はありません。
00:00:15ASTでコードを解析し、セマンティックなベクトル検索と
00:00:20キーワード検索を組み合わせたハイブリッド検索で、コンテキスト使用量を40%削減します。
00:00:24ただし、Claudeのコードを使っていても、Zilliz CloudアカウントとOpenAIのAPIキーが必要です。
00:00:30果たして、その手間とコストに見合うだけのトークン節約効果があるのでしょうか?
00:00:34チャンネル登録をして、確かめてみましょう。
00:00:35「Claude Context」(名前は微妙ですが)は、高性能ベクトルDB「Milvus」の
00:00:43開発者が設立したZillizという企業によって作られました。
00:00:47MCP経由でエージェントに接続するため、Claude Codeだけでなく
00:00:52あらゆるエージェント環境で動作します。
00:00:54コードを検索しやすくするために、3つの複雑な処理を行っています。
00:00:58まず、Tree-sitterを使ってコード全体をパースし、関数やクラスごとにチャンクを作成します。
00:01:03これはTypeScript、Python、Rust、Goなど9つの言語に対応しています。
00:01:08次に、カスタムのMerkle DAGを使用して各ファイルをJSONスナップショットでハッシュ化し、
00:01:15コードベース全体ではなく、変更されたファイルのみを再インデックス化します。
00:01:18そして実際にコードを検索する際は、2種類の検索を同時に行います。
00:01:22コードのセマンティックな意味を探す「ベクトル検索」と、
00:01:29正確なキーワード一致を狙う「BM25インデックス検索」です。
00:01:31これらにより、大規模なコードベースにおいて最大40%のコンテキスト削減を実現します。
00:01:37実際に、150万行のコードを含むVS Codeのコードベースでテストしてみましょう。
00:01:42約150万行の規模です。
00:01:44クローンしたVS Codeのリポジトリ内で、OpenCodeとGLM-5-Turboを使います。
00:01:50Claude Proの週制限を使い果たしたくないからです。
00:01:53こちらに見えているMCPサーバーを設定するために、
00:01:58OpenCodeのJSONファイルに必要な情報をすでに追加済みです。
00:02:01Milvusはローカルで実行も可能ですが、今回はZilliz Cloudを使いました。
00:02:06APIキーを取得して、クラスターを作成しました。
00:02:10AWSクラスターで、パブリックエンドポイントも取得済みです。
00:02:14クラスターと言えば、最初は無料枠を試したのですが、
00:02:19タイムアウトが頻発しました。
00:02:20そのため、有料ですがサーバーレス版を使用することにしました。動作は格段に良くなりました。
00:02:25MCPサーバーの設定が済んだら、Nodeのバージョンが24未満、
00:02:2820以上であることを確認してください。
00:02:31私はこのプロジェクトのためにバージョン22を使っています。
00:02:34これで「index code」「search code」「clear index」「get index status」という
00:02:394つのMCPツールが使えるようになります。
00:02:40まずはコードベースをインデックス化しましょう。このプロンプトで実行します。
00:02:44実行前に、OpenAIの埋め込みコストを確認しましょう。
00:02:4823,000行のコードベースのテストで、わずか1セントでした。
00:02:53クラスターを見ると、すでにインデックス化された情報が入っています。
00:02:58では、このコードベースをインデックス化します。時間はかかりますし、
00:03:02バックグラウンドでインデックス作成が始まります。
00:03:03この段階での検索はおすすめしません。
00:03:05規模が大きいので、インデックス完了までには時間がかかります。
00:03:09完了したら戻ってきます。
00:03:11約50分後、インデックスが完了しました。クラスターには
00:03:1622万3,000件以上のエントリーが読み込まれています。
00:03:21参考までに、23,000行のコードベースをテストした際は、
00:03:27エントリー数は約1,000件で、1分以内に完了しました。
00:03:32OpenAIの利用料金は1セントから1.06ドルに増えましたが、
00:03:38150万行ものコードを日常的に扱う人はそういないでしょう。
00:03:42では、検索速度を見てみましょう。
00:03:45こちらがClaude ContextのMCPサーバーを使ったOpenCode、こちらが
00:03:49MCPサーバーなしのOpenCodeです。
00:03:52そちらは通常のgrepとglobツールで検索を行います。
00:03:56「Claude Contextを使って、このプロジェクトの開始点を見つけて」という
00:04:00プロンプトを入力します。
00:04:01どれくらいかかるか見てみましょう。
00:04:02インデックスツールを使ってから、検索ツールが動いています。
00:04:06プロジェクト全体の検索からメインの.tsファイル特定まで、約19秒かかりました。
00:04:10(.tsファイルを見つけました)
00:04:11次に、もう一方のOpenCodeに同じプロンプトを入力します。
00:04:15こちらは14秒で結果を見つけました。
00:04:16今回のクエリについては、通常のgrepの方が速いようです。
00:04:20新しいセッションを開始します。
00:04:21次は「空の新規ドキュメントを開く関数はどれ?」というプロンプトです。
00:04:26こちらは少し時間がかかり、40秒でメイン関数と行番号を特定し、
00:04:30約23Kトークンを消費しました。
00:04:32もう一方は12秒で18Kトークンでしたが、
00:04:37どうやら別のファイルを見つけたようです。
00:04:38Claude Contextは、エディタの起動に関連する他のファイルまで表示し、
00:04:44圧倒的に多くの情報を提供しています。
00:04:45両方に正確なコードを表示するよう依頼してみます。
00:04:48Claude Contextは23秒でコードを回答しました。
00:04:52Claude Contextなしの方は49秒かかり、ほぼ2倍の時間です。
00:04:56結果として同じコードには辿り着きましたが、あることに気づきました。
00:05:00もっと広範で一般的なプロンプト、「コードを調べてプロジェクトの仕組みを教えて」
00:05:04を試してみます。
00:05:06Claude Contextは49秒で41Kトークンを使用しました。
00:05:11もう一方はそれより速く、トークン消費量も少なかったです。
00:05:13しかし出力を比較すると、Claude Contextの方が詳細です。
00:05:17レイヤー構造やElectronアプリの情報、使用されているプロセスについても
00:05:22詳しく説明されています。
00:05:23もう一方もアーキテクチャ情報を提供していますが、
00:05:28Claude Contextほど詳細ではありません。
00:05:30一見そう見えないかもしれませんが、Claude Contextは
00:05:34コードに関する詳細情報を素早く引き出す能力に長けています。
00:05:37これを見てください。
00:05:38先ほどのプロンプトに対し、Electronアプリのメインプロセスについて
00:05:43追加で詳細を尋ねてみました。
00:05:47時間は1分47秒かかりましたが、この情報量です。
00:05:52起動シーケンスからフェーズ1(サービス作成・初期化)まで始まっています。
00:05:53...
00:05:58...
00:05:59フェーズ2のコードアプリケーションアプリなど、関連ファイルへの参照を含め、
00:06:04非常に多くの情報が得られました。
00:06:05app.tsの185行目など、まだまだ続きます。
00:06:10一方、Claude ContextなしのOpenCodeは、いまだに
00:06:15複数のサブエージェントを使ってファイルを探索中です。
00:06:16各サブエージェントが正確に何トークン消費しているか
00:06:21見えないので判断しづらいのですが。
00:06:22しばらく待ってから戻ると、約5分かかってOpenCodeも
00:06:26Electronプロセスについての情報を返しましたが、Claude Contextに比べ
00:06:31情報量は少なく、時間は5倍もかかりました。
00:06:34もちろん、Opus 4.7のような高性能モデルを高負荷設定で使えば
00:06:40情報量は増えるでしょうが、時間とトークンは相応に消費するはずです。
00:06:44収録前の23K行のテストでも、1分対5分という同様の差が見られました。
00:06:48...
00:06:51結論として、どちらが明確な勝者かは判断が難しいです。
00:06:54Claude Contextは常に詳細な情報を提供しましたが、
00:07:00常に最速で最も効率的とは限りませんでした。
00:07:01大規模なコードベースではインデックス化に非常に時間がかかります。
00:07:05しかし、2万〜3万行程度の平均的なコードベースなら、
00:07:10インデックス化は非常に高速です。
00:07:11結果の詳細さにおける違いは非常に明白です。
00:07:14実際、平均規模のコードベースであれば、迷わずClaude Contextを使いたいですね。
00:07:20大規模なものより、その方が向いています。
00:07:22よく考えて使うべきでしょう。
00:07:23正直に言えば、これはZillizにとって素晴らしい販売ツールです。
00:07:27Claude Contextを使うまで彼らの存在を知りませんでしたが、今は顧客になりました。
00:07:31設定には少し手間取り、大規模なインデックス化には長時間かかりましたが、
00:07:36...
00:07:37日常的にオープンソースのコードベースを調べて質問する立場としては、
00:07:42今後かなり活用することになりそうなツールです。
00:07:44平均的な規模ならサーバーレスプランの費用も高くなく、
00:07:49OpenAIの埋め込みコストも許容範囲です。
00:07:52その程度の出費なら喜んで支払います。
00:07:53データ取得とAIといえば。
00:07:55もし、ゼロから本当に実用的なRAGシステムの作り方を学びたいなら、
00:07:59Andrisの動画をチェックしてみてください。
00:08:02スター・ウォーズファンなら、特に気に入るはずです。

Key Takeaway

Claude Contextはコードベースをセマンティックにインデックス化することで、従来のgrepやglobを用いた検索よりも、特に複雑なプロジェクト構造やアーキテクチャの把握において、より詳細で迅速な回答を可能にする。

Highlights

  • Claude Contextは、Tree-sitterによるコード解析とベクトル検索およびBM25キーワード検索のハイブリッド手法を用いて、大規模コードベースのコンテキスト使用量を最大40%削減する。

  • Merkle DAGを使用して変更されたファイルのみを再インデックス化することで、効率的なデータ更新を実現する。

  • 150万行のコードベースにおいて、特定のプロジェクト構造や複雑なプロセスを検索した際、従来のgrep手法と比較して情報提供の網羅性が高く、回答までに要する時間が最大5倍高速化するケースがある。

  • 23,000行程度の平均的な規模のコードベースであれば、インデックス作成は1分以内で完了する。

  • 23,000行のコードテストにおけるOpenAIの埋め込みコストはわずか1セントであり、コスト効率は高い。

Timeline

Claude Contextの概要と仕組み

  • MCPプラグイン「Claude Context」は、コード全体をインデックス化しコーディングエージェントへ提供する。
  • Tree-sitterによるコードの解析と、セマンティックベクトル検索およびBM25インデックス検索を組み合わせたハイブリッド方式を採用する。
  • Merkle DAGを用いて変更分のみをスナップショット化し、効率的にインデックスを管理する。

TypeScript、Python、Rustなど9つの言語に対応し、関数やクラスごとにコードをチャンク化する。大規模なコードベースにおいてコンテキスト使用量を40%削減するため、grepに頼らない正確なコード検索を可能にする。

環境構築とインデックス化の性能

  • 150万行規模のVS Codeリポジトリでテストを実施し、Zilliz Cloudを利用して構築した。
  • 小規模なコードベースでは数分で完了するインデックス作成も、150万行規模では約50分を要した。
  • クラスター利用にはサーバーレス版を採用することで、無料枠でのタイムアウト問題を解消した。

23,000行のテストでは1分以内に完了し、OpenAIの埋め込みコストも1セントに抑えられた。一方、大規模リポジトリでは22万3,000件以上のエントリーが読み込まれ、インデックス作成コストは1.06ドルまで増加する。

検索性能の比較検証

  • 単純な検索では従来のgrepが速い場合もあるが、情報の詳しさではClaude Contextが優位である。
  • 複雑なプロンプトに対しては、従来の探索手法が5分かかる処理を1分47秒で、かつ詳細なアーキテクチャ情報と共に完了させた。
  • 大規模なコードベースを日常的に扱う場合、結果の詳細さや効率面で明確な利点がある。

Electronアプリの構造に関する検索では、Claude Contextは起動シーケンスや関連ファイルを含めた網羅的な回答を返した。サブエージェントによるファイル探索を行う既存のツールよりも、精度の高い情報を迅速に取得できることが確認された。

実用上の結論と評価

  • 2万〜3万行程度の平均的なコードベースであれば、高い効率と詳細な回答を得られるため導入の価値が高い。
  • 大規模プロジェクトでは初回インデックス化に時間がかかるものの、以降の探索性能は優れている。
  • 実用的なRAGシステム構築の参考としてAndrisの技術解説動画が推奨される。

設定の手間や大規模な初期インデックス作成というコストはあるものの、日常的なコード解析において得られる情報量の差は決定的な利点となる。コストについても許容範囲内であり、本格的な開発ツールとしての導入が適している。

Community Posts

View all posts