## RAG 시스템 구축 with Streamlit
 
### 개요
본 영상에서는 스트림릿을 사용하여 RAG(Retrieval Augmented Generation) 시스템을 구축하는 과정을 설명합니다. RAG 시스템은 정보 검색과 대규모 언어 모델을 결합한 시스템입니다.
 
### RAG 시스템 주요 구성 요소
- 문서 로딩
- 텍스트를 청크로 분할
- 청크 텍스트 임베딩
- 벡터 저장소
- 유사성 검색
- 프롬프트 생성 및 대규모 언어 모델에 전달
- 응답 획득
 
### 문서 로딩
- 파이썬 코드를 사용하여 직접 텍스트 추출
- Langchain의 Document Loaders 사용 (선택)
 
### 텍스트 분할
- Character Text Splitter
- Recursive Character Text Splitter (선택), 토큰 수를 기준으로 분할
 
### 텍스트 임베딩
- 문서 언어에 따라 임베딩 모델 선택 중요
- Hugging Face에서 한국어 특화 임베딩 모델 사용
 
### 벡터 저장소
- Chroma와 FAISS 비교
- FAISS의 속도 장점으로 임시 저장소로 선택
 
### 유사성 검색
- Langchain의 Retriever 모듈을 사용하여 사용자 질문과 유사한 텍스트 청크 식별
 
### 대규모 언어 모델 (LLM)
- GPT-4 사용, LLM 선택이 결과 품질에 큰 영향
 
### 프레임워크 구현
- Streamlit을 사용하여 RAG 시스템 개발 및 배포 (간편한 사용 및 공유)
 
### Streamlit 기본 사항
- Streamlit 라이브러리 가져오기
- 웹페이지에 텍스트 작성
- 차트를 사용하여 데이터 시각화
- 슬라이더, 파일 업로더와 같은 대화형 구성 요소 구현
 
### Streamlit 애플리케이션 개요
- 파일 업로드, API 키 입력 및 RAG 시스템과의 채팅 상호 작용을 위한 메인 영역으로 구성된 사이드바
 
### 사이드바 기능
- `st.sidebar`를 사용하여 사이드바 요소 생성
- `st.file_uploader`를 사용하여 파일 업로드
- `st.text_input`를 사용하여 API 키 입력
- `st.button`을 사용하여 처리 버튼 구현
 
### RAG 프로세스 트리거
- 프로세스 버튼을 누르면 다음 단계 수행
    - 파일 텍스트 변환
    - 텍스트 청크 분할
    - 텍스트 청크 벡터화
    - 질문 응답을 위한 LLM과 함께 체인 생성
 
### 채팅 인터페이스
- 스트림릿 앱 우측에 채팅 창 구현
- 사용자 질의, 시스템 응답 및 관련 아이콘 표시
 
### 메모리 체인
- `ConversationBufferMemory`를 사용하여 이전 질문과 답변을 기억하는 메모리 기능 구현
- 문맥 인식 응답 가능
 
### 파이썬 스크립트
- Streamlit, tiktoken, Langchain, OpenAI, 파일 로더, 텍스트 분할기 및 임베딩 모델을 포함한 라이브러리 세부 설명
 
### 유틸리티 함수
- 토큰 계산
- 문서 로딩
- 텍스트 청크 분할
- 벡터 저장소 생성
- 대화형 메모리를 위한 체인 설정
 
### 배포
- Streamlit 공유를 사용하여 배포 프로세스 설명
- GitHub 리포지토리에 다음 파일 설정 필요
    - Streamlit 파이썬 스크립트
    - 스트림릿 클라우드가 설치할 라이브러리를 상세히 설명하는 requirements.txt 파일
    - 환경 변수 설정 (예: OpenAI API 키)
 
### 데모
- RAG 시스템 시연, 업로드된 문서를 기반으로 질문에 응답하는 능력 강조
- 정보가 검색된 컨텍스트를 제공하는 확장 가능한 섹션 사용
 
### 결론 및 향후 단계
- 기본적인 RAG 시스템 구축 완료
- 다음 시간에는 에이전트 개념 논의 예정