RAG 및 LangChain 기초

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

인공지능

대상자

  • *개발자 및 데이터 과학자** (LLM 기반 AI 애플리케이션 개발자, RAG 시스템 구현에 관심 있는 사람들)
  • 난이도: 중급~고급 (LLM과 RAG 개념 이해, Python 및 LangChain 프레임워크 사용 필요)

핵심 요약

  • RAG(Retrieval-Augmented Generation): LLM의 사전 학습 데이터 제한을 극복하기 위해 외부 정보 검색을 결합한 아키텍처 패턴
  • LangChain: RAG 시스템 구현을 위한 Python 프레임워크로, PyPDFLoader, Chroma, RetrievalQA핵심 API 제공
  • RAG 파이프라인: 문서 로딩 → 임베딩 → 벡터 검색 → 문맥 조합 → LLM 생성 단계로 구성

섹션별 세부 요약

1. RAG 개요

  • LLM의 한계: 사전 학습 데이터에 의존해 최신/특화된 정보 접근 불가
  • RAG의 원리: 외부 문서 검색 → 검색된 문맥을 LLM에 결합해 정확한 답변 생성
  • RAG의 장점:

- 도메인 특화 정보 접근 가능

- hallucination 감소

- 재학습 없이 지식 업데이트

2. LangChain 프레임워크

  • 핵심 기능:

- DirectoryLoader로 문서 로딩

- RecursiveCharacterTextSplitter로 텍스트 분할

- OpenAIEmbeddingsChroma로 벡터 저장소 구축

  • 코드 예시:

```python

from langchain.document_loaders import DirectoryLoader

loader = DirectoryLoader('./docs', glob="**/*.md")

documents = loader.load()

```

3. RAG 시스템 구현 단계

  • 문서 로딩 및 분할:

- RecursiveCharacterTextSplitter로 1000자/200자 중복 분할

  • 임베딩 및 저장:

- OpenAIEmbeddings로 텍스트를 벡터화 후 Chroma에 저장

  • 질의-응답 처리:

- RetrievalQA로 질의 처리, gpt-3.5-turbo 모델 사용

```python

llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)

qa_chain = RetrievalQA.from_chain_type(llm=llm, retriever=vectorstore.as_retriever())

```

4. RAG 최적화 전략

  • 문맥 보존: 문장 중간 분할 방지, 논리 단위 유지
  • 메타데이터 추가: 출처, 타임스탬프, 카테고리 정보 포함
  • 검색 전략: 의미 기반 검색 + 키워드 검색 병합, Reranking 사용

5. RAG 활용 사례

  • 고객 지원: 지식 기반 AI 챗봇
  • 법률/의료: 문서/가이드라인 검색
  • 교육: 맞춤형 학습 콘텐츠 제공

결론

  • 핵심 팁:

- Optimal Chunk Size: 500-1000자, 100-200자 중복

- LangChain의 캐시 기능: InMemoryCache로 비동기 처리 최적화

- 멀티 쿼리 검색: MultiQueryRetriever로 검색 품질 향상

  • 실무 적용: 단순한 RAG 시스템부터 시작해, SelfQueryRetriever, Graph-based Knowledge 등 고급 기법 도입
  • 문서 출처: LangChain 공식 문서 참조하여 직접 테스트 및 확장 추천