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
로 텍스트 분할
- OpenAIEmbeddings
및 Chroma
로 벡터 저장소 구축
- 코드 예시:
```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 공식 문서 참조하여 직접 테스트 및 확장 추천