---
tags: [AI-Agent, RAG, 임베딩, 인덱싱]
---

# 임베딩·인덱싱 전략 카탈로그

> 이 단계의 결정은 셋이다 — **어떤 표현으로**(임베딩) · **어떤 자료구조에**(인덱스) · **무엇을 함께**(색인 설계) 저장하나. 기초는 [[Embedding]]·[[Vector Database]] — 여기는 선택지 카탈로그다.

## 표현 전략 — 무엇으로 의미를 담나

| 전략 | 원리 | 트레이드오프 |
|------|------|-------------|
| Dense 단일 벡터 | 청크당 벡터 1개 | 기본값 — 의미 유사에 강하고 정확 키워드에 약함 |
| Learned sparse(SPLADE류) | 학습된 희소 벡터로 단어를 가중·확장 | [[BM25]]보다 똑똑한 키워드 매칭, 전용 인덱스 필요 |
| Multi-vector·late interaction(ColBERT류) | 토큰별 벡터를 유지하고 검색 시 세밀 대조 | 정밀도↑ 저장·검색 비용↑ — 리랭커 대용으로도 쓰임 |
| 하이브리드 색인 | dense+sparse를 동시 저장 | [[Hybrid Retrieval]]의 전제 조건 |

## 임베딩 모델 선택 기준

- **자기 골든셋 > 공개 리더보드**: MTEB 순위는 출발점일 뿐 — 도메인 용어·한국어 품질은 자기 데이터 20~50쌍의 recall@k로 직접 잰다.
- 확인 항목: 다국어(한국어) 품질 · 최대 입력 토큰(청크 크기의 상한을 정한다) · 차원 수(저장 비용) · 라이선스와 셀프호스팅 가능 여부.
- **Matryoshka(MRL) 지원 모델**: 벡터 앞부분만 잘라 저차원으로 쓸 수 있다 — 1차 검색은 짧은 차원, 정밀 단계는 전체 차원.
- **도메인 파인튜닝·어댑터**: 사내 용어를 일반 모델이 모를 때의 최후 수단 — 전체 재임베딩 비용이 따라온다.

## 압축 전략 — 메모리·속도 vs 재현율

| 전략 | 원리 | 비고 |
|------|------|------|
| Scalar 양자화(int8) | float32→int8 | 메모리 약 1/4, 손실 작음 — 흔한 1차 선택 |
| Binary 양자화 | 부호만 저장(1bit) | 메모리 약 1/32 — 오버샘플링+원본 리스코어와 함께 |
| Product Quantization | 부분 벡터를 코드북으로 치환 | 초대규모용, 튜닝 필요 |

> [!WARNING] 압축은 반드시 골든셋 recall 재측정과 함께
> 조용한 품질 저하의 단골 원인이다.

## 인덱스 구조 — 데이터 규모가 고른다

| 인덱스 | 원리 | 언제 |
|--------|------|------|
| Flat(전수 비교) | 정확한 top-k | 수십만 벡터 이하 — 이 규모면 ANN이 오히려 과설계 |
| HNSW | 그래프 탐색 ANN | **기본값** — 빠르고 정확, 메모리를 많이 씀 |
| IVF | 클러스터링 후 일부만 탐색 | 대규모·메모리 제약 — nprobe로 정확도 조절 |
| DiskANN류 | 디스크 기반 ANN | 메모리에 못 담는 초대규모 |

## 색인 설계 전략 — 벡터에 "무엇을" 넣나

- **멀티 표현 색인**: 같은 문서를 ①청크 원문 ②LLM 요약 ③"이 청크가 답할 법한 가설 질문" 여러 벌로 색인 — 질의-문서 표현 격차를 색인 쪽에서 줄인다.
- **검색용/생성용 분리 저장**: 부모-자식·문장 윈도우([[청킹 전략 카탈로그]])는 벡터DB 옆에 원문 문서 저장소(doc store)를 요구한다.
- **메타데이터 필드 설계**: source·updated_at·acl·doc_type — 필터는 색인 시점에 넣은 필드만 가능 → [[문서 수집과 파싱]].
- **embedding_model 필드**: 어느 모델로 만든 벡터인지 기록해야 모델 교체 시 점진 마이그레이션이 가능 → [[실시간 지식 파이프라인]].

## 관련 문서

- [[Embedding]] · [[Vector Database]] — 원리
- [[청킹 전략 카탈로그]] ← 이전 단계 · [[검색 전략 카탈로그]] → 다음 단계
