AI 용어집 · 기초 · 언어 모델
청킹 Chunking, 문서 분할
청킹은 AI가 긴 문서를 검색하고 활용할 수 있도록 문서를 '청크'라는 작은 조각으로 나누는 작업입니다. 주로 RAG처럼 AI가 외부 자료를 찾아 답하는 시스템을 만들 때 미리 거치는 준비 단계입니다.
어떻게 작동하나
먼저 문서를 일정한 길이나 문단, 문장 같은 단위로 나눕니다. 나눈 조각 하나하나는 '임베딩'이라는 숫자 목록으로 바뀝니다. 임베딩은 글의 의미를 숫자로 표현한 것입니다. 이렇게 바꾼 조각들은 벡터 DB에 저장됩니다. 사용자가 질문하면 질문과 의미가 가장 가까운 조각을 찾아 AI에게 건네고, AI는 그 내용을 참고해 답합니다. Anthropic의 설명에 따르면 조각 하나의 길이는 보통 수백 토큰을 넘지 않습니다.
왜 중요한가
Pinecone은 청킹이 필요한 이유를 두 가지로 설명합니다. 첫째, 임베딩 모델이 한 번에 처리할 수 있는 글의 양(컨텍스트 윈도)에는 한계가 있습니다. 이 한도를 넘는 부분은 잘려 나가 중요한 정보가 빠질 수 있습니다. 둘째, 검색되려면 조각 하나하나에 쓸모 있는 정보가 담겨 있어야 합니다. 앞뒤 맥락 없이는 뜻이 통하지 않는 문장만 모인 조각은 검색에서 잘 걸리지 않습니다. 그래서 조각을 어떻게 나누느냐가 RAG 답변의 품질을 크게 좌우합니다.
어떻게 발전해 왔나
처음에는 문서를 일정한 길이로 단순하게 자르는 방식이 흔했습니다. 2023년 논문 'Dense X Retrieval'은 문단이나 문장 대신 '명제'를 검색 단위로 쓰자고 제안했습니다. 명제는 하나의 사실만 담은 짧고 그 자체로 뜻이 통하는 문장을 말하며, 이 논문은 이렇게 잘게 나눴을 때 문단 단위보다 검색 성능이 좋아졌다고 보고했습니다. 2024년 논문 'RAPTOR'는 반대 방향의 문제, 즉 짧은 조각만으로는 문서 전체를 이해하기 어렵다는 점에 주목했습니다. 그래서 조각들을 묶어 요약하는 과정을 되풀이해 나무 모양의 구조를 만들고, 세부 내용부터 큰 줄기까지 여러 수준에서 검색할 수 있게 했습니다. Anthropic은 2024년 9월 'Contextual Retrieval'이라는 방법을 소개했습니다. 각 조각이 문서 전체에서 어떤 맥락에 있는지 설명하는 문장을 덧붙인 뒤 저장하는 방식이며, 이렇게 하면 검색 실패가 줄어든다고 밝혔습니다.
알아 둘 점
모든 경우에 맞는 하나의 정답 크기는 없습니다. 조각이 크면 맥락은 살지만 검색이 덜 정확해지고, 조각이 작으면 정확해지는 대신 맥락을 잃기 쉽습니다. 그래서 문서의 종류와 질문 유형에 맞춰 여러 방식을 시험해 보고 고르는 것이 일반적입니다. Anthropic은 자료 전체가 모델의 컨텍스트 윈도에 다 들어갈 만큼 적다면 청킹이나 RAG 없이 통째로 프롬프트에 넣는 편이 더 간단할 수 있다고도 설명합니다.
예시
회사 사내 규정을 바탕으로 답하는 상담 챗봇을 만든다고 해 보겠습니다. 수백 쪽짜리 규정집을 조항이나 문단 단위로 나눠 벡터 DB에 저장해 두면, 직원이 "출장비 정산 기한이 언제야?"라고 물었을 때 해당 조항이 담긴 조각만 찾아 AI에게 건넬 수 있습니다. 이때 조각에 '출장비 규정 3장의 일부'처럼 소속 맥락을 함께 적어 두면 검색이 더 잘 됩니다. Anthropic이 소개한 Contextual Retrieval이 바로 이런 생각에서 나온 방법입니다.