안녕하세요, 개발자 커뮤니티 여러분! ?
오늘은 제 프로젝트인 EzioDevIo RAG(Retrieval-Augmented Generation)를 소개하게 되어 기쁩니다. 이 시스템을 통해 사용자는 PDF 문서를 업로드하고, 내용에 따라 질문하고, OpenAI의 GPT-3.5 Turbo 모델에서 생성된 실시간 답변을 받을 수 있습니다. 이는 대용량 문서를 탐색하거나 관련 정보를 빠르게 추출하는 데 특히 유용합니다. ??
내 GitHub: EzioDevIo RAG 프로젝트에서 전체 코드를 찾을 수 있습니다. 프로젝트를 자세히 살펴보고 각 단계를 자세히 살펴보겠습니다!
? EzioDevIo RAG 프로젝트 GitHub 저장소에서 전체 코드베이스 및 설정 지침을 살펴보세요!
사업개요
학습 내용
*프로젝트 디렉토리의 최종 구조는 다음과 같습니다. *
RAG-project/ ├── .env # Environment variables (API key) ├── app.py # Streamlit app for the RAG system ├── document_loader.py # Code for loading and processing PDF documents ├── retriever.py # Code for indexing and retrieving documents ├── main.py # Main script for RAG pipeline ├── requirements.txt # List of required libraries ├── Dockerfile # Dockerfile for containerizing the app ├── .gitignore # Ignore sensitive and unnecessary files ├── data/ │ └── uploaded_pdfs/ # Folder to store uploaded PDFs └── images/ └── openai_api_setup.png # Example image for OpenAI API setup instructions
1단계: 프로젝트 설정
전제조건
다음 사항을 확인하세요.
2단계: 저장소 복제 및 가상 환경 설정
2.1. 저장소 복제
GitHub에서 프로젝트 저장소를 복제하고 프로젝트 디렉토리로 이동하여 시작하세요.
git clone https://github.com/EzioDEVio/RAG-project.git cd RAG-project
2.2. 가상 환경 설정
프로젝트 종속성을 격리하려면 가상 환경을 만들고 활성화하세요. 이는 다른 프로젝트 패키지와의 충돌을 방지하는 데 도움이 됩니다.
python -m venv venv source venv/bin/activate # On Windows, use `venv\Scripts\activate`
2.3. 종속성 설치
요구 사항.txt에 나열된 필수 Python 라이브러리를 설치합니다. 여기에는 언어 모델용 OpenAI, UI용 Streamlit, PDF 처리용 PyMuPDF, 효율적인 유사성 검색용 FAISS가 포함됩니다.
pip install -r requirements.txt
2.4. OpenAI API 키 구성
프로젝트 루트 디렉터리에 .env 파일을 만듭니다. 이 파일은 OpenAI API 키를 안전하게 저장합니다. 파일에 다음 줄을 추가하고 your_openai_api_key_here를 실제 API 키로 바꿉니다.
RAG-project/ ├── .env # Environment variables (API key) ├── app.py # Streamlit app for the RAG system ├── document_loader.py # Code for loading and processing PDF documents ├── retriever.py # Code for indexing and retrieving documents ├── main.py # Main script for RAG pipeline ├── requirements.txt # List of required libraries ├── Dockerfile # Dockerfile for containerizing the app ├── .gitignore # Ignore sensitive and unnecessary files ├── data/ │ └── uploaded_pdfs/ # Folder to store uploaded PDFs └── images/ └── openai_api_setup.png # Example image for OpenAI API setup instructions
? 팁: 프로젝트를 공개 저장소에 푸시하는 경우 API 키가 노출되지 않도록 .gitignore 파일에 .env가 추가되었는지 확인하세요.
3단계: 프로젝트 구조 이해
다음은 코드 탐색에 도움이 되는 디렉토리 구조에 대한 간략한 개요입니다.
다음은 코드 탐색에 도움이 되는 디렉토리 구조에 대한 간략한 개요입니다.
git clone https://github.com/EzioDEVio/RAG-project.git cd RAG-project
각 파일에는 특정 역할이 있습니다.
4단계: 핵심 코드 구축
이제 프로젝트의 주요 구성요소를 살펴보겠습니다.
4.1. 문서 로딩(document_loader.py)
document_loader.py 파일은 PDF에서 텍스트를 추출하는 역할을 합니다. 여기서는 PyMuPDF 라이브러리를 사용하여 PDF의 각 페이지를 처리하고 텍스트를 저장합니다.
python -m venv venv source venv/bin/activate # On Windows, use `venv\Scripts\activate`
설명: 이 기능은 지정된 폴더에 있는 모든 PDF 파일을 읽고 각 페이지에서 텍스트를 추출한 다음 해당 텍스트를 사전 목록에 추가합니다. 각 사전은 텍스트와 파일 이름으로 문서를 나타냅니다.
4.2. 문서 색인화 및 검색(retriever.py)
FAISS(Facebook AI 유사성 검색)는 유사성 검색을 수행하는 데 도움이 됩니다. 이를 사용하여 사용자가 질문할 때 관련 섹션을 검색할 수 있는 문서 임베딩 색인을 생성합니다.
pip install -r requirements.txt
설명:
create_index: OpenAIEmbeddings를 사용하여 문서 텍스트를 임베딩으로 변환하고 FAISS로 인덱스를 생성합니다.
검색_문서: 사용자 쿼리를 기반으로 관련 문서 섹션을 검색합니다.
4.3. 응답 생성(main.py)
이 모듈은 OpenAI의 언어 모델을 사용하여 사용자 쿼리를 처리하고 관련 문서를 검색하며 답변을 생성합니다.
OPENAI_API_KEY=your_openai_api_key_here
설명:
generate_response: 검색된 문서와 사용자 쿼리의 컨텍스트가 포함된 프롬프트를 생성한 다음 이를 OpenAI의 API로 보냅니다. 그러면 응답이 답변으로 반환됩니다.
5단계: 간소화된 인터페이스 만들기(app.py)
Streamlit은 대화형 프런트 엔드를 제공하므로 사용자가 쉽게 파일을 업로드하고 질문할 수 있습니다.
RAG-project/ ├── .env # Environment variables (API key) ├── app.py # Streamlit app for the RAG system ├── document_loader.py # Code for loading and processing PDF documents ├── retriever.py # Code for indexing and retrieving documents ├── main.py # Main script for RAG pipeline ├── requirements.txt # List of required libraries ├── Dockerfile # Dockerfile for containerizing the app ├── .gitignore # Ignore sensitive and unnecessary files ├── data/ │ └── uploaded_pdfs/ # Folder to store uploaded PDFs └── images/ └── openai_api_setup.png # Example image for OpenAI API setup instructions
설명:
6단계: 애플리케이션 Docker화
Docker를 사용하면 앱을 컨테이너에 패키징하여 쉽게 배포할 수 있습니다.
도커파일
RAG-project/ ├── .env # Environment variables (API key) ├── app.py # Streamlit app for the RAG system ├── document_loader.py # Code for loading and processing PDF documents ├── retriever.py # Code for indexing and retrieving documents ├── main.py # Main script for RAG pipeline ├── requirements.txt # List of required libraries ├── Dockerfile # Dockerfile for containerizing the app ├── .gitignore # Ignore sensitive and unnecessary files ├── data/ │ └── uploaded_pdfs/ # Folder to store uploaded PDFs └── images/ └── openai_api_setup.png # Example image for OpenAI API setup instructions
설명:
최종 이미지를 간결하게 유지하기 위해 다단계 빌드를 사용합니다.
보안을 위해 애플리케이션은 루트가 아닌 사용자로 실행됩니다.
Docker 컨테이너 실행
git clone https://github.com/EzioDEVio/RAG-project.git cd RAG-project
python -m venv venv source venv/bin/activate # On Windows, use `venv\Scripts\activate`
7단계: GitHub Actions로 CI/CD 설정
프로덕션 준비를 위해 CI/CD 파이프라인을 추가하여 Docker 이미지를 빌드, 테스트 및 스캔합니다. 이 설정을 위한 저장소에서 .github/workflows 파일을 찾을 수 있습니다.
최종 생각
이 프로젝트는 OpenAI의 언어 모델 기능과 문서 검색을 결합하여 기능적이고 대화형 도구를 만듭니다. 이 프로젝트가 마음에 드셨다면 GitHub 저장소에 별표를 표시하고 개발자 커뮤니티에서 저를 팔로우해 주세요. 더 놀라운 프로젝트를 함께 만들어 봅시다! ?
? GitHub 저장소를 보시겠습니까? EzioDevIo RAG 프로젝트 GitHub 저장소!
위 내용은 OpenAI와 Streamlit을 활용한 문서 검색 및 Q&A 시스템 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!