LangChain과 Upstage Embedding을 활용하여, 여러 문서(PDF, 크롤링, Python 코드)를 기반으로 대화형 질의응답 시스템을 구축한 프로젝트입니다.
RAG(Retrieval-Augmented Generation) 구조와 LangServe API 구조를 활용해 실시간 질의응답 서비스 형태로 통합했습니다.
- 프로젝트 기간: 2025.04.02 ~ 2025.04.08
- 주제: LangChain 기반 문서 검색 + Q&A 자동화 시스템
이름 | 역할 | GitHub | 담당 기능 |
---|---|---|---|
김태홍 | 팀장 / 역할 | GitHub 링크 | LangChain 통합, FastAPI 백엔드 구성, API 설계 및 구조화 |
김연준 | 역할 | GitHub 링크 | CI/CD 파이프라인 구축, 도커화, 로컬/클라우드 환경 구성 |
박정은 | 역할 | GitHub 링크 | 문서 임베딩 처리, 벡터 DB 구축, LLM 파인튜닝 |
이해울 | 역할 | [GitHub 링크] | 데이터 수집, 전처리, DVC 및 S3 데이터 관리 |
LangChain 기반 문서 QA 시스템의 구축 및 운영을 위한 파이프라인입니다.
- 복잡한 문서에서 원하는 정보를 쉽게 찾을을 수 있는 자동 질의응답 시스템 필요
- 내부 지식베이스 활용 극대화
- 목표 KPI: 응답 정확도 향상, 사용자 피드백 만족도 확보
- .pkl 형태로 정제된 문서 데이터 사용
- 카테고리별로 문서를 불러와 Markdown 또는 Python 코드 등 형식에 맞게 청크 분할
- LangChain의 TextSplitter 활용
- Upstage Embedding 기반으로 FAISS 벡터스토어 생성
- 카테고리별 벡터스토어를 기반으로 LangChain Tool 자동 생성
- DuckDuckGo Tool과 통합하여 최신 정보 검색도 가능
- ChatUpstage 모델 기반 LLM 응답 처리
- LangChain의 Tool Calling Agent 사용
- 사용자 입력과 대화 히스토리를 기반으로 실행기 구성성
- FastAPI + LangServe 조합으로 RAG 응답 API 제공
- /upstage_chain 엔드포인트로 agent 노출
- 로컬 환경 또는 EC2 등 서버에서도 동일하게 구동 가능
본 프로젝트는 웹 서비스 형태로 배포하지 않아도 되며,
로컬 환경 또는 클라우드 인스턴스에서 터미널 기반으로 실행 가능합니다.
# 1. 프로젝트 클론
git clone https://github.com/UpstageAILab6/upstageailab-nlp-langchainpjt-langchain-4.git
cd upstageailab-nlp-langchainpjt-langchain-4
# 2. 가상환경 설정 및 패키지 설치
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
# 3. .env 환경 변수 설정
UPSTAGE_API_KEY=your-upstage-key
LANGSMITH_TRACING=true
LANGSMITH_ENDPOINT="https://api.smith.langchain.com"
LANGSMITH_API_KEY=your-langsmith-key
LANGSMITH_PROJECT="rag-project"
# 4. FastAPI 서버 실행
uvicorn main:app --reload --port 30032
# 5. Streamlit ui 실행
streamlit run rag_st.py
- 소스 관리: GitHub
- 프로젝트 관리: GitHub
- 커뮤니케이션: Slack
- 버전 관리: Git
- LLM 통합: LangChain, Upstage API
- 실험 관리: Langsmith
프로젝트 진행 중 담당 강사님과의 피드백 세션을 통해 얻은 주요 인사이트는 다음과 같습니다.
- LangChain, RAG 학습 부족
→ 전체적으로 LangChain과 RAG 선행이 되어있지 않아서 일단 강의를 보고 개념을 이해하는 시간을 가지기.
- 주제 빨리 정하기
- Native RAG 코드에서 프로젝트 데이터로 바꿔서 결과보기
- 금요일(내일)에는 코드 보면서 멘토링 진행 예정
- 기존 NativeRAG에서 발전 가능성 찾아보기
→ Advanced RAG 기법 알아보기. - GitHub repository 모든 팀원이 Contributor가 되기
- 마지막 발표 출력형태는 streamlit 데모 형태
- 코드 Class로 구현하기
- LLM을 통한 프롬프팅으로 의도 분석하는 프로세스 구현하기
- Embedding, Retriever 방식 수정해보기
- 코드 return 형식도 볼 수 있게 코드 깔끔하게 정리하기
- GitHub test 코드들은 폴더에 넣어서 정리하기
- 프롬프트를 풍부하게 작성(순서대로 답변해줘 등)
- ReAct 프롬프트 구현(agent 만들 때 사용)