Langchain- Retrieval - Text Splitters
Retrieval은 RAG의 주요 요소
Text Splitter
- 토큰 제한이 있는 LLM이 여러 문장을 참고해 답별할 수 있도록 문서를 분할하는 역할
- 여러개의 문서를 작은 Chunk 단위로 자르는 역할
- 각각의 청크들이 수치로 바뀐것이 Vector Store에 저장됨.
- 청크로 나누는 이유는 벡터스토어에서 질문과 유사한 거를 찾고 LLM에서 사용자가 원하는 값을 찾게 하기 위함임.
TextSplitter 종류
CharacterTextSplitter
- 구분자 1개 기준으로 분할하므로 max_token을 지키지 못하는 경우 발생
문서를 개별 문자를 단위로 나누기 (separator="")
- saperator : 구분자
- chunk_size : 각 청크의 최대 길이
- chunk_overlap : 뒷 부분의 일부를 겹치게 함. 문단이 나뉘어 질 때 분석 결과가 어떤 것에 대한 것인지 알 수 가 없기에 확인 할 수 있도록 참고용으로써 사용함. 문맥이 단절되는 것을 방지.
- langth_function : 청크사이즈를 측정할 때 기준 단위 지정.
문서를 특정 문자열을 기준으로 나누기 (separator="문자열")
- separator 매개변수를 줄바꿈 문자로 지정하는 것.
- 완전히 끝나는 지점에서 문자를 분할 할 수 있다.
RecursiveCharacterTextSplitter
- 재귀적으로 분할하기에 max_token을 지켜서 분할 가능
- Chunk로 단위로 자른 것을 대부분 사용하게 됨.
- 구분될 문자를 순서대로 텍스트를 분할하여 분할된 청크들이 설정된 chunk_size보다 작아질 수 있도록 한다.
참고