「Cursor」を提供するAnysphereは、大規模コードベースのインデックス作成を高速化する技術を公開した。「ほとんどのチームは同じコードベースのほぼ同一のコピーで作業している」というシンプルな事実に基づいている。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
AI(人工知能)コードエディタ「Cursor」を開発するAnysphereは2026年1月27日(米国時間)、大規模コードベースを高速にインデックス化する技術をブログで公開した。
セマンティック検索(単語や文章の意味的な理解に基づいた検索)はエージェントの応答精度を平均12.5%向上させるが、数万ファイル規模のリポジトリではインデックス構築に数時間かかり、その作業の少なくとも80%が終わるまでセマンティック検索は利用できないという課題があった。
同社は、同じコードベースのクローンが同一組織内のユーザー間で平均92%の類似度があることを発見。この知見に基づいて課題を解決したという。
新しいメンバーが参加したり、マシンを切り替えたりするたびに、毎回インデックスを一から作成し直すのではなく、チームメイトの既存のインデックスを安全に再利用できる仕組みを構築した。
Cursorは、コードベースのインデックスをハッシュ木(マークル木とも)で構築する。各ファイルの暗号学的ハッシュと、その親ディレクトリのハッシュをツリー構造で管理し、ファイルが編集されると変更があった枝だけをたどって同期する。
5万ファイルのワークスペースでは、ファイル名とSHA-256ハッシュだけで約3.2MBになるが、ハッシュ木を使えばハッシュが異なる部分だけの転送で済む。同期プロセスがクライアント側のファイルを変更することはない。
変更されたファイルは構文単位のチャンクに分割され、セマンティック検索用の埋め込み(embedding)に変換される。変更されていないチャンクはキャッシュにヒットするため、埋め込みの再生成コストを抑えられる。
新しいユーザーが参加すると、クライアントはコードベースのハッシュ木から類似度ハッシュ(simhash)を導出する。これはコードベース内のファイルコンテンツハッシュを要約した単一の値で、サーバ側のベクターデータベースを検索して、同じチーム内で類似度がしきい値を超えるインデックスを特定する。
一致するインデックスが見つかれば、それを新しいコードベースの初期インデックスとして使用する。コピー処理はバックグラウンドで行われ、その間もクライアントはコピー元のインデックスに対してセマンティック検索を実行できる。
インデックスの共有にはセキュリティ上の制約がある。クライアントは自分が保持していないコードに対する検索結果を見てはならない。
Cursorはこの制約をハッシュ木の暗号学的特性で解決した。ツリー内の各ノードは直下のコンテンツの暗号学的ハッシュであり、対応するファイルを保持していなければ計算できない。サーバはクライアントがアップロードしたハッシュ木をコンテンツの証明情報として保存し、検索結果をフィルタリングする。クライアントがファイルの保持を証明できない場合、その結果は除外される。
バックグラウンド同期が完了し、クライアントとサーバのハッシュ木のルートが一致すると、証明情報は削除され、以降のクエリは完全に同期されたインデックスに対して実行される。
チームメンバーのインデックス再利用により、リポジトリの規模に応じてセットアップ時間が短縮された。
これにより、大規模コードベースでもCursorのセマンティック検索を数秒で利用開始できるようになったとしている。
Cursor開発チームが明かす、コーディングエージェントの7つのベストプラクティス
AIエージェントのトークン消費を約47%削減 Cursorの「コンテキストエンジニアリング」事例
RAGの精度はどう評価する? Azureで作るならどの方法がよい? 有識者が課題の実践的な解決方法を解説Copyright © ITmedia, Inc. All Rights Reserved.
編集部からのお知らせ