Skip to content

[RAG] 코드 의미 단위(함수/클래스) 기반 청킹 도입으로 RAG 정확도 향상 #4

@yceffort-naver

Description

@yceffort-naver
  • scripts/embed_naverpay_code.js에서 코드 파일을 통째로 하나의 청크(chunk)로 간주하여 임베딩
  • 하나의 파일에 여러 함수, 클래스, 또는 서로 다른 맥락의 코드가 포함된 경우, 파일 전체를 임베딩하면 정보의 밀도가 낮아져 특정 질문에 대한 가장 관련성 높은 핵심 코드 조각을 정확히 찾아내기 어렵움
  • LLM에게 제공되는 참고 자료의 범위가 너무 넓어, 답변 생성 시 불필요한 정보까지 고려하게 될 수 있음
  • tree-sitter와 같은 범용 코드 파서나, TypeScript 컴파일러 API 등 언어별 AST(Abstract Syntax Tree) 분석 도구를 도입
  • 소스 코드를 파일 단위가 아닌, 더 작은 의미론적 단위(예: 함수 정의, 클래스 정의, 주요 주석 블록 등)로 분할하는 청킹 로직을 scripts/embed_naverpay_code.js에 구현
  • 각 청크에 대한 임베딩을 생성하고, 해당 청크의 원본 코드 위치(파일 경로, 시작/종료 라인 번호) 및 상위 구조 정보(예: 어떤 클래스 내의 함수인지)를 메타데이터로 함께 저장
  • RAG 검색 시, 이 세분화된 청크를 대상으로 검색하여 질문과 가장 직접적으로 관련된 코드 조각을 찾아 LLM에게 제

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions