Data connection

LLM의 입력과 출력은 모두 단순 문자열이지만, 대부분의 실제 어플리케이션 데이터는 다양한 형태를 갖습니다. LangChain은 이러한 데이터를 로드, 변환, 저장 및 질의 하는 기능을 제공합니다.

LangChain에서는 문서에서 읽은 텍스트를 Document라는 객체로 관리를 하며, Document는 문자열과 메타데이터를 갖습니다.

Document Loaders

파일 경로를 지정하여 데이터를 읽습니다. csv, html, json, markdown, pdf 등 파일 형식별 loader를 제공하는 것 외에도 경로를 지정하여 읽을 수도 있습니다.

Document Transformers

큰 Document를 의미 있는 작은 단위(주로 문장)로 나누거나 토큰 크기에 맞추어 병합을 수행합니다. 문맥 유지를 위해 overlap을 만들기도 하며 일반적인 줄글에는 RecursiveCharacterTextSplitter의 사용이 권장됩니다. 특정 문자(\n 등) 기준으로 나누거나 소스코드의 경우 언어별 나누는 기준이 있기도 하며, markdown 문서를 위한 splitter도 제공합니다. 또한 검색 결과로 나온 문장들을 유사도 기반으로 재정렬하는 기능도 제공합니다.

Text embedding models

문자열이나 Document 객체를 임베딩하기 위한 외부 API와 연동하는 기능을 제공합니다.

Vector stores