Langchain- Retrieval - Text Splitters

Jae·2024년 10월 13일

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보다 작아질 수 있도록 한다.

참고

0개의 댓글