Améliorer l’Agent avec la recherche sémantique

par Stefan Heule, Emily Jia & Naman Jaindans Recherche

Lorsque des agents de programmation reçoivent un prompt, fournir la bonne réponse nécessite de construire une compréhension de la base de code en lisant des fichiers et en recherchant les informations pertinentes.

L’un des outils utilisés par l’Agent de Cursor est la recherche sémantique, qui retrouve des segments de code correspondant à des requêtes en langage naturel, comme « où gérons‑nous l’authentification ? », en complément de la recherche basée sur les expressions régulières fournie par un outil comme grep.

Pour prendre en charge la recherche sémantique, nous avons entraîné notre propre modèle d’« embeddings » et construit des pipelines d’indexation pour une récupération rapide. Bien que vous puissiez vous appuyer exclusivement sur grep et des outils en ligne de commande similaires pour la recherche, nous avons constaté que la recherche sémantique améliore significativement les performances de l’Agent, en particulier sur les grandes bases de code :

  • Permet d’atteindre en moyenne une précision supérieure de 12,5 % pour répondre aux questions (de 6,5 % à 23,5 % selon le modèle).

  • Produit des modifications de code qui ont plus de chances d’être conservées dans les bases de code.

  • Nécessite moins d’itérations pour que les utilisateurs parviennent à une solution correcte.

  • Augmente la précision sur tous les modèles que nous avons testés, y compris tous les modèles de programmation les plus avancés.

Évaluations hors ligne

Nous maintenons un jeu de données d'évaluation, Cursor Context Bench, axé sur la recherche d'informations dans des bases de code pour lesquelles les bonnes réponses sont connues. Cette évaluation est effectuée sur les modèles les plus utilisés dans Cursor, y compris notre propre Composer.

La comparaison porte sur les performances avec deux ensembles d'outils disponibles : l'un incluant la recherche sémantique et l'autre non. Dans chaque configuration, la recherche sémantique améliore considérablement les résultats.

Tests A/B en ligne

Nous voulions également comprendre l'impact sur l'expérience de l'utilisateur final. Nous avons réalisé un test A/B où les deux groupes utilisaient le même modèle, mais l'Agent de l'un des groupes avait accès à la recherche sémantique tandis que l'autre s'appuyait uniquement sur des outils de recherche traditionnels comme grep. Nous avons examiné deux indicateurs :

  • Rétention du code : le code écrit par des agents efficaces a plus de chances de rester dans les bases de code des utilisateurs. Nous observons une augmentation de 0,3 % de la rétention du code de l'agent lorsque la recherche sémantique est disponible. Cet effet augmente jusqu'à 2,6 % sur les grandes bases de code comportant 1 000 fichiers ou plus.

  • Demandes d'utilisateurs insatisfaits : le code écrit par des agents efficaces ne nécessite pas de demandes de suivi ni de corrections. Nous avons observé une augmentation de 2,2 % des demandes de suivi d'utilisateurs insatisfaits lorsque la recherche sémantique n'était pas disponible.

L'effet est plus faible ici, car le test A/B porte sur toutes les requêtes adressées à l'agent et toutes les demandes ne nécessitent pas de recherche.

Modèles de récupération personnalisés

Un des éléments clés qui rend ces résultats possibles est notre modèle d’« embedding » personnalisé. Notre approche utilise des sessions d’agent comme données d’entraînement : lorsqu’un agent s’attaque à une tâche, il effectue plusieurs recherches et ouvre différents fichiers avant de trouver le bon code. En analysant ces traces, nous pouvons voir a posteriori ce qui aurait dû être récupéré plus tôt dans la conversation.

Nous fournissons ces traces à un LLM, qui classe les contenus qui auraient été les plus utiles à chaque étape. Nous entraînons ensuite notre modèle d’« embedding » pour faire correspondre ses scores de similarité à ces classements générés par le LLM. Cela crée une boucle de rétroaction où le modèle peut apprendre de la manière dont les agents abordent réellement des tâches de codage, plutôt que de se fier à une similarité de code générique.

Conclusion

La recherche sémantique est aujourd’hui indispensable pour obtenir les meilleurs résultats, en particulier sur les grandes bases de code.

Notre agent s’appuie fortement sur grep ainsi que sur la recherche sémantique, et la combinaison de ces deux approches donne les meilleurs résultats. Nous continuons à tester et à évaluer tous les outils que nous mettons à la disposition de l’infrastructure de l’agent à mesure que les modèles s’améliorent.

Classé dans : Recherche

Auteurs: Stefan Heule, Emily Jia & Naman Jain

Améliorer l’Agent avec la recherche sémantique · Cursor