코드 검색에서 벡터 RAG가 실패하는 이유: 컨텍스트 트리를 통한 에이전틱 검색의 우월성

Benchmark: Replacing Vector RAG with Context Trees to Fix Gemini Hallucinations

작성자
HackerNews
발행일
2026년 01월 07일

핵심 요약

  • 1 코드베이스 이해를 위한 기존 벡터 RAG 방식은 유사성 기반 검색으로 인해 관련성 낮은 결과를 다수 반환하여 컨텍스트 희석을 초래합니다.
  • 2 에이전틱 검색(Agentic Search)은 컨텍스트 트리(Context Tree) 구조를 활용하여 코드의 아키텍처적 경계와 의존성을 이해하고 사용자 의도에 따라 정확한 파일을 검색합니다.
  • 3 실험 결과, 에이전틱 검색은 벡터 RAG 대비 토큰 사용량을 99% 절감하고 정확도(IoU)를 2배 향상시키는 등 모든 핵심 지표에서 뛰어난 성능을 보였습니다.

도입

코딩 에이전트가 리팩토링, 버그 수정, 기능 추가 등 개발 작업을 효과적으로 지원하려면 코드베이스를 정확하게 이해하는 것이 필수적입니다. 그러나 현재 널리 사용되는 벡터 RAG(Retrieval-Augmented Generation) 방식은 코드 검색에서 심각한 한계를 드러내고 있습니다. 자연어 처리에서는 뛰어난 성능을 보이는 벡터 RAG가 코드에서는 '유사성'과 '관련성'의 차이를 구분하지 못해, 실제 필요한 파일 외에 테스트 파일, 오래된 코드, 관련 없는 파일을 다량으로 반환하여 컨텍스트 희석(context dilution) 문제를 야기합니다.

벡터 RAG가 코드에서 실패하는 세 가지 방식

벡터 RAG는 코드의 특성을 제대로 반영하지 못해 다음과 같은 문제점을 드러냅니다.

  • 실패 모드 #1: 잘못된 패턴 매칭: 코드베이스 전반에 걸쳐 반복되는 패턴(인증, 에러 처리 등)은 유사한 임베딩을 생성하여 관련 없는 파일들까지 검색합니다. 예를 들어, 인증 관련 질문에 대해 HTTP 미들웨어, 데이터베이스 유틸리티, 테스트 모의 등 다양한 파일이 반환될 수 있습니다.

  • 실패 모드 #2: 박물관 문제 (The Museum Problem): 벡터 임베딩은 현재 활성화된 코드와 과거의 아티팩트(이전 버전, 백업 파일, 주석 처리된 코드)를 구분하지 못합니다. 이로 인해 에이전트는 더 이상 유효하지 않은 코드를 참조하여 잘못된 결과를 생성할 수 있습니다.

  • 실패 모드 #3: 고정된 Top-K 검색: 대부분의 벡터 RAG 시스템은 고정된 수의 결과(예: Top 5)를 반환합니다. 이는 단순 쿼리에서는 불필요한 노이즈를, 복잡한 쿼리에서는 필수적인 파일을 누락시키는 문제를 발생시킵니다.

에이전틱 검색(Agentic Search)의 차별점: 컨텍스트 트리

에이전틱 검색은 키워드 매칭 대신 사용자 의도를 파악하고 코드베이스의 관련 부분으로 직접 이동합니다. 이는 코드의 계층적 구조를 반영하는 컨텍스트 트리(.brv/context-tree/)를 통해 이루어집니다.

  • 구조 기반 지식 조직: 컨텍스트 트리는 코드를 도메인, 토픽, 서브토픽으로 계층적으로 구성하며, 각 토픽은 context.md 파일과 @domain/topic 형식의 명시적 관계를 가집니다. 이는 임베딩이나 코사인 유사성 없이도 관계를 인코딩합니다.

  • 의도 파싱 및 탐색: 쿼리를 분석하여 사용자 의도(도메인, 범위)를 이해하고 컨텍스트 트리 계층을 탐색하여 관련 토픽으로 이동합니다.

  • 적응형 검색: 쿼리 복잡도에 따라 반환되는 파일의 수가 달라지므로, 고정된 Top-K 방식의 문제를 해결합니다.

실험 결과: 에이전틱 검색의 압도적 우위

gemini-cli (약 1,300개 TypeScript 파일) 코드베이스에 대해 벡터 RAG(OpenAI 임베딩 + Qdrant)와 에이전틱 검색(ByteRover의 컨텍스트 트리 시스템)을 비교한 결과는 다음과 같습니다.

지표 벡터 RAG 에이전틱 검색 차이 토큰 사용량 8,775 72 99.2% 감소 정확도 (Precision) 0.053 0.117 2.2배 우수 재현율 (Recall) 0.108 0.097 10% 낮음 IoU (전반적 정확도) 0.036 0.073 2배 우수

에이전틱 검색은 토큰 사용량을 130배 이상 절감하면서도 정확도를 2배 높였습니다. 벡터 RAG의 높은 재현율은 관련 없는 파일까지 다수 반환하는 ‘넓은 그물 방식’에서 비롯된 것으로, 컨텍스트 희석을 가중시켜 모델의 추론을 방해합니다. 특히 ‘직접 쿼리’(예: ‘OAuth2 구현 위치’)에서는 에이전틱 검색이 벡터 RAG보다 3.7배 우수한 성능을 보였습니다.

결론

결론적으로, 코드는 자연어와 달리 '트리'와 같은 구조를 가지며 아키텍처적 경계와 의존성 체인으로 연결되어 있습니다. 따라서 코드 검색에서는 단순한 키워드 유사성보다 코드의 구조를 이해하는 것이 훨씬 중요합니다. 컨텍스트 트리 기반의 에이전틱 검색은 이러한 코드의 특성을 반영하여 벡터 RAG의 한계를 극복하고, 토큰 효율성과 검색 정확도 면에서 압도적인 우위를 입증했습니다. 이는 코딩 에이전트 개발 시 벡터 RAG의 한계를 인정하고, 코드베이스의 구조를 반영하는 컨텍스트 트리를 구축하여 사용자 의도를 기반으로 검색하는 '컨텍스트 엔지니어링'이 필요함을 시사합니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!