랭체인(LangChain) 리트리벌 (Retrieval) 및 다큐먼트 로더 (Document Loaders)

RAG (Retrieval Augmented Generation)

  • 정의: 외부 데이터를 참조하여 LLM(Large Language Model)이 답변할 수 있도록 해주는 프레임워크입니다.
  • 핵심: LLM이 기존에 가지고 있지 않은 지식을 활용하여 답변할 수 있도록 합니다.
  • 파인튜닝(Fine-tuning)과의 비교:
    • 파인튜닝: LLM 자체를 학습시켜 지식을 주입하는 방식이며, 고급 장비(GPU 등)가 필요합니다.
    • RAG: 외부 데이터 소스를 활용하여 답변을 생성하므로, 파인튜닝보다 일반 사용자가 접근하기 쉽습니다.
  • RAG 작동 방식:
    1. 사용자 질문 입력
    2. QA 시스템이 외부 데이터 저장소에서 유사한 문장 검색
    3. 검색된 문장과 질문을 조합하여 LLM에 프롬프트 전달
    4. LLM이 해당 정보를 바탕으로 답변 생성

랭체인 (LangChain) 리트리벌 (Retrieval) 구조

  • 핵심 구성 요소:
    • QA 시스템
    • 외부 데이터 저장소
    • LLM
  • 역할: 위의 세 가지 요소를 연결하여 외부 데이터를 기반으로 답변을 생성하는 중요한 역할을 담당합니다.

다큐먼트 로더 (Document Loaders)

  • 역할: 다양한 형식의 문서(PDF, 워드, 웹 페이지, CSV 등)를 불러와 랭체인에서 활용할 수 있는 형태로 변환합니다.
  • 출력 구조:
    • 페이지 컨텐츠 (page_content): 문서의 실제 내용
    • 메타데이터 (metadata): 문서의 출처, 제목, 페이지 정보 등

주요 다큐먼트 로더 종류

1. URL 다큐먼트 로더

  • 웹베이스 로더 (WebBaseLoader): 특정 URL의 텍스트를 불러옵니다.
  • 언스트럭쳐드 URL 로더 (UnstructuredURLLoader): 여러 URL의 텍스트를 리스트 형태로 불러옵니다.
  • 특징: 웹 페이지의 모든 텍스트(제목, 탭 텍스트 등)를 불러올 수 있어 불필요한 정보가 포함될 수 있습니다.

2. PDF 다큐먼트 로더

  • 파이 PDF 로더 (PyPDFLoader): PDF 파일을 불러옵니다.
  • load_and_split 메서드: PDF 페이지별로 문서를 분할하여 로딩합니다.
  • 출력: 페이지별로 분할된 텍스트와 각 페이지에 대한 메타데이터를 반환합니다.

3. 워드 (Word) 다큐먼트 로더

  • 닥스 to 텍스트 로더 (Docx2txtLoader): 워드 파일을 불러옵니다.
  • 출력: 메타데이터와 워드 파일 내용

4. CSV 다큐먼트 로더

  • CSV 로더 (CSVLoader): CSV 파일을 불러옵니다.
  • 필수 매개변수:
    • file_path: 파일 경로
    • csv_args:
      • delimiter: 데이터 구분자 (일반적으로 쉼표 ’,’)
      • fieldnames: 열 이름 리스트
  • 활용: 로딩된 데이터를 SQL과 연동하여 활용할 수 있습니다.

다음 학습 내용

다음 시간에는 불러온 문서들을 여러 청크로 분할하는 텍스트 스플리터 (Text Splitters)에 대해 알아보겠습니다.