개요
bRAG-langchain은 다양한 애플리케이션을 위한 검색 증강 생성(RAG, Retrieval-Augmented Generation)에 대한 종합적인 학습 자료를 제공하는 GitHub 리포지토리입니다. 입문 수준부터 멀티 쿼리 및 커스텀 RAG 빌드를 포함한 고급 구현까지, 실습 중심의 상세한 가이드를 제공합니다.
주요 특징
단계별 학습 노트북
리포지토리는 5개의 Jupyter 노트북으로 구성되어 있으며, 각 노트북은 RAG 시스템의 특정 측면을 다룹니다:
1. RAG 설정 개요 ([1]_rag_setup_overview.ipynb)
RAG 아키텍처와 기본 설정에 대한 소개를 제공하는 입문 노트북입니다.
주요 내용:
- RAG 아키텍처의 기초 이해
- 기본 설정 및 환경 구성
- 첫 RAG 시스템 구축
2. 멀티 쿼리를 활용한 RAG ([2]_rag_with_multi_query.ipynb)
기본 개념을 바탕으로 RAG 파이프라인에 멀티 쿼리 기법을 도입합니다.
주요 내용:
- 멀티 쿼리 전략 이해
- 응답 관련성 향상 기법
- 쿼리 확장 및 변형
3. RAG 라우팅 및 쿼리 구성 ([3]_rag_routing_and_query_construction.ipynb)
RAG 파이프라인의 커스터마이징을 더 깊이 다룹니다.
주요 내용:
- 쿼리 라우팅 메커니즘
- 동적 쿼리 구성
- 조건부 검색 전략
4. RAG 인덱싱 및 고급 검색 ([4]_rag_indexing_and_advanced_retrieval.ipynb)
이전 커스터마이징에서 이어져, 고급 인덱싱과 검색 기법을 탐구합니다.
주요 내용:
- 효율적인 인덱싱 전략
- 고급 검색 알고리즘
- 벡터 데이터베이스 활용
5. RAG 검색 및 리랭킹 ([5]_rag_retrieval_and_reranking.ipynb)
RAG 시스템 구성 요소를 종합하며, 확장성과 최적화에 중점을 둡니다.
주요 내용:
- 검색 결과 최적화
- 리랭킹 알고리즘 적용
- 시스템 확장성 고려사항
빠른 시작용 보일러플레이트
full_basic_rag.ipynb: 완전히 커스터마이징 가능한 RAG 챗봇의 보일러플레이트 스타터 코드 제공- 빠르게 실험을 시작하고 싶은 사용자를 위한 즉시 사용 가능한 구현
RAG 아키텍처
리포지토리는 다음과 같은 RAG 아키텍처 다이어그램을 제공합니다:
사용자 쿼리
↓
쿼리 처리 및 변환
↓
벡터 데이터베이스 검색
↓
문서 검색
↓
리랭킹 (선택적)
↓
컨텍스트 구성
↓
LLM 응답 생성
↓
최종 답변
기술 요구사항
Python 버전
- 권장: Python 3.11.11
- 호환성과 안정성을 위해 이 특정 버전 사용 권장
주요 의존성
- LangChain
- 벡터 데이터베이스 라이브러리
- 기타 RAG 관련 패키지 (
requirements.txt참조)
시작하기
1. 저장소 클론
git clone https://github.com/bragai/bRAG-langchain.git
cd bRAG-langchain2. 가상 환경 생성
python3.11 -m venv venv
source venv/bin/activate # macOS/Linux
# 또는
venv\Scripts\activate # Windows3. 의존성 설치
pip install -r requirements.txt4. 환경 변수 설정
.env.example 파일을 .env로 복사하고 필요한 API 키를 입력합니다:
cp .env.example .env필요한 환경 변수:
- OpenAI API 키 또는 다른 LLM 제공자 키
- 벡터 데이터베이스 연결 정보
- 기타 서비스별 인증 정보
5. 노트북 실행
Jupyter 노트북을 시작하고 순차적으로 학습합니다:
jupyter notebook권장 학습 순서:
[1]_rag_setup_overview.ipynb- RAG 기초[2]_rag_with_multi_query.ipynb- 멀티 쿼리 기법[3]_rag_routing_and_query_construction.ipynb- 라우팅과 구성[4]_rag_indexing_and_advanced_retrieval.ipynb- 고급 검색[5]_rag_retrieval_and_reranking.ipynb- 최적화와 확장
활용 사례
이 리포지토리의 내용을 다음과 같은 목적으로 활용할 수 있습니다:
1. RAG 기초 학습
[1]_rag_setup_overview.ipynb를 통해 RAG의 기본 개념과 구현 방법을 이해합니다.
2. 멀티 쿼리 구현
[2]_rag_with_multi_query.ipynb로 응답 관련성을 향상시키는 멀티 쿼리 기법을 학습합니다.
3. 커스텀 RAG 시스템 구축
제공된 보일러플레이트를 기반으로 자신만의 RAG 애플리케이션을 개발합니다.
4. 프로덕션 수준 최적화
고급 노트북의 리랭킹 및 확장성 기법을 통해 실무에 적용 가능한 시스템을 구축합니다.
프로젝트 구조
bRAG-langchain/
├── notebooks/ # 학습 노트북 디렉토리
│ ├── [1]_rag_setup_overview.ipynb
│ ├── [2]_rag_with_multi_query.ipynb
│ ├── [3]_rag_routing_and_query_construction.ipynb
│ ├── [4]_rag_indexing_and_advanced_retrieval.ipynb
│ └── [5]_rag_retrieval_and_reranking.ipynb
├── docs/ # 문서
├── test/ # 테스트 파일
├── assets/ # 이미지 및 자료
├── full_basic_rag.ipynb # 빠른 시작 보일러플레이트
├── requirements.txt # Python 의존성
├── .env.example # 환경 변수 예제
└── README.md # 프로젝트 설명
학습 경로
초급 (1-2일)
- RAG 개념 이해
- 기본 RAG 시스템 구축
- 간단한 질의응답 구현
중급 (3-5일)
- 멀티 쿼리 기법 적용
- 라우팅 및 쿼리 구성
- 벡터 데이터베이스 최적화
고급 (5-7일)
- 고급 인덱싱 전략
- 리랭킹 알고리즘 구현
- 프로덕션 배포 준비
관련 프로젝트
BragAI
저자가 개발 중인 BragAI(https://bragai.dev)는 아이디어를 몇 분 만에 풀스택 앱으로 전환하는 플랫폼입니다.
- 현재 상태: Private Beta
- 공개 베타: 곧 출시 예정
- 대기자 명단: https://bragai.dev/
기여 및 지원
문의
- 이메일: [email protected]
- 이슈: GitHub Issues를 통해 질문이나 버그 리포트 제출
후원
오픈소스 기여를 지원하고 싶다면 커피 한 잔으로 후원할 수 있습니다:
- GitHub Sponsors: 후원하기
크레딧
이 노트북과 시각적 다이어그램은 Lance Martin의 LangChain Tutorial에서 영감을 받았습니다.
관련 학습 자료
이 리포지토리와 함께 학습하면 좋은 자료들: