RAG를 위한 다양한 청킹(Chunking) 방법

거대 언어 모델(LLM)에는 토큰 제한이 있습니다. 이를 해결하기 위해 청킹(chunking)을 사용합니다. 청킹은 긴 텍스트를 더 작은 조각으로 나누는 과정입니다. 이를 통해 모델이 메모리 부족 문제 없이 데이터를 처리할 수 있도록 돕습니다.

검색 증강 생성(RAG)을 사용한다면 청킹은 필수적입니다. RAG는 모델에 신뢰할 수 있는 출처(source of truth)를 제공하여 환각(hallucination) 현상을 방지합니다. 텍스트를 임베딩(embedding)이라고 불리는 숫자로 변환하여 벡터 데이터베이스에 저장하게 됩니다.

검색의 품질은 청크(chunk)의 품질에 달려 있습니다. 청크가 너무 크거나 너무 작으면 AI가 올바른 답을 찾는 데 실패할 수 있습니다.

데이터를 청킹하는 다섯 가지 방법은 다음과 같습니다:

  • 고정 크기 청킹 (Fixed-Size Chunking) 이 방법은 정해진 글자 수에 따라 텍스트를 나눕니다. 빠르고 비용이 저렴하지만, 문맥을 고려하지 못한다는 단점이 있습니다. 문장이 중간에 잘리는 경우가 빈번합니다.

  • 재귀적 문자 분할 (Recursive Character Splitting) 업계 표준으로 사용되는 방식입니다. 줄바꿈이나 공백과 같은 구분자의 계층 구조를 활용합니다. 관련된 문장들이 하나의 블록에 함께 유지되도록 노력합니다. 일반적인 기사나 글을 처리할 때 적합합니다.

  • 문서 특화 청킹 (Document-Specific Chunking) 파일의 구조를 분석하는 방식입니다. HTML 태그나 마크다운(Markdown) 헤더를 사용하여 경계선을 찾습니다. 이를 통해 코드나 특정 섹션을 온전하게 유지할 수 있습니다.

  • 의미론적 청킹 (Semantic Chunking) 글자 수가 아닌 의미를 기준으로 합니다. 동일한 주제를 다루는 문장들을 그룹화하여 하나의 주제를 유지하는 청크를 생성합니다. 이 방식은 작동을 위해 임베딩 모델이 필요합니다.

  • 에이전트 기반 청킹 (Agentic Chunking) AI 에이전트가 텍스트를 읽고 어디서 나눌지 직접 결정합니다. 에이전트는 다음 단계로 넘어가기 전에 하나의 생각이 완료되었는지 확인합니다. 가장 정확한 방법이지만, 가장 느리고 비용이 많이 듭니다.

빠른 비교:

• 고정 크기: 프로토타입 제작에 최적. 매우 쉬움. 비용 $0. • 재귀적: 일반 텍스트에 최적. 쉬움. 비용 $0. • 문서 특화: 코드나 HTML에 최적. 중간 난이도. 비용 $0. • 의미론적: 심층 연구에 최적. 어려움. 낮은 비용. • 에이전트 기반: 높은 정밀도에 최적. 매우 어려움. 높은 비용.

적절한 전략을 선택하는 것이 AI의 결과물을 바꿉니다. 곧 이 방법들에 대한 더 자세한 내용을 공유하겠습니다.

출처: https://dev.to/yashbhoskar/different-chunking-methods-for-rag-j4g

선택 사항 학습 커뮤니티: https://t.me/GyaanSetuAi