Mejorar el Agente con búsqueda semántica

por Stefan Heule, Emily Jia & Naman Jain en investigación

Cuando los agentes de programación reciben un prompt, devolver la respuesta correcta requiere construir una comprensión de la base de código leyendo archivos y buscando información relevante.

Una de las herramientas que utiliza el Agente de Cursor es la búsqueda semántica, que recupera segmentos de código que coinciden con consultas en lenguaje natural, como “¿dónde manejamos la autenticación?”, además de la búsqueda basada en regex que proporciona una herramienta como grep.

Para habilitar la búsqueda semántica, hemos entrenado nuestro propio modelo de embeddings y construido pipelines de indexación para una recuperación rápida. Aunque podrías depender exclusivamente de grep y de herramientas de línea de comandos similares para la búsqueda, hemos comprobado que la búsqueda semántica mejora significativamente el rendimiento del agente, especialmente en bases de código grandes:

  • Lograr en promedio un 12,5 % más de precisión al responder preguntas (del 6,5 % al 23,5 % según el modelo).

  • Producir cambios de código que es más probable que se retengan en las bases de código.

  • Requerir menos iteraciones para que los usuarios lleguen a una solución correcta.

  • Aumentar la precisión en todos los modelos que probamos, incluidos los modelos de programación más avanzados.

Evaluaciones offline

Mantenemos un conjunto de datos de evaluación, Cursor Context Bench, centrado en la recuperación de información en bases de código con respuestas correctas conocidas. Esta evaluación se ejecuta en todos los modelos más usados en Cursor, incluido nuestro propio Composer.

La comparación analiza el rendimiento con dos conjuntos de herramientas disponibles: uno que incluye búsqueda semántica y otro que no. En todas las configuraciones, la búsqueda semántica mejora significativamente los resultados.

Pruebas A/B en producción

También queríamos entender el impacto en la experiencia del usuario final. Realizamos una prueba A/B donde ambos grupos usaron el mismo modelo, pero el agente de un grupo tenía acceso a búsqueda semántica mientras que el otro dependía únicamente de herramientas de búsqueda tradicionales como grep. Analizamos dos métricas:

  • Retención de código: El código escrito por agentes eficaces tiene más probabilidad de permanecer en las bases de código de los usuarios. Observamos que la retención de código del agente aumenta un 0,3 % cuando la búsqueda semántica está disponible. Este efecto aumenta a un 2,6 % en bases de código grandes con 1.000 archivos o más.

  • Solicitudes de usuarios insatisfechos: El código escrito por agentes eficaces no requiere seguimientos ni correcciones. Observamos un aumento del 2,2 % en solicitudes de seguimiento de usuarios insatisfechos cuando la búsqueda semántica no estaba disponible.

El tamaño del efecto es menor aquí, ya que la prueba A/B se realiza sobre todas las consultas del agente y no todas las solicitudes requieren búsqueda.

Modelos de recuperación personalizados

Una de las piezas que hacen posibles estos resultados es nuestro modelo de embeddings personalizado. Nuestro enfoque utiliza sesiones de agentes como datos de entrenamiento: cuando un agente trabaja en una tarea, realiza varias búsquedas y abre archivos antes de encontrar el código correcto. Al analizar estas trazas, podemos ver en retrospectiva qué se debería haber recuperado antes en la conversación.

Proporcionamos estas trazas a un LLM, que clasifica qué contenido habría sido más útil en cada etapa. Luego entrenamos nuestro modelo de embeddings para alinear sus puntuaciones de similitud con estas clasificaciones generadas por el LLM. Esto crea un bucle de retroalimentación en el que el modelo puede aprender de cómo los agentes realmente resuelven tareas de programación, en lugar de depender de una similitud de código genérica.

Conclusión

Actualmente, la búsqueda semántica es necesaria para obtener los mejores resultados, especialmente en bases de código de gran tamaño.

Nuestro Agente hace un uso intensivo de grep, así como de la búsqueda semántica, y la combinación de estas dos herramientas ofrece los mejores resultados. Seguimos probando y evaluando todas las herramientas que proporcionamos al entorno del agente a medida que mejoran los modelos.

Archivado en: investigación

Autors: Stefan Heule, Emily Jia & Naman Jain

Mejorar el Agente con búsqueda semántica · Cursor