RAG 시작

 

먼저 가장 중요한 것은 데이터입니다. 내가 원하는 답변을 얻기 위해서는 결국 데이터가 필요하고 이러한 데이터들을 전처리하고 가져와야합니다.

이러한 과정중 이번 포스트에서는 가져오는 부분을 다루도록 하겠습니다.

 

필요한 데이터는 다음과 같습니다.

index.txt
0.00MB
sample.csv
0.01MB
SK_sample.pdf
9.39MB

 

 

RAG 기능을 추가하기 위해 한가지 프레임워크에 집중합니다(LangChain, Llamaindex, 등)

여기선 LanChain위주로 다루도록 하겠습니다.

 

(1) WebBaseLoader

해당 모듈로는 웹 페이지의 모든 텍스트를 HTML 다운스트림에서 사용할 수 있는 문서 형식으로 로드됩니다.

먼저 다음과 같이 설치를 진행합니다. (필자는 가상환경에서 진행하였습니다.) -> python 3.11.9

LangChain이 2024.09.16 업데이트가 진행되면서 파이썬 버전은 3.8은 10월부터 지원하지 않음으로 그냥 무조건 3.11 버전에서 진행하는 것을 권장합니다.

pip install -qU langchain_community beautifulsoup4

 

다음 사진과 같이 진행을 하였습니다.

from langchain_community.document_loaders import WebBaseLoader

loader = WebBaseLoader(["https://blog.naver.com/ikm1110", "https://foxforensic.tistory.com/45"])
loader.requests_kwargs = {'verify':False} #SSL 검증 오류 우회하려면 True

docs = loader.load()
print(docs[1]) #첫 번째 docs
print(docs[1].metadata) #첫 번째 docs의 메타데이터

 

위와 같이 작성을 해주고 실행을 한 결과는 다음과 같습니다.

 

(2) Text Loader

가장 간단한 텍스트를 로드 하는 방법은 다음과 같습니다.

from langchain_community.document_loaders import TextLoader

loader = TextLoader("./index.txt", autodetect_encoding=True)
docs = loader.load()

print(docs)

위 코드는 ./index.txt를 로드 하는데

autodetect_encoding을 true로 함으로써 자동으로 인코딩을 탐지할 수 있도록 해줍니다.

다음은 결과 사진입니다.

(3) CSV Loader

CSV로더는 간단하게 다음과 같이 작성할 수 있습니다.

from langchain_community.document_loaders.csv_loader import CSVLoader

loader = CSVLoader(file_path='sample.csv', autodetect_encoding=True)
data = loader.load()

print(data)

 

 

(4) PDF Loader

PDF 로더는 다양한 방식으로 로드하는 방식들이 존재하는데 여기선 전통적인 PDF 로더 기능을 사용하겠습니다.

pip install -q pypdf
from langchain_community.document_loaders import PyPDFLoader

pdf_filepath = 'SK_sample.pdf'
loader = PyPDFLoader(pdf_filepath)
pages = loader.load()

print(pages)

다음과 같은 결과를 얻을 수 있습니다.

로더(Loader) 마무리

 

이러한 다양하게 불러들이는 것은 직접 코드를 짜서 만들어도 되지만
Langchain, Llamaindex 등 프레임워크를 사용하는 것을 추천드립니다.
그 이유는 랭체인, 라마인덱스에서 제공해주는 다양한 도구들(모듈이나 알고리즘)이 처리하기 쉬운 형태로 변환해주기 때문입니다.

 

 

 

 

 

+ Recent posts