RAG (Retrieval-Augmented Generation)

LLM의 지식 한계를 외부 문서 검색으로 보완하는 패턴 — 단순 벡터 검색에서 그래프 기반 에이전틱 검색으로 진화 중


핵심 개념

RAG는 LLM이 응답을 생성하기 전에 관련 문서를 검색하여 컨텍스트로 제공하는 패턴이다. 학습 데이터에 없는 최신 정보나 도메인 특화 지식을 활용할 수 있게 해준다. 그러나 Vanilla RAG는 장문 문서에서 구조 파괴, 고정 Top-K 한계, 교차 페이지 맥락 손실 등 체계적 실패 모드를 갖는다.

Vanilla RAG의 실패 모드

구조 파괴 (Structure Annihilation)

300페이지 문서를 임의 윈도우로 청킹하면 섹션 헤더, 다중 페이지 테이블, 번호 매긴 리스트, 상호 참조가 모두 파괴된다. 문서는 순서대로 읽히도록 쓰여졌지만, 청킹은 이를 무관한 스니펫으로 분해한다.

고정 Top-K 맹점 (Static Top-K Blindness)

질문의 복잡도와 무관하게 항상 동일한 수의 청크를 검색한다. 구조적 쿼리(“섹션 3의 모든 테이블”)는 시맨틱 유사도와 무관하다.

교차 페이지 기억상실 (Cross-Page Amnesia)

각 청크가 독립 단위로 취급되어, 1장의 정의와 5장의 적용을 연결할 메커니즘이 없다.

Graph RAG vs. LAD-RAG

Knowledge Graph 기반 Graph RAG

문서에서 엔티티와 관계를 추출하여 지식 그래프를 구축한다. 추출 과정에서 원본 정보가 손실될 위험이 있다.

LAD-RAG (Layout-Aware Dynamic RAG)

문서 그래프의 노드가 원본 문서 요소 자체(단락, 테이블, 그림)이다. 추출 손실이 없다.

인제스션 단계:

  • 페이지별로 레이아웃 인식 추출 → 요소를 노드로 생성
  • “러닝 메모리”로 인간 독자를 시뮬레이션: 섹션 계층, 활성 엔티티, 시맨틱 토픽, 미해결 참조를 추적
  • 계층적(IS_PART_OF_SECTION), 참조(REFERENCES), 시맨틱 연속(CONTINUES), 요약(SUMMARIZES) 등 다양한 엣지 생성

인퍼런스 단계:

  • 에이전트가 3가지 도구를 동적으로 사용:
    • NeuroSemanticSearch: 임베딩 유사도 검색
    • SymbolicGraphQuery: 구조적 그래프 쿼리 (“섹션 3의 모든 테이블”)
    • Contextualize: Louvain 커뮤니티 탐지로 관련 컨텍스트 확장
  • 고정 Top-K가 아닌 충분한 증거가 모일 때까지 반복

실무 구현 과제

LAD-RAG++의 프로덕션 구현에서 드러난 핵심 엔지니어링 과제:

과제해결
엔티티 폭발 (14노드에 40엔티티)전체 재생성 대신 변경분만 발행 (ADD_ENTITY)
엣지 폭발결정론적 링킹 규칙 + 글로벌 토픽 감지
메모리 토큰 비용시간 기반 감쇠로 비활성 항목을 DORMANT 전환 (75-80% 감소)
Louvain 커뮤니티 과대2단계 엣지 프루닝 (코어 엣지 vs. 프루닝 가능 엣지)
검색 품질Triple-hybrid 검색 (BM25 + Dense + SPLADE) + ColBERT 리랭킹

하이브리드 검색 전략

프로덕션 RAG 시스템에서는 단일 검색 방식보다 하이브리드 접근이 효과적:

  • BM25: 키워드 정확 매칭
  • Dense Embedding: 시맨틱 유사도
  • SPLADE: 스파스 뉴럴 임베딩
  • ColBERT Reranking: 쿼리-문서 토큰 레벨 매칭으로 최종 순위 결정

언제 쓰는가

상황적합한 접근
짧은 단일 문서, 단순 QAVanilla RAG
장문 구조화 문서 (규정, 보고서)LAD-RAG / Graph RAG
다중 문서 교차 검색토픽 매칭으로 교차 문서 엣지 생성
실시간 대화형에이전틱 검색 + Pre-search 시딩

실전 RAG 구축: 엔지니어링 교훈

로컬 RAG 시스템을 1TB 규모 기술 문서에 구축한 사례(Andros Fenollosa)에서 드러난 실전 과제:

문제해결
비정형 파일 혼재 (451GB)확장자·패턴 기반 필터링으로 54% 제거
JSON 스토리지 스케일링ChromaDB 마이그레이션 → 배치 처리·체크포인트 복구
CPU 인덱싱 병목GPU(RTX 4000 SFF Ada) 투입, 738K 벡터 생성
디스크 용량 제약Azure Blob Storage + SAS 토큰으로 원본 분리

핵심 교훈

  • 데이터 품질이 가장 중요: 인덱싱 파이프라인보다 입력 데이터의 정제가 성공을 좌우
  • 배치 + 체크포인트: 대규모 인덱싱은 반드시 중간 저장과 재개가 가능해야 함
  • 에러 톨러런스: 문제 파일을 로깅하고 건너뛰어야 전체 프로세스가 중단되지 않음
  • 스택: Ollama + nomic-embed-text + ChromaDB(HNSW) + LlamaIndex + Flask + Streamlit

연관 개념


Source: LAD-RAG++, Graph RAG in 2026, From Zero to a RAG System