참고
1 실습에 활용한 문서
소프트웨어정책연구소(SPRi) - 2023년 12월호
- 저자: 유재흥(AI정책연구실 책임연구원), 이지수(AI정책연구실 위촉연구원)
- 링크: https://spri.kr/posts/view/23669
- 파일명:
SPRI_AI_Brief_2023년12월호_F.pdf
2 Document
LangChain 의 기본 문서 객체입니다.
속성 - page_content: 문서의 내용을 나타내는 문열입니다. - metadata: 문서의 메타데이터를 나타내는 딕셔너리입니다.
from langchain_core.documents import Document
document = Document(page_content="안녕하세요? 이건 랭체인의 도큐먼드 입니다")metadata 에 속성 추가
3 Document Loader
다양한 파일의 형식으로부터 불러온 내용을 문서(Document) 객체로 변환하는 역할을 합니다.
3.1 주요 Loader
- PyPDFLoader: PDF 파일을 로드하는 로더입니다.
- CSVLoader: CSV 파일을 로드하는 로더입니다.
- UnstructuredHTMLLoader: HTML 파일을 로드하는 로더입니다.
- JSONLoader: JSON 파일을 로드하는 로더입니다.
- TextLoader: 텍스트 파일을 로드하는 로더입니다.
- DirectoryLoader: 디렉토리를 로드하는 로더입니다.
3.2 load()
- 문서를 로드하여 반환합니다.
- 반환된 결과는
List[Document]형태입니다.
3.3 load_and_split()
- splitter 를 사용하여 문서를 분할하고 반환합니다.
- 반환된 결과는
List[Document]형태입니다.
from langchain_text_splitters import RecursiveCharacterTextSplitter
# 문열 분할기 설정
text_splitter = RecursiveCharacterTextSplitter(chunk_size=200, chunk_overlap=0)
# 예제 파일 경로
FILE_PATH = "./data/SPRI_AI_Brief_2023년12월호_F.pdf"
# 로더 설정
loader = PyPDFLoader(FILE_PATH)
# 문서 분할
split_docs = loader.load_and_split(text_splitter=text_splitter)
# 로드된 문서의 수 확인
print(f"문서의 길이: {len(split_docs)}")
# 첫번째 문서 확인
split_docs[10]3.4 lazy_load()
- generator 방식으로 문서를 로드합니다.
3.5 aload()
- 비동기(Async) 방식의 문서 로드