Vector RAG 전체 구조 (Architecture)

Vector RAG 시스템은 “문서를 벡터화해서 검색한 뒤 LLM이 답변을 생성”하는 구조입니다.

전체 흐름은 아래 6단계로 나뉩니다.


1. 데이터 수집 (Ingestion Layer)

RAG의 시작 지점으로, 다양한 원본 문서를 수집합니다.

Input Sources

  • 문서 파일: PDF, DOCX, TXT, HTML
  • 제품 매뉴얼, 의료 데이터(NHIS 기반), 보험약관
  • DB의 Raw Text
  • Web crawling 결과
  • 내부 지식 DB

Ingestion Pipeline 구성 요소

  • File Upload API (FastAPI 등)
  • Document Preprocessor
    • OCR 적용 (Tesseract 등)
    • 페이지 분해
    • 문자열 Normalize
    • 개인정보 마스킹

2. Chunking Layer (문서 분할)

LLM이 처리할 수 있도록 문서를 적절한 크기(512~2000 tokens)로 나누는 단계입니다.

Chunk 전략

전략 설명
규칙 기반 fixed-length chunk
의미 기반 sentence/paragraph split
하이브리드 Semantic Split + Overlap

Chunking의 목적

  • 검색 Recall 향상
  • 컨텍스트 누락 방지
  • 임베딩 품질 향상

3. Embedding Layer (임베딩 생성)

문서 chunk를 벡터로 변환하는 단계입니다.

구성 요소

  • Sentence Transformer / OpenAI embedding / Llama Embeddings
  • GPU 혹은 CPU 기반 embedding server
  • 병렬 처리

구조

Chunk text → Embedding Model → Vector (float32[], dim=1536~4096)

Embedding 저장

  • Vector DB에 저장
  • 메타데이터도 함께 저장
    • 문서명
    • 페이지 번호
    • 섹션
    • 업로드 사용자
    • 태그 등

4. Vector Indexing / Vector Storage Layer

RAG의 핵심은 Vector Retrieval입니다.

대표 Vector DB

Vector DB 특징
FAISS Self-hosted, Python 기반
Milvus / Zilliz 고성능 분산 처리
Pinecone 관리형 서비스
Weaviate GraphQL 지원
Elasticsearch + kNN 기존 ES 활용

벡터 인덱스 방식

  • HNSW (Hierarchical Navigable Small World Graph)
  • IVF Flat / IVF PQ
  • DiskANN

Metadata Filtering

  • 날짜
  • 문서 유형
  • 카테고리
  • User-scoped 데이터

5. Retriever Layer

사용자가 질문을 하면 vector 검색을 수행합니다.

Retrieval Flow

User Query → Query Embedding → Vector DB Search (kNN) → Top-k Documents

Retrieval 기법

  • kNN 검색 (Similarity Search)
  • Hybrid Search (Vector + Keyword)
  • RRF (Reciprocal Rank Fusion)
  • Context Re-ranking (Cross-encoder)

Retrieval Output

  • 관련 chunk들 (text)
  • 메타데이터

6. Generation Layer (LLM Prompt Construction)

검색된 문서를 포함하여 LLM에 전달합니다.

Prompt 구조

SYSTEM: 제공된 문서 기반으로 답변하라.
CONTEXT: (retrieved_chunks)
QUESTION: 사용자 질문

LLM 종류

  • OpenAI GPT
  • Mistral / Llama
  • Self-hosted LLM

확장된 RAG 구성 (Advanced RAG)

  • Re-ranking
  • Answer Verification
  • Citation RAG
  • Chain of Density
  • Memory RAG
  • Agentic RAG

전체 아키텍처 다이어그램

┌────────────────────┐
│   Data Sources     │
│ PDF, DOCX, DB ...  │
└─────────┬──────────┘
          │
    Ingestion API
          │
┌─────────▼──────────┐
│   Preprocessing    │
│   OCR / Cleaning   │
└─────────┬──────────┘
          │
      Chunking
          │
┌─────────▼──────────┐
│     Embedding      │
│ (GPU / CPU Model)  │
└─────────┬──────────┘
          │
 Store Vector + Metadata
          │
┌─────────▼──────────┐
│    Vector DB       │
│ (HNSW / IVF / PQ)  │
└─────────┬──────────┘
          │
   Retrieval (kNN)
          │
┌─────────▼──────────┐
│  Context Builder   │
└─────────┬──────────┘
          │
   LLM Generation
          │
┌─────────▼──────────┐
│      Answer        │
└────────────────────┘

핵심 포인트

1. Chunk 전략이 품질의 절반

  • 너무 길면 검색 precision 저하
  • 너무 짧으면 의미 단위 사라짐

2. Vector DB 선택에 따라 성능이 극적으로 달라짐

Vector DB 특징
FAISS 저렴하지만 self-managed
Milvus 고성능
Pinecone 관리형, 비싸지만 편리함

3. 임베딩 품질이 전체 검색 품질의 결정 요소

4. Retrieval + Re-rank로 Recall 개선이 필수

5. LLM Prompt Engineering이 최종 답변 품질 결정


더 알아보기

  • Vector RAG + Agents 아키텍처
  • Vector RAG + Expressions RAG 구조
  • 보험약관/의료데이터 최적 RAG 설계
  • Vector RAG 실제 코드 구조 (Python/FastAPI)

Table of contents