ExecRetrievalが示す、コード検索における「似ている」と「正しい」の差
導入
コード検索の評価では、クエリに関連するコードを返せるかどうかが重視されてきた。しかし、コーディングエージェントやコードRAGで重要なのは、単に目的が似ているコードではなく、実際に要求された動作を満たすコードである。表面上はほとんど同じでも、わずかな変更によって誤った結果を返す実装があるためだ。
論文「ExecRetrieval: Measuring the Functional-Correctness Gap in Code-Embedding Retrieval」は、この問題を検索ランキングとして測定する。正しい実装と、1か所だけを変更した近似バグ実装が同じ候補集合にあるとき、コード埋め込みは正解を上位に置けるのか、という問いである。
主なポイント
- 近似的な反実仮想を候補集合に含める。 ExecRetrievalは939件のPythonタスクを収録する。各タスクには実行で検証された標準実装と、最大4件のバグ候補がある。バグ候補は単一の対象箇所を機械的に変異させ、その後の実行によって誤りが確認される。
- 語彙一致ではなく機能的識別を測る。 候補同士が近い形をしているため、トピックの一致や文字列の重なりだけでは正解できない。検索器の順位付けが、実際の機能差を反映している必要がある。
- 再現率と1位精度に差がある。 23種類の密埋め込み設定とBM25を評価した結果、最良のホスト型システムはexec@10で1.00だったが、exec@1は0.331にとどまった。10件以内には正解があっても、最初に正解を提示できるとは限らない。
- 1位の誤りは近いバグ候補に集中する。 上位4システムでは、1位を外したケースの91.5~99.4%が、同じクエリに対応する近似バグ実装だった。また、67~78%のクエリで、標準実装のスコアが少なくとも1件の対応バグ候補を下回った。
意義と影響
この結果は、コード埋め込みにおける機能的正しさのギャップを示している。モデルはコードの目的や構造、表面上の意味を捉えられても、わずかな変更が挙動を壊したことまで安定して判断できるとは限らない。エージェントが1位の検索結果をそのままコンテキストや生成の手本に使う場合、この問題は通常の関連性エラーより深刻になる。
また、top-kだけを報告する評価にも注意が必要だ。kを広げれば正しい実装を回収できても、後段のシステムが最初の候補を優先するなら、実運用上の問題は解決していない。exec@1とexec@10は異なる性質を測るため、両方を確認する必要がある。
ExecRetrievalは、実行チェック、テストを考慮した再ランキング、機能判定器などを検証するための土台にもなる。重要なのは、検索結果が「似ている」だけでなく、最も近い誤実装より先に「動く」実装を選べることだ。
本研究はEMNLP 2026メイン会議に採択されている。特定の埋め込み方式が問題を解決したと結論づけるのではなく、コード検索で見落とされがちな評価軸を明確にした点に意義がある。
コメント
ログイン状態を確認中…
コメントを読み込み中…