AI Briefing

코드 검색, 그래프 기반 방식이 효과적

We tried vectors, ASTs, and brute-force context stuffing for code retrieval. Graphs with LLM-generated semantics worked best. Here's what we learned.

·2026.05.10 21:12

코드 검색 시 벡터 임베딩보다 LLM 기반의 의미론적 정보를 활용한 그래프 구조가 더 효과적이다.

코드베이스를 위한 지속적인 구조적 메모리를 구축하기 위해 다양한 검색(Retrieval) 방식을 비교한 결과, LLM 기반의 의미론적 그래프 방식이 가장 우수한 성능을 보였다.

주요 시도 및 한계점:

  • 벡터 임베딩 (Vector Embeddings): 코드 청크를 벡터화하는 방식은 호출 그래프, 상속, 임포트 등 코드의 구조적 관계를 평면화하여 정보 손실이 크다. 유사한 토큰을 가진 서로 다른 맥락의 함수를 구분하지 못해 검색 정밀도가 낮다.
  • AST 파싱 (Tree-sitter): 구조적 파악은 정확하고 빠르지만, 비즈니스 로직이나 함수의 실제 목적과 같은 의미론적 정보를 제공하지 못한다.

최적의 솔루션: 그래프 기반 의미론적 검색

  • 각 파일에 대해 LLM을 사용하여 목적, 요약, 비즈니스 컨텍스트를 생성한다.
  • 생성된 정보를 Neo4j 그래프의 노드로 저장하고, 클래스, 함수, 키워드, 임포트 간의 관계를 에지로 연결한다.
  • 벡터 유사도 대신 이러한 의미론적 필드에 대한 **전체 텍스트 검색(Full-text search)**을 활용한다.

성능 및 비용 관리:

  • **RepoGraph (ICLR 2025)**와 Code-Craft 연구에서도 그래프 기반 접근법이 SWE-bench 및 검색 정밀도에서 높은 성능 향상을 입증했다.
  • 파일당 LLM 호출 비용 문제는 SHA-256 디핑(diffing) 기술을 적용해 변경된 파일만 재인덱싱함으로써 관리 가능한 수준으로 최적화했다.

이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.

요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.