에이전트를 시맨틱 검색으로 개선하기

TMT

https://cursor.com/blog/semsearch

코딩 에이전트가 프롬프트를 받으면, 파일을 읽고 관련 정보를 검색하여 코드베이스에 대한 이해를 구축하는 과정이 정답을 반환하는 데 필요합니다.

Cursor의 에이전트가 사용하는 도구 중 하나는 시맨틱 검색으로, “인증을 어디서 처리하나요?”와 같은 자연어 질의에 매칭되는 코드 조각을 검색하며, grep 같은 도구가 제공하는 정규식 기반 검색을 보완합니다.

시맨틱 검색을 지원하기 위해, 우리는 자체 임베딩 모델을 학습하고 빠른 검색을 위한 인덱싱 파이프라인을 구축했습니다. 검색만을 위해 grep과 유사한 커맨드라인 도구에만 의존할 수도 있지만, 특히 대규모 코드베이스에서 시맨틱 검색이 에이전트 성능을 크게 향상시킨다는 것을 확인했습니다:

  • 질문에 답하는 정확도가 평균 12.5% 향상됨 (모델에 따라 6.5%–23.5%).
  • 코드베이스에 더 오래 유지되는 코드 변경을 산출함.
  • 사용자가 올바른 해결책에 도달하기까지 필요한 반복 수가 감소함.
  • 테스트한 모든 모델(최신 코딩 모델 포함)에서 정확도가 증가함.

Offline evals

우리는 알려진 정답이 있는 코드베이스에서 정보 검색에 초점을 맞춘 평가 데이터셋 Cursor Context Bench를 유지하고 있습니다. 이 평가는 우리 자체 Composer를 포함해 Cursor에서 가장 많이 사용되는 모든 모델에 대해 실행됩니다.

비교는 사용 가능한 도구 집합 두 가지—시맨틱 검색을 포함한 경우와 포함하지 않은 경우—의 성능을 살펴봅니다. 모든 구성에서 시맨틱 검색은 결과를 유의미하게 개선합니다.

Image

Online A/B tests

최종 사용자 경험에 대한 영향도 이해하고자 했습니다. 동일한 모델을 사용하는 두 그룹을 대상으로 A/B 테스트를 수행했으며, 한 그룹의 에이전트는 시맨틱 검색에 접근할 수 있었고 다른 그룹은 grep과 같은 기존 검색 도구만 사용했습니다. 우리는 두 가지 지표를 살펴봤습니다:

  • Code Retention: 효과적인 에이전트가 작성한 코드는 사용자 코드베이스에 더 오래 남는 경향이 있습니다. 시맨틱 검색이 가능할 때 에이전트 코드 유지율은 0.3% 증가합니다. 파일이 1,000개 이상인 대규모 코드베이스에서는 이 효과가 2.6%까지 증가합니다.
  • Dissatisfied User Requests: 효과적인 에이전트가 작성한 코드는 후속 조치나 수정이 필요하지 않습니다. 시맨틱 검색이 불가능한 경우 불만족스러운 후속 사용자 요청이 2.2% 증가하는 것을 관찰했습니다.

A/B 테스트는 모든 에이전트 질의에 대해 수행되었으며, 모든 요청이 검색을 필요로 하는 것은 아니므로 효과 크기는 더 낮게 나타납니다.

Image

Custom retrieval models

이러한 결과를 가능하게 하는 요소 중 하나는 우리의 커스텀 임베딩 모델입니다. 우리의 접근법은 에이전트 세션을 학습 데이터로 사용합니다. 에이전트가 작업을 진행하는 동안, 정답 코드를 찾기 전에 여러 번 검색하고 파일을 엽니다. 이러한 로그를 분석하면 대화의 초기 단계에서 무엇이 검색되었어야 했는지 사후적으로 파악할 수 있습니다.

우리는 이 트레이스를 LLM에 제공하여 각 단계에서 어떤 콘텐츠가 가장 도움이 되었을지 순위를 매깁니다. 그런 다음 임베딩 모델이 유사도 점수를 이 LLM이 생성한 순위에 정렬하도록 학습합니다. 이는 모델이 일반적인 코드 유사도에 의존하는 대신, 에이전트가 실제로 코딩 작업을 수행하는 방식으로부터 학습할 수 있도록 하는 피드백 루프를 만듭니다.

Conclusion

시맨틱 검색은 특히 대규모 코드베이스에서 최상의 결과를 달성하는 데 현재 필수적입니다.

우리의 에이전트는 grep과 시맨틱 검색을 모두 적극적으로 활용하며, 이 둘의 조합이 최적의 성과를 이끕니다. 우리는 모델이 개선됨에 따라 에이전트 하네스에 제공하는 모든 도구를 지속적으로 테스트하고 평가하고 있습니다.

Edit this page