LangChain으로 RAG 문서 로드하기

LangChain을 활용한 RAG(검색 증강 생성)

Meri Nova

Machine Learning Engineer

강사 소개

 

Meri Nova

 

  • Break Into Data 창립자
  • 머신러닝 엔지니어
  • LinkedIn 및 YouTube 콘텐츠 크리에이터

Meri의 사진.

LangChain을 활용한 RAG(검색 증강 생성)

Retrieval Augmented Generation (RAG)

 

  • LLM 한계: 지식 제약

 

RAG: 외부 데이터를 LLM에 통합

책 형태의 추가 정보를 LLM에 전달하는 사람.

1 Generated with DALL·E 3
LangChain을 활용한 RAG(검색 증강 생성)

표준 RAG 워크플로

단일 사용자.

LangChain을 활용한 RAG(검색 증강 생성)

표준 RAG 워크플로

사용자 쿼리가 벡터 데이터베이스로 전송되는 모습.

LangChain을 활용한 RAG(검색 증강 생성)

표준 RAG 워크플로

벡터 데이터베이스에서 관련 문서가 검색되는 모습.

LangChain을 활용한 RAG(검색 증강 생성)

표준 RAG 워크플로

검색된 문서가 모델 프롬프트에 추가되는 모습.

LangChain을 활용한 RAG(검색 증강 생성)

표준 RAG 워크플로

프롬프트가 LLM에 전송되고 결과가 사용자에게 반환되는 모습.

LangChain을 활용한 RAG(검색 증강 생성)

검색을 위한 데이터 준비

문서가 로드되는 모습.

LangChain을 활용한 RAG(검색 증강 생성)

검색을 위한 데이터 준비

문서가 분할되는 모습.

LangChain을 활용한 RAG(검색 증강 생성)

검색을 위한 데이터 준비

문서 청크가 임베딩되는 모습.

LangChain을 활용한 RAG(검색 증강 생성)

검색을 위한 데이터 준비

문서 청크가 저장되는 모습.

LangChain을 활용한 RAG(검색 증강 생성)

문서 로더

 

  • AI 시스템에 문서 통합
  • 다양한 파일 형식 지원
  • 서드파티 문서 로더

 

  • CSVLoader
  • PyPDFLoader
  • UnstructuredHTMLLoader

문서가 로드되는 모습.

LangChain을 활용한 RAG(검색 증강 생성)

CSV 파일 로드

from langchain_community.document_loaders.csv_loader import CSVLoader

csv_loader = CSVLoader(file_path='path/to/your/file.csv')

documents = csv_loader.load() print(documents)
[Document(page_content='Team: Nationals\n"Payroll (millions)": 81.34\n"Wins": 98',
          metadata={'source': 'path/to/your/file.csv', 'row': 0}),
 Document(page_content='Team: Reds\n"Payroll (millions)": 82.20\n"Wins": 97',
          metadata={'source': 'path/to/your/file.csv', 'row': 1}),
 Document(page_content='Team: Yankees\n"Payroll (millions)": 197.96\n"Wins": 95',
          metadata={'source': 'path/to/your/file.csv', 'row': 2})]
LangChain을 활용한 RAG(검색 증강 생성)

PDF 파일 로드

from langchain_community.document_loaders import PyPDFLoader

pdf_loader = PyPDFLoader('rag_paper.pdf')
documents = pdf_loader.load()
print(documents)
[Document(page_content='Retrieval-Augmented Generation for\nKnowledge-Intensive...',
          metadata={'source': 'Rag Paper.pdf', 'page': 0})]
LangChain을 활용한 RAG(검색 증강 생성)

HTML 파일 로드

from langchain_community.document_loaders import UnstructuredHTMLLoader

html_loader = UnstructuredHTMLLoader(file_path='path/to/your/file.html')

documents = html_loader.load() first_document = documents[0]
print("Content:", first_document.page_content) print("Metadata:", first_document.metadata)
Content: Welcome to Our Website
Metadata: {'source': 'path/to/your/file.html', 'section': 0}
LangChain을 활용한 RAG(검색 증강 생성)

연습해 봅시다!

LangChain을 활용한 RAG(검색 증강 생성)

Preparing Video For Download...