시맨틱 검색으로 에이전트 성능 향상
코딩 에이전트가 프롬프트를 받으면, 올바른 답변을 반환하기 위해 파일을 읽고 관련 정보를 검색해 코드베이스에 대한 이해를 쌓아야 합니다.
Cursor의 에이전트가 사용하는 도구 중 하나가 시맨틱 검색으로, grep 같은 도구가 제공하는 정규식 기반 검색에 더해 “where do we handle authentication?”과 같은 자연어 질의와 일치하는 코드 조각을 검색합니다.
시맨틱 검색을 지원하기 위해, 저희는 자체 임베딩 모델을 학습하고 빠른 검색을 위한 인덱싱 파이프라인을 구축했습니다. 검색을 위해 grep 및 유사한 커맨드 라인 도구에만 의존할 수도 있지만, 저희는 특히 대규모 코드베이스에서 시맨틱 검색이 에이전트 성능을 크게 향상시킨다는 것을 확인했습니다.
-
질문에 답할 때 평균 12.5% 더 높은 정확도 달성(모델에 따라 6.5%–23.5%).
-
코드베이스에 더 오래 유지되는 코드 변경 생성.
-
사용자가 올바른 해결책에 도달하기까지 필요한 반복 횟수 감소.
-
테스트한 모든 모델(최신 최상위 코딩 모델 모두 포함)에서 정확도 향상.
오프라인 평가
우리는 올바른 정답이 알려진 코드베이스에서 정보를 검색하는 데 초점을 맞춘 평가용 데이터셋인 Cursor Context Bench를 유지·관리하고 있습니다. 이 평가는 우리의 Composer를 포함해 Cursor에서 가장 많이 사용되는 모델 전반에 걸쳐 수행됩니다.
비교는 사용 가능한 도구 구성을 두 가지로 나누어 성능을 측정합니다. 하나는 시맨틱 검색(semantic search)을 포함한 구성이고, 다른 하나는 포함하지 않은 구성입니다. 모든 구성에서 시맨틱 검색은 결과를 크게 향상시킵니다.

온라인 A/B 테스트
우리는 최종 사용자 경험에 미치는 영향도 함께 파악하고자 했습니다. 동일한 모델을 사용하는 두 그룹을 대상으로 A/B 테스트를 진행했으며, 한 그룹의 에이전트는 semantic search에 접근할 수 있었고 다른 그룹은 grep 같은 전통적인 검색 도구에만 의존하도록 했습니다. 다음 두 가지 지표를 살펴보았습니다:
-
코드 유지율(Code Retention): 효율적인 에이전트가 작성한 코드는 사용자 코드베이스에 더 오래 남을 가능성이 높습니다. semantic search를 사용할 수 있을 때 에이전트 코드 유지율이 0.3% 증가하는 것을 확인했습니다. 이 효과는 파일 수가 1,000개 이상인 대규모 코드베이스에서는 2.6%까지 증가합니다.
-
불만족 사용자 요청(Dissatisfied User Requests): 효율적인 에이전트가 작성한 코드는 추가적인 후속 요청이나 수정이 필요하지 않습니다. semantic search를 사용할 수 없을 때, 불만족스러운 사용자 후속 요청이 2.2% 증가하는 것을 관찰했습니다.
이 경우 효과 크기가 더 작게 나타난 이유는 A/B 테스트가 검색이 필요하지 않은 요청을 포함해 모든 에이전트 쿼리에 대해 수행되었기 때문입니다.

맞춤형 검색 모델
이러한 결과를 가능하게 하는 핵심 요소 중 하나는 우리가 사용하는 맞춤형 임베딩 모델입니다. 우리의 접근 방식에서는 에이전트 세션을 학습 데이터로 사용합니다. 에이전트가 하나의 작업을 수행할 때, 올바른 코드를 찾기 전에 여러 번 검색을 수행하고 다양한 파일을 엽니다. 이러한 기록을 분석하면, 대화를 되돌아보았을 때 각 시점에 어떤 내용이 더 일찍 검색되었어야 하는지 알 수 있습니다.
우리는 이 기록들을 LLM에 제공하고, LLM이 각 단계에서 어떤 콘텐츠가 가장 도움이 되었을지를 순위를 매기도록 합니다. 그런 다음 임베딩 모델이 유사도 점수를 이 LLM이 생성한 순위와 맞추도록 학습합니다. 이를 통해 모델은 일반적인 코드 유사도에만 의존하는 대신, 에이전트가 실제로 코딩 작업을 수행하는 방식을 바탕으로 학습하는 피드백 루프를 형성합니다.
결론
특히 대규모 코드베이스에서는 최상의 결과를 얻기 위해 현재로서는 시맨틱 검색이 사실상 필수입니다.
저희 Agent는 grep과 시맨틱 검색을 모두 적극적으로 활용하며, 이 둘을 함께 사용할 때 가장 좋은 결과를 얻습니다. 모델이 발전함에 따라 Agent에 제공하는 모든 도구를 계속해서 테스트하고 평가하고 있습니다.