검색을 고쳤는데도 못 찾는다면 다음은 색인 단위다. 청크를 어떻게 자르고 무엇을 붙여 넣을지의 문제인데, 이 계층의 장점은 비용이 일회성이라는 것이다. 질의당 부담이 0이라 트래픽이 늘어도 청구서가 안 늘어난다. 다만 여기엔 벤더 숫자와 재현 숫자의 간격이 가장 큰 구간이기도 하다.
Contextual Retrieval — 그리고 그 숫자의 분해
Anthropic의 방식은 청크를 색인하기 전에 LLM으로 50~100토큰짜리 맥락 문장을 앞에 붙이는 것이다. 발표된 개선은 top-20 검색 실패율 5.7% → 1.9%(−67%)인데, 이 숫자는 세 기법의 합이다.
- 맥락 임베딩만: 5.7% → 3.7% (−35%)
- + 맥락 BM25(하이브리드): → 2.9% (−49%)
- + 리랭킹: → 1.9% (−67%)
즉 −67% 중 절반 이상은 ②편에서 다룬 훨씬 오래되고 싼 기술이 벌어준 몫이다. 비용은 프롬프트 캐싱을 쓰면 문서 100만 토큰당 $1.02의 일회성이고, 공개된 쿡북을 보면 입력 토큰의 61.8%가 캐시 읽기로 처리되어 $9.20 → $2.85(−69%)가 됐다. 문서 단위로 배치를 묶지 않으면 이 캐시 적중률이 무너진다는 게 실무 함정이다. 평가셋 규모도 알아 둘 만하다 — 코드베이스 9개, 청크 737개, 쿼리 248개. Pass@5 80.92% → 88.12%는 약 18개 쿼리를 더 맞힌 결과다.
독립 재현은 더 차분하다. NFCorpus에서 contextual 0.308 vs late chunking 0.294로 격차가 nDCG@10 +0.014였고, contextual 청크 생성에 VRAM 20GB가 필요해 데이터셋의 20%만 평가할 수 있었다. late chunking은 LLM 호출이 0회인데도 이 정도다 — 문서를 롱컨텍스트 임베딩에 한 번 통과시킨 뒤 pooling 직전에 자르는 방식으로, 평균 +1.9%p(NFCorpus 23.5→30.0)지만 Quora는 변화 0, MsMarco+Stella에서는 0.630 → 0.503으로 오히려 손해였다. 일관된 규칙은 하나 — 문서가 길수록 이득이 크다.
시맨틱 청킹은 돈값을 못 한다
"시맨틱 청킹이 연산 비용만큼 가치가 있나"가 정면으로 답했다. 합성 데이터셋에서는 화려하다(NQ 43.79 → 63.93). 그런데 실제 문서에서는 반대다 — HotpotQA는 고정 크기 90.59 > breakpoint 87.37 > clustering 84.79, MSMARCO도 고정이 최고, 근거 검색 5종은 전부 고정 크기 우세. 결론 문장이 인상적이다: "청킹 전략의 영향은 임베딩 품질에 가려진다."
청크 크기와 오버랩은 어떨까. Chroma의 토큰 단위 평가에서 OpenAI 기본값(800토큰/오버랩 400)이 최하위였고 승자는 200/0이었다. 화학 도메인에서 청킹 25설정 × 임베딩 48모델을 돌린 연구의 승자도 100토큰/오버랩 0이다. 단, 최적값은 무엇을 재느냐에 따라 정반대로 나온다 — Chroma(토큰 IoU 기준)는 200, LlamaIndex(faithfulness/relevancy 기준)는 1024가 정점이다. "검색 정밀도냐 답변 충실도냐"부터 정해야 한다.
더 싼 대안들
- 메타데이터 prefix — LLM 없이 제목·섹션·날짜를 청크 앞에 붙이는 것만으로 precision 82.5%, nDCG 0.813(최고), P95 30ms 미만. 파서 출력을 재활용하니 사실상 공짜다. 가성비 1위.
- 구조 인식 청킹 — 기업 문서 연구에서 top-K 최고에 연산 비용은 현저히 낮았다. 파서가 제목·절 구조를 주면 거의 공짜.
- RAPTOR(재귀 클러스터링+요약 트리) — QuALITY 82.6%가 눈에 띄지만 QASPER 기준 실제 마진은 DPR 대비 +1.8%p, BM25 대비 +5.3%p다. 여러 청크를 종합해야 답이 나오는 질문이 많을 때만.
- Proposition 색인(문장을 원자 명제로 쪼개 색인) — Recall@5 42.5→50.1이지만 위키 규모에서 P100 500 GPU-시간, 인덱스 768GB, 단위 6배 팽창. 게다가 리트리버가 좋을수록 이득이 사라진다(지도학습 +2.7, DPR은 −0.6).
- 질문 생성 색인 — Doc2Query--의 교훈은 필터가 본체라는 것. 생성 질의 상당수가 환각이라 필터링만으로 검색 +16%, 질의시간 −23%, 인덱스 −33%였다. 필터 없이 "청크마다 질문 5개"는 마이너스가 날 수 있다.
진짜 병목은 파싱이다
기업 문서 연구에서 네 가지 청킹 전략이 전부 P&ID 도면에서 실패했다. 청킹을 아무리 튜닝해도 파서가 표를 깨뜨리면 소용이 없다는 뜻이다. OmniDocBench의 표 인식(TEDS) 점수를 보면 격차가 선명하다 — PaddleOCR-VL 94.76, GPT-4o 82.95, Marker 65.77. 상용 최고 수준인 Upstage Document Parse가 TEDS 93.48이라는 건, 나머지 6.5%는 표가 깨진 채 색인된다는 뜻이기도 하다.
한국어에는 조건이 둘 더 붙는다. 첫째, 맥락 BM25는 형태소 분석기 없이 성립하지 않는다 — 조사가 붙어("예진의", "예진에서") 정확 매칭이 깨지므로 Nori나 Kiwi가 필수고, 문장 경계도 불안정해 별도 분리기가 필요하다(②편). 둘째, HWP/HWPX를 네이티브로 받는 글로벌 파서가 없다(⑧편). 그리고 한국어 임베딩 1·2위 격차가 0.3% 수준이라는 점을 생각하면, 예산 순서는 분명하다: 파싱 → 메타데이터 prefix → 하이브리드+리랭커 → 그래도 부족하면 Contextual Retrieval. 청킹 파라미터 튜닝은 마지막이다. 다음 글은 질의를 다시 쓰는 계층이다.
— RAG 종류 총정리 시리즈 ③ / 다음 글: 질의 변환 — HyDE·분해·step-back의 손익계산서
댓글 없음:
댓글 쓰기
국정원의 댓글 공작을 지탄합니다.