LLM & Generative AI/RAG in Practice

[LangChain RAG 구축 시리즈 Ep.14] 🔧 프로젝트 구조 설계 및 의존성 설치

ygtoken 2025. 4. 5. 20:24
728x90

이 글에서는 지금까지 살펴본 RAG 구성 요소들을 실제 프로젝트로 통합하기 위한
폴더 구조 설계Python 환경 세팅, 필수 패키지 설치 방법까지
RAG 프로젝트의 기본구조를 구성해봅니다.


🎯 목표

  • 실제 프로젝트 형태의 디렉토리 구조 만들기
  • Python 가상환경 설정
  • 필수 라이브러리 설치 (langchain, openai, chromadb 등)

🗂️ Step 1. 프로젝트 디렉토리 구조 설계

rag-iceberg-project/
│
├── data/                        # metadata.json 보관 디렉토리
│   └── products_metadata.json
│
├── docs/                        # 전처리된 자연어 문서 저장
│   └── products.txt
│
├── src/                         # 핵심 코드 디렉토리
│   ├── load_json.py             # JSON 로더 및 파서
│   ├── embed_documents.py       # 문서 임베딩 및 벡터 저장
│   ├── qa_chain.py              # Retrieval QA 체인 구성
│   └── config.py                # API 키 및 설정 관리
│
├── .env                         # 환경변수 저장 (OpenAI Key 등)
├── requirements.txt             # 의존성 목록
└── main.py                      # 실행 엔트리포인트

💻 Step 2. Python 가상환경 생성

# ✅ 가상환경 생성 (venv 기준)
python3 -m venv venv

# ✅ 가상환경 활성화 (Mac/Linux)
source venv/bin/activate

# ✅ Windows인 경우
venv\Scripts\activate

📦 Step 3. 필수 라이브러리 설치

pip install --upgrade pip

# ✅ 핵심 패키지 설치
pip install langchain openai chromadb python-dotenv

# ✅ 선택적 추천: 로깅 및 포맷팅
pip install rich tiktoken

💡 설치 목록을 requirements.txt에 저장해둡니다:

langchain
openai
chromadb
python-dotenv
rich
tiktoken

🔐 Step 4. 환경변수 (.env) 파일 구성

# ✅ OpenAI API Key 등록
OPENAI_API_KEY=sk-xxxxxxx...

 

그리고 config.py 파일에서 이 값을 불러옵니다:

# src/config.py

from dotenv import load_dotenv  # .env 파일 로드
import os

load_dotenv()  # 환경변수 읽기

OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")  # 키 가져오기

✅ main.py 시작 예시

# main.py

from src.qa_chain import create_qa_chain  # QA 체인 구성 함수
from src.load_json import load_metadata  # Iceberg JSON 로딩 함수

# 질문 예시
query = "상품 테이블의 파티션은 무엇인가요?"

# 체인 실행
qa = create_qa_chain()
result = qa.run(query)

print("📣 응답:", result)

이후 단계에서 각 모듈들을 하나씩 구현해 나가게 됩니다.


📎 요약 및 핵심 정리

  • RAG 실습을 통합 프로젝트로 구성하기 위해 기본 폴더 구조를 먼저 설계합니다.
  • .env로 API 키를 관리하고, src/ 디렉토리에 기능별 모듈을 나눠 구성합니다.
  • 앞으로 모든 실습은 이 구조를 기반으로 확장됩니다.
728x90