hasan-py/RAG-PDF-Streamlit-Python
요약
Ollama와 Deepseek R1을 활용하여 PDF 문서와 질의응답을 할 수 있는 RAG 기반 Streamlit 애플리케이션 구현 가이드입니다. LangChain을 통해 텍ıkl 추출, 인덱싱, 벡터 검색 과정을 자동화하여 로컬 환경에서 효율적인 문서 분석을 지원합니다.
핵심 포인트
- Ollama와 Deepseek R1을 활용한 로컬 RAG 시스템 구축
- LangChain 기반의 텍스트 추출 및 벡터 스토어 인덱싱 구현
- Streamlit을 이용한 직관적인 PDF 업로드 및 채팅 UI 제공
- LLM 변수 수정을 통해 다양한 Ollama 모델로 손쉽게 교체 가능
이 프로젝트를 사용하면 PDF를 업로드하고 Ollama를 통해 Deepseek R1으로 해당 내용에 대해 질문할 수 있습니다. 이 애플리케이션은 PDF를 처리하고, 텍스트를 추출하며, 이를 벡터 스토어 (Vector Store)에 인덱싱하고, 관련 문맥을 검색하여 간결한 답변을 생성합니다.
-
📂
PDF 업로드: 처리할 PDF 파일을 선택합니다. - 🔍
텍스트 추출 및 인덱싱 (Text Extraction & Indexing): 콘텐츠를 추출하고 효율적인 검색을 위해 인덱싱합니다. - 💡
질의응답 (Question-Answering): PDF 내용과 관련된 질문을 하고 관련 답변을 얻습니다. - 🚀
Ollama 및 LangChain 기반: 임베딩 (Embeddings) 및 응답을 위해Deepseek R1을 사용합니다. -
Python 3.8 이상
-
Ollama 설치됨
-
pip를 통해 종속성 (Dependencies) 설치됨
이 저장소를 클론 (Clone) 하세요:
git clone https://github.com/hasan-py/chat-with-pdf-RAG.git cd chat-with-pdf-RAG
Python 환경을 활성화하고 종속성을 설치하세요.
종속성 설치:
pip install -r requirements.txt
Streamlit 앱 실행:
streamlit run pdf_rag.py
PDF 업로드: UI를 사용하여 문서를 업로드합니다. 처리 (Processing): 앱이 텍스트를 추출하고 인덱싱을 위해 청크 (Chunks) 단위로 나눕니다. 질문하기: 채팅 박스에 질문을 입력합니다. 답변 받기: 시스템이 관련 텍스트를 검색하여 간결하게 응답합니다.
추론 (Inference)에 사용되는 모델을 변경하려면 pdf_rag.py 파일의 LLM 변수를 수정하면 됩니다. LLM 변수는 기본적으로 deepseek-r1:8b 모델로 초기화되어 있습니다. 이를 Ollama에서 지원하는 다른 모델로 교체할 수 있습니다.
chat-with-pdf/
│── pdfs/ # 업로드된 PDF를 위한 디렉토리
│── pdf_rag.py # 메인 Streamlit 앱
...
Python
Streamlit (UI용)
LangChain (텍스트 처리용)
Ollama (LLM 추론용)
PDFPlumber (PDF 추출용)
프로젝트 개선을 위해 이슈 (Issues) 및 PR (Pull Requests)을 자유롭게 제출해 주세요! 그리고 다음 단계를 따라주세요:
- PR을 제출하기 전에, 해당 테스트 케이스를 업데이트해 주세요.
- 모든 기능이 제대로 작동함을 보여주는 화면 녹화 영상을 PR 설명에 첨부해 주세요.
이 기능을 가능하게 해준 LangChain, Ollama, Streamlit의 제작자들과 **커뮤니티 (community)**에 특별한 감사를 전합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기