## 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 시스템 구축 완료- 다음 시간에는 에이전트 개념 논의 예정