コンテンツへスキップ

セマンティック検索によるエージェントの改善

by Stefan Heule, Emily Jia & Naman Jain研究

コーディングエージェントがプロンプトを受け取ったとき、正しい回答を返すには、ファイルを読み、関連する情報を検索することでコードベースを理解する必要があります。

Cursor のエージェントが使うツールの 1 つがセマンティック検索です。これは、grep のようなツールが提供する正規表現ベースの検索に加えて、「認証はどこで処理しているか?」のような自然言語クエリに対応するコード断片を取得します。

セマンティック検索を実現するために、私たちは独自の埋め込みモデルを訓練し、高速な検索のためのインデックス作成パイプラインを構築しました。検索に grep や類似のコマンドラインツールだけを使うこともできますが、特に大規模なコードベースでは、セマンティック検索がエージェントの性能を大きく向上させることが分かっています。

  • 質問に回答する際の正確性が平均で 12.5% 向上します(モデルによって 6.5%〜23.5% の範囲)。

  • コードベースにおいて、加えたコード変更が維持される可能性が高くなります。

  • ユーザーが正しい解決策に到達するまでに必要な反復回数が少なくなります。

  • テストしたすべてのモデル(すべての最先端コーディングモデルを含む)で正確性が向上します。

オフライン評価

私たちは、既知の正解があるコードベースから情報を取得することに特化した評価データセット「Cursor Context Bench」を管理・運用しています。この評価は、私たち独自の Composer を含む、Cursor で最もよく使われているすべてのモデルを対象に実行しています。

比較では、利用可能なツール構成を 2 通り用意し、それぞれのパフォーマンスを測定します。1 つはセマンティック検索を含む構成、もう 1 つは含まない構成です。どの構成においても、セマンティック検索は成果を大きく向上させます。

オンラインA/Bテスト

最終的なエンドユーザー体験への影響も把握するため、A/Bテストを実施しました。両グループとも同じモデルを使用しましたが、一方のグループのエージェントには semantic search へのアクセスを与え、もう一方のグループは grep のような従来型の検索ツールのみに依存させました。評価には次の2つの指標を用いました。

  • Code Retention: 有効なエージェントが書いたコードは、ユーザーのコードベースに残りやすくなります。semantic search が利用可能な場合、エージェントコードの残存率は 0.3% 向上します。1,000 ファイル以上の大規模コードベースでは、この効果は 2.6% まで高まります。

  • Dissatisfied User Requests: 有効なエージェントが書いたコードには、フォローアップや修正が不要です。semantic search が利用できない場合、不満足なフォローアップユーザーリクエストが 2.2% 増加することが観測されました。

この A/B テストはすべてのエージェントクエリを対象としており、すべてのリクエストに検索が必要なわけではないため、ここでの効果量は小さくなっています。

カスタム検索モデル

こうした結果を実現している要素のひとつが、Cursor 独自の埋め込みモデルです。私たちの手法では、エージェントセッションを学習データとして利用します。エージェントがタスクに取り組む際、適切なコードにたどり着くまでに複数回検索を行い、さまざまなファイルを開きます。これらのトレースを分析することで、会話のより早い段階で本来どの情報が取得されるべきだったかを事後的に把握できます。

私たちはこれらのトレースを LLM に渡し、各ステップでどのコンテンツが最も有用だったかをランク付けさせます。そのうえで、埋め込みモデルの類似度スコアがこの LLM 生成ランキングに整合するように学習させます。これにより、汎用的なコード類似度に依存するのではなく、エージェントが実際にどのようにコーディングタスクを進めているかから学習できるフィードバックループが構築されます。

まとめ

特に大規模なコードベースでは、現時点で最良の結果を得るにはセマンティック検索が不可欠です。

私たちのエージェントは grep とセマンティック検索の両方を積極的に活用しており、この2つを組み合わせることで最良の結果を実現しています。モデルの改善にあわせて、エージェントハーネスに組み込むあらゆるツールについて、引き続きテストと評価を行っていきます。

分類: 研究

作成者s: Stefan Heule, Emily Jia & Naman Jain

セマンティック検索によるエージェントの改善 · Cursor