본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

AI/NLP

RecursiveCharacterTextSplitter 청킹도구, 단락 - 문장 - 단어 순으로 자연스러운 경계를 우선해 자른다.


RecursiveCharacterTextSplitter 청킹도구 

langchain은 RecursiveCharacterTextSplitter 로 청킹한다. Recursive 재귀적이라는 이름을 단락 - 문장 - 단어 순으로 자연스러운 경계를 우선해 자른다. 문장중간에서 뚝 끊기는 일이 적은 똑똑한 자르기.

from langchain_text_splitters import RecursiveCharacterTextSplitter

text = """
LangChain은 LLM 애플리케이션 개발을 위한 프레임워크입니다.

RecursiveCharacterTextSplitter는 긴 문서를
의미가 유지되도록 여러 개의 Chunk로 나누어 줍니다.

이 Chunk들은 Embedding을 생성하여
Vector DB에 저장한 뒤 RAG에서 검색에 사용됩니다.
"""

splitter = RecursiveCharacterTextSplitter(
    chunk_size=80,          # 한 Chunk의 최대 길이
    chunk_overlap=20,       # 이전 Chunk와 겹치는 길이
    length_function=len,
    is_separator_regex=False
)

chunks = splitter.split_text(text)

for i, chunk in enumerate(chunks):
    print(f"Chunk {i+1}")
    print(chunk)
    print("-" * 30)
from langchain_text_splitters import RecursiveCharacterTextSplitter

# documents : Document 객체 리스트
splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200
)

split_docs = splitter.split_documents(documents)

print(len(split_docs))
print(split_docs[0].page_content)

 

 

 

langchain 공식문서에서 일반적인 텍스트에 권장되는 방식이 있다. 

문단 - 줄바꿈 - 공백 - 문자 순으로 분할해 의미를 최대한 유지하도록 설계.

text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200,
    separators=["\n\n", "\n", " ", ""]
)

chunks = text_splitter.split_documents(documents)