고정 크기·재귀적 청킹은 간단하지만, 문서를 자르다 관련 맥락을 잃을 위험이 있다. 이번 편은 텍스트의 의미를 바탕으로 chunk를 똑똑하게 만들려는 고급 기법들을 본다.

 

 

1. 맥락이 잘리는 문제

예를 들어 "그날 밤 그녀는 자주 그랬듯이, 마침내 올림픽 챔피언이 되는 꿈을 꾸었다"라는 문장을 생각해 보자. split이 어디에 놓이느냐에 따라, chunk가 마치 그녀가 이미 금메달리스트인 것처럼 보이게 만들 수 있다 — "미래를 꿈꾼다"는 핵심을 놓치는 것이다. 고정 크기·재귀적 분할은 이런 문제를 막아 주지 못한다.

그림 1. 분할 위치에 따라 "꿈을 꾸었다"는 맥락이 잘려 의미가 왜곡될 수 있다.

 

 

 

 

2. 시맨틱 청킹 (Semantic Chunking)

첫 기법은 시맨틱 청킹이다. 의미가 비슷한 문장들을 같은 chunk에 모으려 한다. 임의의 문자 수가 아니라 의미를 기준으로 나누는 것이다.

그림 2. 고정 크기는 글자 수로 자르지만, 시맨틱 청킹은 의미가 비슷한 문장을 함께 묶는다.

 

알고리즘은 문서를 한 문장씩 이동하며, 각 문장이 이전 문장들과 충분히 비슷해 같은 chunk에 속하는지 판단한다. 이를 위해 현재 chunk의 내용과 다음 문장을 모두 벡터화하고, 둘의 거리가 어떤 threshold보다 작으면(=비슷하면) 같은 chunk에 추가한다. 커져 가던 chunk가 다음 문장과 너무 달라지면 거기서 끊고, 그 다음 문장부터 다시 시작한다.

그림 3. 문장 단위로 이동하며 현재 chunk와 다음 문장을 비교 — threshold보다 가까우면 합치고, 멀어지면 새 chunk로 끊는다.

 

이를 그래프로 보면, 빨간 선이 비유사도(dissimilarity) threshold이고, 봉우리 선이 커져 가는 chunk와 다음 문장의 차이다. 그 차이가 threshold를 넘는 순간 새 chunk가 만들어진다. 결과는 작성자의 사고 흐름을 따르는 가변 크기 chunk다 — 한 문단 안에서 주제가 바뀌거나, 두 문단에 걸쳐 같은 생각이 이어지면 적절한 위치에 분할이 놓인다.

그림 4. 비유사도가 threshold(빨간 선)를 넘는 지점에서 chunk를 끊는다.

 

단, 시맨틱 청킹은 모든 문장을 반복적으로 벡터화하므로 계산 비용이 크다. 대신 precision·recall 같은 지표로 재면 높은 검색 품질을 얻는 경우가 많다.

그림 5. 장점 — 작성자의 사고 흐름·선명한 경계·높은 recall/precision. 단점 — 반복적 벡터 계산으로 비싸다.

 

 

 

3. LLM 기반 청킹

더 큰 유연성을 원하면 LLM 기반 청킹을 쓴다. 문서를 LLM에 주면서 원하는 chunk 유형에 대한 지시도 함께 준다 — 예: "의미를 기준으로 나누고, 비슷한 개념은 한 chunk에 유지하며, 새 주제가 나오면 분리하라." 그러면 LLM이 여느 텍스트를 생성하듯 chunk를 만들어 낸다. 본질적으로 블랙박스지만 성능이 매우 좋고, LLM 비용이 낮아지면서 경제성도 점점 좋아진다.

그림 6. LLM 기반 청킹 — 문서와 "어떻게 나눌지" 지시를 LLM에 주면 chunk를 생성한다.

 

 

 

4. 맥락 인식 청킹 (Context-Aware Chunking)

어떤 청킹 전략에도 더할 수 있는 마지막 개선은, LLM으로 모든 chunk에 맥락을 추가하는 것이다. 예를 들어 블로그 글 끝의 "감사한 분들 명단" chunk는 이름만 나열돼 그 자체로는 해석하기 어렵다. LLM에게 chunk를 만들되 더 넓은 문서 안에서의 맥락을 설명하는 요약을 함께 붙이게 하면, 그 텍스트가 벡터화될 때(검색 관련성↑)와 검색될 때(LLM이 chunk 전체 의미를 이해) 모두 도움이 된다.

그림 7. 맥락 인식 청킹 — 각 chunk에 "이게 전체 문서에서 무엇인지" 요약을 붙인다. 전처리 비용은 크지만 검색 속도엔 거의 영향이 없다.

 

 

5. 어떤 방식을 고를까

  • 고정 크기·재귀적 분할 — 프로토타이핑의 좋은 시작점이자 무난한 기본값.
  • 시맨틱·LLM 기반 청킹 — 더 높은 성능이 가능하지만, 계산 비용이 크고 튜닝·유지·감사가 어렵다.
  • 맥락 인식 청킹 — 어떤 전략 위에도 얹을 수 있고 검색·생성을 모두 개선해, fixed 방식을 넘어 가장 먼저 시도해 볼 좋은 개선인 경우가 많다.

핵심은 가장 최신 기법을 무조건 쓰는 게 아니라, 어떤 선택지가 있고 내 데이터에 얼마나 맞는지, 비용 대비 이득이 구현할 가치가 있는지를 아는 것이다. 작은 데이터 subset으로 실험해 실제로 관련성이 오르는지 확인하는 편이 합리적이다.

그림 8. 선택 가이드 — 기본은 고정/재귀, 성능이 필요하면 시맨틱·LLM, 첫 개선으론 맥락 인식 청킹.

 

다음 글에서는 검색 이전에 프롬프트 자체를 다듬는 쿼리 파싱(query parsing) — 쿼리 재작성, 개체명 인식, HyDE — 을 살펴본다.

'AI > RAG' 카테고리의 다른 글

Cross Encoder & ColBERT  (0) 2026.07.02
Query Parsing  (0) 2026.07.02
Chunking  (0) 2026.07.02
Vector Database  (0) 2026.07.02
근사 최근접 이웃 (ANN)  (0) 2026.07.02

+ Recent posts