반응형
RAG 시스템의 핵심 단계: 텍스트 분할(Text Splitter)이란?
텍스트 분할은 Retrieval-Augmented Generation(RAG) 시스템의 두 번째 단계로, 대용량 문서를 LLM이 효율적으로 처리할 수 있도록 작고 의미 있는 단위로 나누는 작업입니다. 이 과정은 문서 내에서 정확하고 관련성 높은 정보를 추출하는 데 중요한 역할을 합니다.
텍스트 분할의 필요성
- 정확한 정보 검색: 문서를 세분화하여 질문(Query)에 관련성 높은 조각만 검색할 수 있도록 합니다.
- 시스템 효율성 향상: 전체 문서를 처리할 필요 없이, 필요한 정보만 압축해 LLM에 전달함으로써 비용과 리소스를 절감합니다.
- 할루시네이션 방지: 정보 과다로 인한 잘못된 응답 가능성을 줄이고, 정확한 문맥 제공이 가능합니다.
텍스트 분할의 주요 단계
- 문서 구조 파악: 문서의 헤더, 푸터, 페이지 번호, 섹션 제목 등 구조적인 요소를 식별합니다.
- 단위 선정: 페이지, 섹션, 문단 단위 등 적절한 분할 기준을 설정합니다.
- 청크 크기 설정(chunk size): 각 분할 조각의 크기를 토큰 수 기준으로 설정합니다.
- 청크 오버랩 설정(chunk overlap): 문맥 유지를 위해 인접 조각 간 일부 내용을 겹쳐 분할합니다.
청크 크기와 청크 오버랩
적절한 청크 크기와 오버랩 설정은 정보의 단절 없이 자연스러운 흐름을 유지하는 데 필수적입니다. 일반적으로 chunk_size=1000
, chunk_overlap=50
정도로 설정합니다.
코드 예시 (LangChain 기반)
from langchain_text_splitters import RecursiveCharacterTextSplitter
# 문서 분할 설정
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=50
)
# 문서 분할 실행
splits = text_splitter.split_documents(docs)
참고 자료
How-to guides | 🦜️🔗 LangChain
Here you’ll find answers to “How do I….?” types of questions.
python.langchain.com
출처 : 패스트캠퍼스 테디노트
728x90
반응형
'AI > RAG' 카테고리의 다른 글
임베딩(Embeddings)이란 무엇인가요? (1) | 2025.05.02 |
---|---|
RAG에서 텍스트 분할(Text Splitting)이 중요한 이유 (1) | 2025.05.02 |
RAG 시스템의 핵심, 검색기(Retriever)란? (1) | 2025.04.01 |
RAG(Retrieval Augmented Generation)를 사용해야 하는 이유와 장점 (0) | 2025.03.28 |