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スター・ウォーズファンなら、特に気に入るはずです。